我想将我的信息从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);
}
}
答案 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 ]