1

小服务程序1

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

4

2 回答 2

1

首先让我从重载getSession()方法开始解释。no-arggetSession()总是返回一个session类似于 的新对象getSession(true),但在getSession(false)它检查现有会话的情况下,如果存在则返回它,否则返回 null。

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

所以安全的方法是将会话对象检索到一个引用,检查它是否为 null 或不是 get 或 set 属性。

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");
于 2018-08-29T07:43:21.553 回答
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");
于 2018-08-29T08:43:16.013 回答