当前位置: 首页 > 知识库问答 >
问题:

为Servlet创建一个动态前端JSP页面,并向JSP页面显示Servlet的输出

万俟皓
2023-03-14

假设我有一个JSP页面索引。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页面包含一个表单,该表单向用户请求用户名和密码。因此,在用户输入用户名和密码并单击submit之后,页面将进入后端_servlet,该servlet将处理请求并重定向到同一页面,并且必须在页面的output字段中显示字符串输出。

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的响应字符串。

在不使用PrintWriter的情况下,servlet中的response.getWriter()并重定向回其他一些jsp页面。

共有1个答案

魏松
2023-03-14

对JSP代码进行一些修改,如下所示。使用JSP标准标记库或JSP表达式语言访问请求属性。

  • 第一次加载索引时。jsp响应字符串将为,jsp上不会显示任何内容
  • 现在,在将表单提交到Servlet之后,根据用户身份验证将responseString设置为请求属性,并将请求重定向到索引。jsp返回页面
  • 重定向后,索引中的responseString将不为null。jsp并将显示在页面上

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>

Servlet:

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>
 类似资料:
  • 这里我想使用RequestDispatcher从servlet调用jsp页面,问题是在jsp代码中调用java代码没有问题,问题是html代码不起作用 下面是代码: 重定向servlet。爪哇: showReportt_arb。jsp: 在上面的逻辑中,java代码显示在服务器控制台中,但html代码没有显示。请帮我解决这个问题

  • 谁能告诉我,除了RequestDispatcher之外,是否还有其他方法可以从我的servlet调用jsp页面?因为我试了很多都没有成功。 我的servlet工作正常,从JSP中恢复了所有数据。我所需要的只是在用户正确输入用户名和密码时被重定向到另一个页面。 我要为其重定向的jsp

  • 我正在尝试用JSP和Servlet实现一个简单的登录页面示例。下面是我的servlet代码;

  • 我有一个带有登录表单的jsp页面,我使用的是servlet,如果用户名和密码正确,servlet会将用户重定向到另一个页面,否则它会再次将用户重定向到登录页面 下面是servlet

  • 登录。当点击按钮时,我想从这里重定向到另一个jsp页面,但它只在servlet页面中,而不是从那里重定向到另一个jsp页面,即CustomerLogin。jsp servlet编码

  • bean名称'user'的BindingResult和普通目标对象都不能作为请求属性使用 Apr 05 2019 9:18:13 AM org.apache.catalina.core.StandardWrapperValve调用严重:在路径[/DataVisualization]的上下文中servlet[SpringController]的servlet.service()引发异常[处理JSP