【问题标题】:Can servlet's doGet method returns value back to java class? [duplicate]servlet 的 doGet 方法能否将值返回给 java 类? [复制]
【发布时间】:2017-03-31 10:04:58
【问题描述】:

我正在从简单的 java 类调用 servlet。 servlet doGet 方法被正确调用,并且在 doGet 中编写了一些逻辑以获取字符串形式的结果。

我可以将 servlet 的 doGet 方法中的字符串返回给简单的 java 类中的调用函数吗?如果可以的话,请你提供一个例子吗?

感谢任何帮助。提前致谢。

下面是调用servlet的ContactServlet简单java类:-

公共类 ContactServlet {

public static void main(String[] args) throws IOException {

     String param = "username=YOURSTRING";
        String request = "http://localhost:8080/TestServlet/post";
        URL url = new URL(request);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        url.openConnection();          
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setInstanceFollowRedirects(false);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        connection.setRequestProperty("charset", "utf-8");
        connection.setRequestProperty("Content-Length", "" +  Integer.toString(param.getBytes().length));
        connection.setUseCaches (false);

        System.out.println(connection);
        System.out.println(param);

        DataOutputStream out = new DataOutputStream(connection.getOutputStream ());
        out.writeBytes(param);
        out.flush();
        out.close();

        for(int i=1;i<=8;i++){  
            System.out.println(connection.getHeaderFieldKey(i)+" = "+connection.getHeaderField(i));  
            }  

        connection.disconnect();



}

}

下面是 servlets doGet 方法:-

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    String username = request.getParameter( _USERNAME );
    response.setContentType("text/html");
    out.println("");
    out.println("");
    out.println("HelloWorld");
    out.println("");
    out.println("");
    out.println("");
    out.println("Hello " + username + "!");
    out.println("");
    out.println("");
} 

我想要字符串“Hello Username!”,而不是将其写入网页。返回到 ContactServlet 类。我们该怎么做??

【问题讨论】:

  • 也发布您的代码。

标签: java servlets


【解决方案1】:

Servlet 方法应该由 servlet 容器调用,而不是由程序员手动调用), 所以你不应该自己调用 doPost()doGet() 方法,而是需要一个 servlet 容器来为你处理这些方法。

总而言之,您需要将 Servlet 部署在 Tomcat、Jetty 等 Servlet 容器中,当您拨打 HttpURLConnection 电话时,然后 容器将调用委托给各个 Servlet 的 doPost()doGet() 方法。

实际上,Servlet 容器负责实例化 HttpServletRequestHttpServletResponse 对象,然后将请求委托给各自的 servlet 方法。

【讨论】:

  • 请查看我提供的代码。我只是调用 url n 容器为我调用 servlet 方法。我只想将字符串从 servlet 恢复到 java 类。
猜你喜欢
  • 2021-02-02
  • 2015-03-27
  • 2012-11-12
  • 2016-02-22
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多