在Java Controller类中,我像这样设置会话属性“ korisnikBean”:
HttpSession sesija = request.getSession();
...
if (some_condition) {
KorisnikBean korisnikBean = new KorisnikBean();
sesija.setAttribute("korisnikBean", korisnikBean);
}
这是按照登录顺序完成的。
在JSP页面上,我有:
<jsp:useBean id="korisnikBean" type="com.gishas.binovi.KorisnikBean" scope="session"></jsp:useBean>
这可以正常工作,直到我重新启动服务器并且不再重新登录。现在,当我刷新页面时,由于未执行登录顺序,因此不会初始化和设置KorisnikBean,从而导致以下异常:
javax.servlet.ServletException: java.lang.InstantiationException: bean korisnikBean not found within scope
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:666)
org.apache.jsp.stranice.zasticeno.povezivanje_jsp._jspService(povezivanje_jsp.java:365)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
com.gishas.controller.Controller.doGet(Controller.java:231)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
在线
<jsp:useBean id="korisnikBean" type="com.gishas.binovi.KorisnikBean" scope="session"></jsp:useBean>
我的问题是,我该如何处理?我不希望向用户显示异常(现在正在发生这种情况),并且我不希望不使用回退错误页面,而应该重定向到登录页面。
我试图将其放在'useBean'行之前:
<% KorisnikBean korisnikBeanSesija = (KorisnikBean) sesija.getAttribute("korisnikBean"); %>
<%String contextPath = request.getContextPath(); %>
<% if(korisnikBeanSesija == null) { response.sendRedirect(contextPath +"/Controller/stranice/login.jsp");} %>
但是它没有重定向。 我的重定向代码是否有问题,或者无法通过这种方式处理?
我无法搜索出任何类似的东西,因此对JSP bean空问题的答案没有帮助,因为它们解决了不同的问题。