(我检查了所有其他类似问题,我是新手让我先说)
我有这样非常基本的html:https://ibb.co/KVNbv9z和下面的servlet代码。
它为String q1提供null返回:/
我认为主要问题是我正在尝试使用request.getRequestDispatcher(“htmlquestions.html”)。include(request,response);在servlet内部,但无法返回其结果。我该怎么办 - 我正在为此寻找2天。感谢您的帮助
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.logging.Logger;
public class SecondServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response){
try{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
request.getRequestDispatcher("htmlquestions.html").include(request, response);
String q1 = request.getParameter("Q1");
out.print( " aaaaaaaaaaaaaaaaaaa " + q1 );
out.print("<form action='ThirdServlet'>");
out.print("<input type='submit' value='go'>");
out.print("</form>");
out.close();
}catch(Exception e){System.out.println(e);}
}
}
来自Java EE文档:
https://javaee.github.io/javaee-spec/javadocs/javax/servlet/RequestDispatcher.html
void include(ServletRequest请求,ServletResponse响应)抛出ServletException,IOException
包含响应中的资源(servlet,JSP页面,HTML文件)的内容。从本质上讲,这种方法可以实现程序化服务器端包含。
您只是在响应中包含内容,请求不会更改。提交表单时设置请求参数。这就是request.getParameter
返回null的原因,当servlet收到请求时没有设置值。
要做你想做的事,你应该创建一个JSP表单,或者更好的JSF表单,包括页面呈现的内容。我强烈建议你使用JSF,因为使用servlet和/或JSP创建Web内容有点不赞成,随着内容变得更加复杂,可能会变得非常混乱。