我有 2 个名为 bulletedList 的文件.java 和 blist.jsp在我的 maven 项目中作为 Web 应用程序。
我链接到.jsp文件到.java文件。 并有一个按钮,只要我按下该按钮就可以生成数字.java然后文件生成 4 个随机数并将它们转换为字符串。然后是我想将 jsp 文件中的那些生成的值用作项目符号列表但无法访问的阶段。
bulletedList.java(servlet) 的代码是:
public BulletedList() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<title>My BulletedList Servlet!</title>");
String No1 = "" + ((int) (Math.random() * 50));
String No2 = "" + ((int) (Math.random() * 25));
String No3 = "" + ((int) (Math.random() * 75));
String No4 = "" + ((int) (Math.random() * 99));
response.getWriter().write(No1);
response.getWriter().write(No2);
response.getWriter().write(No3);
response.getWriter().write(No4);
response.sendRedirect("bList.jsp");
//out.println("<h1>" + request.getParameter("No1") + "</h1>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
现在我不知道我需要做什么才能在 JSP 文件中使用这些值并在浏览器中显示它们。
我试过这个:
request.getParameter(No1) 在 (LI) 标记之后,但它只是将纯 No1 显示为文本,而不是显示存储在其中的任何由 math.random() 生成的随机值。
不使用重定向
重定向将标头发送回浏览器/客户端。此标头包含要由浏览器重定向的资源 URL。然后浏览器向给定的 url 发起新请求。由于它是新请求,因此旧的请求和响应对象将丢失。
用:
RequestDispatcher rd= request.getRequestDispatcher("bList.jsp");
rd.forward(request, response);
首先将请求转发给 JSP,而不是发送重定向:
request.getRequestDispatcher("bList.jsp").forward(request, response);
您当前的代码将告诉浏览器对 bList.jsp 发出全新的请求,而无需调用您的 servlet。
然后在请求范围内设置值,而不是将它们写入 out:
request.setAttribute("no1", No1);
request.setAttribute("no2", No2);
在你的 JSP(本质上只是请求链中的另一个 servlet)中,你可以访问这些属性并将它们嵌入你的 HTML 标记中。
<li><%= pageContext.getRequest().getAttribute("no1") %></li>
但更好的,也是首选的方法是使用 JSP 表达式语言来访问或输出请求范围属性:
<li>${no1}</li>