2010-09-02 15 views
2

У меня есть URL-адрес, который вызовет метод my method в Java. Это выглядит следующим образом:Извлечение значения из URL-адреса запроса

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

Как я могу получить значение 24 и использовать его в моем называемом методе?

+1

какие рамки? Использование сервлета? JSP? Или объект URL. Какой метод и как он называется. – Bozho

+0

@Bozho. Я использую Wicket. – jimmy

+0

показать код. – Bozho

ответ

6

Я предполагаю, что вы создаете номер - «24» - в вашем Java-коде, поскольку вы говорите, что используете 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

Если вы используете сервлеты, вы можете использовать

ServletRequest.getParameter(...)

Если вы используете JSP, вы можете изменить значение request имплицитного

request.getParameter(...)

+0

извините, чувак. Я забыл сообщить вам до этого свою калитку. Но спасибо за помощь. – jimmy

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

True для разработки общих сервлетов, false для калитки –

+0

Вы правы, но в то время, когда я ответил, он не уточнил, что он использовал фреймворк. –

+0

Я знаю, и я оставил бы ваш ответ на месте, потому что это правильный ответ для многих сценариев (только не этот) –

7

OK, способ доступа к параметру запроса в калитке заключается в следующем:

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

Но, как правило, вы не должны делать это, потому что вы передаете параметры при помощи BookmarkablePageLinks с PageParameters объектов и читать эти объекты из page constructors , Прочтите эту страницу для некоторого материала по адресу Bookmarkable Links in Wicket.

+0

поблагодарить человека, U - это потрясающе. И спасибо за ссылку. Эта калитка ссылка очень полезна. еще раз спасибо. – jimmy

+4

Чтение «Wicket in Action» еще более полезно: http://www.manning.com/dashorst/ –

+0

В приведенном выше скрипте я получаю nullpointerException на 1-й строке RequestCycle.get(). GetRequest(); это мой код. final Запрос запроса = RequestCycle.get(). GetRequest(); final String value = request.getParameter ("value"); logger.info ("значение из URL:" + значение); и мой URL-адрес: http: // localhost: 8080/method? Value = "test" – jimmy

0

Один из:

  1. в bookmarkable страницы, создать конструктор с одним аргументом, PageParameters и получить значение оттуда: p.getString ("значение") или p.getInt ("значение)
  2. также уровень страницы, но если у вас нет этого конструктора или, например, у компонента: getPage(), getPageParameters() и получить его оттуда
  3. из любого компонента getRequest(). getParameter ("value") (или Вместо этого используйте Request.get())

Есть еще больше способов получить его, но это самые простые.