如何处理JSP“ useBean”空异常

时间:2019-08-27 11:59:20

标签: java jsp exception javabeans

在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空问题的答案没有帮助,因为它们解决了不同的问题。

0 个答案:

没有答案