servlet1
request.getSession().setAttribute("user", user.getUid());
request.getRequestDispatcher("home.jsp").forward(request,response);
家。Jsp 代码
<h5>Servlet communicated message to JSP: ${user}
Please Select an image to upload</h5>
<form action = "SaveInDBServlet" method = "GET"
enctype = "multipart/form-data">
<input type = "file" name = "filepath" size = "50" accept="image/*" />
<br />
<input type = "submit" value = "Submit" />
</form>
用户值从 servlet1 发送到 JSP 现在我需要将其从 JSP 传输到 servlet 2。 我需要访问 servlet 2 中用户的值 怎么做?
$user是由servlet 1$user发送的属性,在此网页上打印值 现在为了进一步处理,这个变量必须发送到servlet2
。首先,让我从重载的getSession()
方法开始解释。no-arggetSession()
总是返回一个新的session
对象,类似于getSession(true)
,但在getSession(false)
的情况下,它会检查现有会话,如果存在则返回它或返回 null。
一旦你为session设置了一个属性,它就会对用户可用,直到他的会话可用(不为空(或不invalidated
,所以你的数据user
在你的JSP和servlet2中也可用。但是,您用于为会话设置属性的方法容易受到攻击,因为getSession()
还可以返回一个不存在您的属性的新会话。
因此,安全的方法是将会话对象检索到引用,检查它是否为null或设置属性。
HttpSession session = request.getSession(false);
if(session != null) {
// set/get data whatever you need. Avoids NullPointerException
}
第二种方法是在JSP
中使用隐藏属性,像这样
<input type="hidden" name="user" value="<%=request.getAttribute("user") %>"/>
因此,您只需要设置要请求的属性并在jsp
中获取其值,并为隐藏字段设置值。现在在第二个 servlet 中使用getParameter
方法(返回字符串(来获取值。
String user = request.getParameter("user");
在你的 JSP 中这样做
<form action = "SaveInDBServlet" method = "GET"
enctype = "multipart/form-data">
<input type = "file" name = "filepath" size = "50" accept="image/*" />
<br />
<input type = "hidden" name= "user" value="${user}"/>
<input type = "submit" value = "Submit" />
</form>
在你的 servlet GET 方法中
String username = request.getParameter("user");