我在jsp
中设置了如下的request.getAttribute <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
request.setAttribute("name", "anita");
%>
<%=request.getAttribute("name") %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="POST" action="QnAAuthServlet">
<input type="hidden" name="orgName" value="SENDFORBOB"></input>
<input type="submit"></input>
</form>
</body>
</html>
我也可以在我的JSP中打印它
我正在尝试在我的servlet中请求.getAttribute,如下所示
public class QnAAuthServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public QnAAuthServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
enter code here
String name = (String) request.getAttribute("name");
System.out.println("name = " + name);
}
}
但是我的servlet中的name总是为null。请有人帮我解决这个问题。
答案 0 :(得分:1)
请求表示... HTTP请求。一旦服务器完成为请求生成响应,该请求就不再存在。当你的servlet被执行时,它会获得一个新的HttpServletRequest对象,当然,JSP在前一个请求中存储的属性会被遗忘很长时间。
如果要将数据从HTML页面(由JSP生成)传递到servlet,则必须将其作为请求参数传递,或者作为表单输入发送。
答案 1 :(得分:1)
这是因为您正在向servlet发送新请求。只要请求完成,请求参数就会生效,并且在提供响应时不可用。
如果你想传递这个名字,你将不得不做这样的事情
<input type="hidden" name="name" value="someValue">
如果您希望参数可用于多个请求,则可以使用HttpSession
。
session.setAttribute("name","prasad");
答案 2 :(得分:0)
如果我理解正确,你的servlet正在收到新的请求。如果需要将名称传递给请求中的servlet,则需要创建名为“name”的输入元素。您无法设置将在呈现当前页面的请求中发布的请求。