在Servlet中使用Jsp变量

时间:2018-08-29 06:56:39

标签: jsp servlets

servlet1

request.getSession().setAttribute("user", user.getUid());
request.getRequestDispatcher("home.jsp").forward(request,response);

home.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

2 个答案:

答案 0 :(得分:1)

首先让我开始解释重载的 $fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M'; $response = $driveService->files->get($fileId, array( 'alt' => 'media')); $content = $response->getBody()->getContents(); 方法。无参数getSession()总是返回与getSession()类似的新session对象,但是在getSession(true)的情况下,它将检查现有会话,如果存在则返回它否则返回null。

一旦您为会话设置了属性,用户就可以使用该属性,直到他的会话可用(不为null)或getSession(false)不可用为止,因此您的数据invalidated将在您的JSP中可用和servlet2也。但是,您用来设置会话属性的方法很容易受到攻击,因为user还会返回一个新会话,其中您的属性将不存在。

因此,安全的方法是将会话对象检索到引用,检查它是否为null或获取或设置属性。

getSession()

第二种方法是像这样使用HttpSession session = request.getSession(false); if(session != null) { // set/get data whatever you need. Avoids NullPointerException } 中的隐藏属性

JSP

因此,您只需要将属性设置为request并在<input type="hidden" name="user" value="<%=request.getAttribute("user") %>"/> 中获取其值,然后为隐藏字段设置值即可。现在,在第二个servlet中,使用jsp方法(返回String)来获取值。

getParameter

答案 1 :(得分:1)

在您的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");