Использование переменной JSP в сервлете - PullRequest
0 голосов
/ 29 августа 2018

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>

пользовательское значение отправляется из сервлета1 в JSP и теперь мне нужно перенести его из JSP в сервлет 2. Мне нужно получить доступ к значению пользователя в сервлете 2 Как это сделать?

$ user - это атрибут, который был отправлен сервлетом 1 $ user печатает значение на этой веб-странице Теперь для дальнейшей обработки эта переменная должна быть отправлена ​​на servlet2

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

В вашем 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>

В вашем сервлете GET метод

String username = request.getParameter("user");
0 голосов
/ 29 августа 2018

Прежде всего позвольте мне начать с объяснения перегруженными getSession() методами. No-arg getSession() всегда возвращает новый session объект, который похож на getSession(true), но в случае getSession(false) он проверяет существующий сеанс, если присутствует возвращает его или возвращает ноль.

После того, как вы установили атрибут для сеанса, он будет доступен пользователю до тех пор, пока его сеанс не станет доступным (не нулевым) или не будет invalidated, поэтому ваши данные user будут также доступны в вашем JSP и servlet2. Но метод, который вы используете для установки атрибута для сеанса, уязвим, поскольку getSession() также может возвращать новый сеанс, в котором ваш атрибут не будет присутствовать.

Таким образом, безопасный способ - извлечь объект сеанса по ссылке, проверить, является ли он пустым, или получить или установить атрибут.

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 и установить значение для скрытого поля. Теперь во втором сервлете используйте метод getParameter (возвращает String), чтобы получить значение.

String user = request.getParameter("user");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...