2010-09-02 96 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()代替)

獲得它的方法更多,但這些最直接。