【问题标题】:Servlet to JSP data displayServlet 到 JSP 数据显示
【发布时间】:2017-09-11 12:32:57
【问题描述】:

我想将我的信息从 servlet 显示到 JSP 页面。

我尝试了很多可能的事情,但它是空的。

所以我写的程序只有一个参数要显示,它也是空的。

JSP 页面:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
 <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="ci1" method="get">
            User Name : <% String name1 = request.getParameter("name");
            out.print(name1); %>

        </form>
 </body>
</html>

Web.xml:-

<web-app>
   <servlet>
        <servlet-name>ci</servlet-name>
        <servlet-class>control_it</servlet-class>
    </servlet>
     <servlet-mapping>
        <servlet-name>ci</servlet-name>
        <url-pattern>/ci1</url-pattern>
    </servlet-mapping>
</web-app>

小服务程序:-

public class control_it {
    protected void doGet(HttpServletRequest request, 
            HttpServletResponse response) 
                  throws IOException, ServletException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String name = "Display the name";
        request.setAttribute("name", name);
        request.getRequestDispatcher("try_it.jsp").forward(request, response);
   }
}

【问题讨论】:

  • Servlet 必须是HttpSevlet 的子类。请使用正确的命名约定来命名您的班级和其他成员。
  • 创建 RequestDispatcher rd=request.getRequestDispatcher("ur html");

标签: java jsp servlets jakarta-ee


【解决方案1】:

在您的 Servlet 代码中,您设置了一个 attribute,但在您的 jsp 页面中,您正试图检索一个 parameter。 参数从客户端发送到服务器,但属性完全是服务器端的东西。 尝试改变 User Name : &lt;% String name1 = request.getParameter("name");out.print(name1); %&gt; 有了这个: User Name : &lt;%=request.getAttribute("name")%&gt;

更新: servlet doGet 方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    String name = "essy";
    request.setAttribute("name", name);
    request.getRequestDispatcher("index.jsp").forward(request, response);
}

web.xml:

<servlet>
    <servlet-name>testservlet</servlet-name>
    <servlet-class>TestServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>testservlet</servlet-name>
    <url-pattern>/testservlet</url-pattern>
</servlet-mapping>  

jsp页面:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<body>
<h1>test</h1>
<h2><%=request.getAttribute("name")%></h2>
</body>
</html>

这个代码和配置就像一个魅力。 试试看。 希望对你有帮助

【讨论】:

  • 没有相同的答案:NULL
【解决方案2】:

你的逻辑是倒退的。您必须首先使用 servlet 将值传递给您的 JSP。查看您的代码,我的印象是您似乎认为它可以反过来工作。如果不从您的 servlet 执行 GET 方法,您将无法访问您的“名称”属性。

此外,“scriptlet”(这些东西:)自 2010 年以来一直不鼓励使用。

试试这个代码:

您的 servlet (control_it):

public class control_it extends HttpServlet{
private static final long serialVersionUID = 1L;

public control_it () {
    super();
}

    protected void doGet(HttpServletRequest request, 
            HttpServletResponse response) 
                  throws IOException, ServletException {

        String name = "Display the name";
        request.setAttribute("name",name);

         RequestDispatcher rd=request.getRequestDispatcher("try_it.jsp");   
         rd.forward(request,response);      
   }
}

您的 JSP (try_it):

<!DOCTYPE html>
 <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="ci1" method="get">
            User Name : ${name}
<input type="submit" value="GetFromServlet"/>
        </form>
 </body>
</html>

现在您可以通过 2 种方式获得价值。

  • 通过单击 JSP 上表单中的“GetFromServlet”按钮。

  • 或者,在浏览器搜索中输入 URL /ci1。 (与您的
    当然首先是本地域的东西)[注意:这仅适用于 doGet]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    相关资源
    最近更新 更多