【发布时间】:2013-03-25 05:17:33
【问题描述】:
我正在尝试进行登录操作,但是当我使用过滤器检查会话是否有效时,我得到了异常:-java.lang.IllegalStateException,在响应提交后无法创建会话。
Myservlet 过滤器代码是:-
public class SessionFilter implements javax.servlet.Filter
{
private ArrayList<String> urlList;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String url = request.getServletPath();
boolean allowedRequest = false;
if(urlList.contains(url)) {
allowedRequest = true;
}
if (!allowedRequest) {
HttpSession session = request.getSession(false);
if (null == session) {
response.sendRedirect("Login.jsp");
}
}
chain.doFilter(req, res);
}
public void init(FilterConfig fConfig) throws ServletException {
String urls = fConfig.getInitParameter("avoid-urls");
//StringTokenizer token = new StringTokenizer(urls, ",");
StringTokenizer token = new StringTokenizer(urls);
urlList = new ArrayList<String>();
urlList.add(token.nextToken());
/*while (token.hasMoreTokens()) {
urlList.add(token.nextToken());
}*/
}
}
Filter mapping in web.xml is :-
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>Filter.SessionFilter</filter-class>
<init-param>
<param-name>avoid-urls</param-name>
<param-value>Login.jsp,</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
现在,当我请求 login.jsp 时,我得到了这个异常。请帮助我
自从这里的最后 2 天以来一直卡在我的项目上。
【问题讨论】:
-
if (null == session) 这是什么?
-
if (null == session) { response.sendRedirect("Login.jsp"); return; }之后。你能试试在response.sendRedirect("Login.jsp");后面加上return声明吗 -
是的,我试过了,但我没明白
-
但是当我在 response.sendRedirect("Login.jsp"); 之后使用 return 语句时然后我没有得到任何输出(我想重定向到 login.jsp) 无休止的处理继续我应该做什么.Viksh V