照有些人说的,是调用了两次redirect语句,需要加个return ,我加了 还是不行。大家帮我看下,什么问题,多谢!package cn.edu.ices.bean;import java.io.IOException;
import java.rmi.Naming;import javax.servlet.*;
import javax.servlet.http.*;import com.focusrobot.bean.LoginSessionEntry;
import com.focusrobot.server.rmiproxy.IRMILoginManagerService;
public class IsUserNormal { public static void isUserNormal(HttpServletRequest req, HttpServletResponse resp) throws IOException{
HttpSession httpSession = req.getSession();
String connectionStr="";
try {//判定用户是否正常
System.out.println("获取session");
connectionStr = httpSession.getAttribute("connectionStr").toString();// rmi链接地址
System.out.println("链接字符串:" + connectionStr);
LoginSessionEntry session = (LoginSessionEntry) httpSession.getAttribute("loginSession");// 服务器session
String sessionID = httpSession.getAttribute("sessionID").toString();
String username = httpSession.getAttribute("username").toString();
IRMILoginManagerService loginManager = (IRMILoginManagerService) Naming
.lookup(connectionStr + "/LoginManager");
if (!loginManager.isUserOnline(sessionID, username))
{
System.out.println("用户:" + username + "session超时,请重新登录");
resp.sendRedirect("unLogin.jsp");
return ;
} } catch (Exception e) {
System.out.println("跳转");
resp.sendRedirect("login");
System.out.println("异常:链接到LoginManager接口,判断用户是否在线出现异常"+e);
}
}}
异常如下:
获取session
跳转
异常:链接到LoginManager接口,判断用户是否在线出现异常java.lang.NullPointerException
异常:java.lang.NullPointerException
2010-7-20 11:40:23 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet projectList threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
at cn.edu.ices.bean.GetProjectList.GetProjectList(GetProjectList.java:36)
at cn.edu.ices.servlet.ProjectList.doGet(ProjectList.java:30)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
import java.rmi.Naming;import javax.servlet.*;
import javax.servlet.http.*;import com.focusrobot.bean.LoginSessionEntry;
import com.focusrobot.server.rmiproxy.IRMILoginManagerService;
public class IsUserNormal { public static void isUserNormal(HttpServletRequest req, HttpServletResponse resp) throws IOException{
HttpSession httpSession = req.getSession();
String connectionStr="";
try {//判定用户是否正常
System.out.println("获取session");
connectionStr = httpSession.getAttribute("connectionStr").toString();// rmi链接地址
System.out.println("链接字符串:" + connectionStr);
LoginSessionEntry session = (LoginSessionEntry) httpSession.getAttribute("loginSession");// 服务器session
String sessionID = httpSession.getAttribute("sessionID").toString();
String username = httpSession.getAttribute("username").toString();
IRMILoginManagerService loginManager = (IRMILoginManagerService) Naming
.lookup(connectionStr + "/LoginManager");
if (!loginManager.isUserOnline(sessionID, username))
{
System.out.println("用户:" + username + "session超时,请重新登录");
resp.sendRedirect("unLogin.jsp");
return ;
} } catch (Exception e) {
System.out.println("跳转");
resp.sendRedirect("login");
System.out.println("异常:链接到LoginManager接口,判断用户是否在线出现异常"+e);
}
}}
异常如下:
获取session
跳转
异常:链接到LoginManager接口,判断用户是否在线出现异常java.lang.NullPointerException
异常:java.lang.NullPointerException
2010-7-20 11:40:23 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet projectList threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
at cn.edu.ices.bean.GetProjectList.GetProjectList(GetProjectList.java:36)
at cn.edu.ices.servlet.ProjectList.doGet(ProjectList.java:30)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Parameters:location - the redirect location URL catch (Exception e) {
System.out.println("跳转");
System.out.println("异常:链接到LoginManager接口,判断用户是否在线出现异常"+e);
resp.sendRedirect("login.jsp");
}
试下
试下getRequest().getRequestDispatcher("").forward(arg0, arg1)