Servlet到JSP数据显示

时间:2017-09-11 12:32:58

标签: java jsp servlets java-ee

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

我尝试了许多可能的东西,但它是空的。

所以我编写的程序只显示一个参数,它也是null。

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>

Servlet的: -

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);
   }
}

2 个答案:

答案 0 :(得分:0)

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

更新: 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>

此代码和配置就像一个魅力。 试试看。 希望它有所帮助

答案 1 :(得分:0)

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

此外,自2010年以来,不鼓励“scriptlets”(这些东西:&lt; %%&gt;)。

请尝试使用此代码:

您的servlet(control_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>

您的JSP(try_it):

{{1}}

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

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

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