Using embedded tomcat, this code works:
Servlet:
String test = "test";
request.setAttribute("test", test);
request.getRequestDispatcher("/index.jsp").forward(request, response);
JSP:
<%= request.getAttribute("test") %>
It sets the attribute test
and then prints it out on the servlet /example
's jsp page example.jsp
.
However, if I try to set the attribute within the session then I don't get the same result, instead, I get a null
when using this:
Servlet:
String test = "test";
request.getSession().setAttribute("test", test);
request.getRequestDispatcher("/index.jsp").forward(request, response);
JSP:
<%= session.getAttribute("test") %>
On the JSP side, you don't need to say
request.getSession()
, justsession.getAttribute();
And you had a problem in your Main.java when creating the servlet context (a trick of using embedded Tomcat); you were not getting the context created by adding the webapp to tomcat, you had some other context.
I commented out your code and changed the context handling and now things work. And a new exception to be caught.
You may want to compare the session id in the servlet and the jsp. If they are different maybe check your session and cookie configuration in tomcat