gpt4 book ai didi

java - 为一个 Servlet 创建一个动态前端 JSP 页面,同时将 Servlet 的输出显示到 JSP 页面

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:18 29 4
gpt4 key购买 nike

假设我有一个 JSP 页面 index.jsp

<form action="https://localhost:8080/App/backend_servlet" method="get">
<ul>
<li>
<label for="name"><b>User id:</b></label>
<input type="text" name="userName" id="userName" size="40" title="Please enter Clients User id" ></input>
</li>
<li>
<label for="name"><b>Password</b></label>
<input type="text" name="pass" id="pass" title="Please enter Password."></input>
</li>
<!-- For the next input tag in the value part it should display the "String output" from the backend_Servlet-->
<li>
<label for="name"><b>Output</b></label>
<input type="text" name="output" id="output" value = "TODAY" title="it should display output as reponse"></input>
</li>
<p>
<button type="submit" class="action">Submit</button>

</p>
</form>

所以上面的 .jsp 页面包含一个表单,它向用户请求用户名密码。因此,在用户输入用户名和密码并单击提交页面后,将进入处理请求的 backend_servlet 并且必须重定向到同一页面并且必须显示 String 输出 在页面的输出字段中。

public class backend_servlet extends HttpServlet implements SingleThreadModel
{
// protected static ILogDevice m_oLogDevice;

protected void doGet( HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String ls_userName = request.getParameter("userName");
String ls_pwd = request.getParameter("pass");
String output = "";

//Some Code which processes the userName and pwd and gives some value for the output string.

output = "Something";

}
}

有什么方法可以重写 index.jsp 的代码,以便它可以显示 servlet 的响应字符串。

不使用 servlet 中的 PrintWriterresponse.getWriter() 并重定向回其他一些 jsp 页面。

最佳答案

在您的 JSP 代码中进行一些修改,如下所示。使用 JSP Standard Tag Library或 JSP 表达式语言来访问请求属性。

要遵循的步骤:

  • 第一次加载 index.jsp 时,responseString 将为 null,JSP 上不会显示任何内容
  • 现在将表单提交到 Servlet 后,将 responseString 设置为基于用户身份验证的请求属性,并将请求重定向到 index.jsp 页面。
  • 重定向后 responseString 将不会在 index.jsp 中为 null 并将显示在页面上。

JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<form action="https://localhost:8080/App/backend_servlet" method="get">
...
</form>

<c:if test="${not empty responseString}">
<c:out value="${responseString}"></c:out>
</c:if>

小服务程序:

request.setAttribute("responseString", output);
RequestDispatcher view = request.getRequestDispatcher("index.jsp");
view.forward(request, response);

您也可以根据范围访问它:

<c:out value="${requestScope.responseString}"></c:out>

编辑

根据您的代码,直接在 title 属性中设置它,如下所示。

<input type="text" name="output" id="output" 
value = "TODAY" title="${responseString}"></input>

关于java - 为一个 Servlet 创建一个动态前端 JSP 页面,同时将 Servlet 的输出显示到 JSP 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388338/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com