Настройте tomcat на прием пост-запроса - PullRequest
1 голос
/ 25 февраля 2011

Как мне настроить tomcat, чтобы при отправке запроса параметры запроса выводились в файл jsp? Нужен ли сервлет, который пересылает в jsp, или это можно обработать в файле jsp?

Вот мой метод, который отправляет почтовый запрос на сервер Tomcat -

 public void sendContentUsingPost() throws IOException {

        HttpConnection httpConn = null;
          String url = "http://LOCALHOST:8080/services/getdata";
     //   InputStream is = null;
        OutputStream os = null;

        try {
          // Open an HTTP Connection object
          httpConn = (HttpConnection)Connector.open(url);
          // Setup HTTP Request to POST
          httpConn.setRequestMethod(HttpConnection.POST);

          httpConn.setRequestProperty("User-Agent",
            "Profile/MIDP-1.0 Confirguration/CLDC-1.0");
          httpConn.setRequestProperty("Accept_Language","en-US");
          //Content-Type is must to pass parameters in POST Request
          httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");


          // This function retrieves the information of this connection
          getConnectionInformation(httpConn);

                  String params;
          params = "?id=test&data=testdata";
                      System.out.println("Writing "+params);
          //            httpConn.setRequestProperty( "Content-Length", String.valueOf(params.length()));

          os = httpConn.openOutputStream();

          os.write(params.getBytes());

 } finally {
          if(os != null)
            os.close();
      if(httpConn != null)
            httpConn.close();
    }

        }

Спасибо

Ответы [ 2 ]

3 голосов
/ 26 февраля 2011

Прежде всего, ваша строка запроса недопустима.

params = "?id=test&data=testdata";

Это должно было быть

params = "id=test&data=testdata";

Значение ? допустимо только при объединении его с URL-адресом запроса.как строка запроса GET.Вам не следует использовать его, когда вы хотите записать его как тело запроса POST.

Сказал, что, если этот сервис не должен возвращать HTML (например, обычный текст, JSON, XML, CSV и т. Д.), Тогда используйтесервлет.Вот пример, который выдает открытый текст.

String id = request.getParameter("id");
String data = request.getParameter("data");
response.setContentType("text/plain");
response.setContentEncoding("UTF-8");
response.getWriter().write(id + "," + data);

Если предполагается, что этот сервис возвращает HTML, используйте JSP.Измените URL-адрес, чтобы он указывал на JSP.

String url = "http://LOCALHOST:8080/services/getdata.jsp";

А затем добавьте следующее в шаблон JSP для печати параметров запроса.

${param.id}
${param.data}

В любом случае вы должны иметь возможностьчтобы получить результат (тело ответа), прочитав URLConnection#getInputStream().

См. также:


Вне зависимости от конкретной проблемы, вы не принимаете во внимание кодировку символов.Я настоятельно рекомендую это сделать.См. Также ссылку выше для подробных примеров.

1 голос
/ 22 февраля 2012

Сервлет может обрабатывать запросы на получение и публикацию следующим образом:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   //remaning usedefinecode
    } 

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

Если у вас есть установка tomcat с нуля, не забудьте добавить следующие строки в web.xml, чтобыпусть сервер принимает GET, POST и т. д. запрос:

 <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

    ...

    <init-param>
            <param-name>readonly</param-name>
            <param-value>false</param-value>
    </init-param>

   ...

</servlet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...