如何在 maven Project 中将字符串值从 (Servlet) java 类传递到文件.jsp



我有 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>

最新更新