2010-09-02 65 views
2

我有一个URL,它将在Java中调用我的方法。它看起来像这样:从请求URL中检索值

http://www.example.com/method?value=24 

我如何可以检索值24,在我所谓的方法使用它呢?

+1

什么框架?使用servlet?一个JSP?或者一个'URL'对象。什么方法以及如何调用。 – Bozho 2010-09-02 08:05:35

+0

@Bozho。我使用Wicket。 – jimmy 2010-09-02 08:10:58

+0

显示一些代码。 – Bozho 2010-09-02 08:11:31

回答

6

我在这里假设你在你的Java代码中创建了数字 - '24' - 因为你说你正在使用Wicket。

因此,seanizer已经说过,在99%的情况,你不需要解析请求的URL来获取值,这样的事情应该是足够了:

public class MyPage extends WebPage { 
    public MyPage() { 
     // your number is generated somehow 
     final int value = 24; 

     this.add(new Link<Integer>("myLink") { 
     @Override 
     public void onClick() { 
      // do something with the value 
      int newValue = value * 2; 
     } 
     } 
    } 
} 

或 - 配车型 - 这样

public class MyPage extends WebPage { 
     public MyPage() { 
      // your number is generated somehow 
      int value = 24; 

      Model<Integer> model = new Model<Integer>(value); 

      this.add(new Link<Integer>("myLink", model) { 
      @Override 
      public void onClick() { 
       // your '24' 
       Integer value = this.getModelObject(); 
       // do something with the value 
       int newValue = value * 2; 
      } 
      } 
     } 
    } 

如果你真的,真的,真的,真的需要从URL参数,我想这是你想要什么:

public class MyPage extends WebPage { 
     public MyPage(PageParameters parameters) { 
      // your number is generated somehow 
      Integer value = parameters.getAsInteger("value"); 
     } 
    } 

根据您配置应用程序的方式,您可能需要相应地实现其他构造函数。

祝你好运。

0

事情是这样的:

public class ExampleServlet extends HttpServlet { 

    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. 
    * @param request servlet request 
    * @param response servlet response 
    */ 
    protected void service(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 

     String s = request.getParameter("value"); 
     int value = 0; 
     try { 
      value = Integer.parseInt(s); 
     } catch(NumberFormatException nfe) { 
      nfe.printStackTrace(); 
     } 
    } 
} 
+1

对于通用servlet开发来说是正确的,对于wicket来说是false – 2010-09-02 08:23:34

+0

你是对的,但是在我回答的时候他并没有说明他使用了框架。 – 2010-09-02 08:28:13

+0

我知道了,我会留下你的回答,因为这是许多场景的有效答案(只是不是这个) – 2010-09-02 08:39:22

7

OK,访问检票请求参数的方式是这样的:

final Request request = RequestCycle.get().getRequest(); 
final String valueAsString = request.getParameter("value"); 
int value = Integer.parseInt(valueAsString); 

但通常你没有做到这一点,因为你使用BookmarkablePageLinksPageParameters对象传递参数,并从page constructors读取这些对象。在Bookmarkable Links in Wicket上阅读本页面的一些资料。

+0

谢谢你,你真棒。并感谢您的链接。这个检票链接非常有用。再次感谢。 – jimmy 2010-09-02 08:59:08

+4

阅读“Wicket in Action”更有用:http://www.manning.com/dashorst/ – 2010-09-02 09:06:01

+0

在上面的脚本中,在第一行获取nullpointerException RequestCycle.get()。getRequest(); 这是我的代码。 final Request request = RequestCycle.get()。getRequest(); final String value = request.getParameter(“value”); logger.info(“value from URL:”+ value); 并且我的URL是http:// localhost:8080/method?value =“test” – jimmy 2010-09-02 09:24:39

0

之一:

    在可收藏页面
  1. ,创建单一参数PageParameters构造,并从那里值:p.getString( “值”)或p.getInt(“值)
  2. 也可以是页面级别,但是如果你没有那个构造函数或者例如在一个组件中:getPage()。getPageParameters()并从那里获取
  3. getRequest()。getParameter(“value”)使用Request.get()代替)

获得它的方法更多,但这些最直接。