如何从Java客户机与servlet通信
我已经在Windows 10上使用Netbeans 12开发了一个servlet。servlet部署在与Netbeans IDE集成的机器上的ApacheTomcat 9.0.39上。在开发servlet时,Netbeans IDE会自动创建一个包含静态html内容的index.html文件,并将该文件放在“src->main->webapp”文件夹下。如何从Java客户机与servlet通信,java,servlets,Java,Servlets,我已经在Windows 10上使用Netbeans 12开发了一个servlet。servlet部署在与Netbeans IDE集成的机器上的ApacheTomcat 9.0.39上。在开发servlet时,Netbeans IDE会自动创建一个包含静态html内容的index.html文件,并将该文件放在“src->main->webapp”文件夹下。 客户机向servlet发送一个字符串,servlet反转该字符串并将其返回给客户机。但是,我的客户机在servlet的响应中只看到index.
客户机向servlet发送一个字符串,servlet反转该字符串并将其返回给客户机。但是,我的客户机在servlet的响应中只看到index.html(如上所述)的静态内容,而不是servlet写入PrintWriter对象(从response.getWriter()获得)的反向字符串对象。
以下是index.html的内容:
<!DOCTYPE html>
<html>
<head>
<title>My first servlet</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Reversing Strings!!!</h1>
<p> This is index.html page</p>
</body>
</html>
客户端从servlet接收的内容:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String inputString = request.getParameter("reverse_string");
StringBuilder temp = new StringBuilder(inputString);
String result = temp.reverse().toString();
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet ReverseString</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet ReverseString at " + request.getContextPath() + "</h1>");
out.println("<p> The input string: "+inputString+"<br>");
out.println("The reversed string: "+result+" </p>");
out.println("</body>");
out.println("</html>");
}
}
@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);
}
<!DOCTYPE html>
<html>
<head>
<title>My first servlet</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Reversing Strings!!!</h1>
<p> This is index.html page</p>
</body>
</html>
我的第一个servlet
反转字符串!!!
这是index.html页面
我的代码缺少什么?
谢谢您的webapp上下文路径是
/reversestring
。字符串反转servlet在该上下文中的路径/reversestring
处注册。要向servlet发出请求,URL应为:
http://localhost:8080/reversestring/reversestring
您的webapp上下文路径为“/reversestring”。字符串反转servlet在该上下文中的路径“/reversestring”处注册。要向servlet发出请求,url应该是
http://localhost:8080/reversestring/reversestring
感谢您的评论。事实上,这就是问题所在。如果你不介意的话,请回答我好让我帮你查一下。
public static void writeToURL() {
try {
// need to study and understand servlet
// then write to a servelt through a URL object.
String stringToReverse = URLEncoder.encode("HelloWorld", "UTF-8");
URL url = new URL("http://localhost:8080/reversestring/");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream());
out.write("reverse_string=" + stringToReverse);
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
String decodedString;
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
}
in.close();
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
} catch (MalformedURLException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
<!DOCTYPE html>
<html>
<head>
<title>My first servlet</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Reversing Strings!!!</h1>
<p> This is index.html page</p>
</body>
</html>
http://localhost:8080/reversestring/reversestring