写了一个过滤器,就是为了防止未登录但知道网址,从而直接访问相应页面的问题。import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class FilterAccess implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {
HttpServletRequest hreq = (HttpServletRequest)request;
HttpServletResponse hres = (HttpServletResponse)response;
HttpSession session = ((HttpServletRequest)hreq).getSession();
String username = (String)session.getAttribute("username");
if(username == null) {
//首页网址
hres.sendRedirect("http://localhost:8080" + hreq.getContextPath() + "/index.jsp");
} else {
chain.doFilter(request, response);
}
} public void destroy() {}
}下面是web.xml中的配置信息。 <filter>
<filter-name>accessControl</filter-name>
<filter-class>cn.edu.sjzri.filterEncoding.FilterAccess</filter-class>
</filter> <filter-mapping>
<filter-name>accessControl</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>就是为了保证在访问admin下文件(都是jsp)时,用户是登陆的。但是现在出现了一个问题:首页无法访问了,即http://localhost:8080/title,它指向的页面是在WebRoot下的index.jsp。访问首页是Firefox显示“此页面重定向不正确。Firefox 检测到该服务器正在将此地址的请求循环重定向。”我觉得是过滤器发现HttpSession中的username是空的,从而重定向到了首页,从而发生了循环。但是我在web.xml中配置的是/admin/*下的页面才要用到过滤器,而首页不在admin文件夹下,为什么也经过过滤器了呢?
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class FilterAccess implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {
HttpServletRequest hreq = (HttpServletRequest)request;
HttpServletResponse hres = (HttpServletResponse)response;
HttpSession session = ((HttpServletRequest)hreq).getSession();
String username = (String)session.getAttribute("username");
if(username == null) {
//首页网址
hres.sendRedirect("http://localhost:8080" + hreq.getContextPath() + "/index.jsp");
} else {
chain.doFilter(request, response);
}
} public void destroy() {}
}下面是web.xml中的配置信息。 <filter>
<filter-name>accessControl</filter-name>
<filter-class>cn.edu.sjzri.filterEncoding.FilterAccess</filter-class>
</filter> <filter-mapping>
<filter-name>accessControl</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>就是为了保证在访问admin下文件(都是jsp)时,用户是登陆的。但是现在出现了一个问题:首页无法访问了,即http://localhost:8080/title,它指向的页面是在WebRoot下的index.jsp。访问首页是Firefox显示“此页面重定向不正确。Firefox 检测到该服务器正在将此地址的请求循环重定向。”我觉得是过滤器发现HttpSession中的username是空的,从而重定向到了首页,从而发生了循环。但是我在web.xml中配置的是/admin/*下的页面才要用到过滤器,而首页不在admin文件夹下,为什么也经过过滤器了呢?
解决方案 »
- java ee连接数据库是不是要下个包,是不是jdbc包
- urlConnection的超时设置怎么样才能起作用
- Spring2.0,hibernate3.1,struts2整合问题
- JavaEE MySQL数据库读取问题
- java 数据异步保存问题
- org.jdom.Element做参数不是传的地址吗?
- 应用程序中如何获取ie地址栏的url
- 安装deploy.wsdd时候出现了点小毛病
- 简单问题,进来不许齿笑!
- 能否用Jbuilder7和Weblogic举一个消息Bean的例子?(急)
- 我靠!!没王法了!!!javaeye被关了....郁闷呀。。。。
- 跟着老师做例子,遇到的类不能继承问题。请教
如果依然表现异常,不妨清空Tomcat work目录,重启动Tomcat看看。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>setEncoding</filter-name>
<filter-class>cn.edu.sjzri.filterEncoding.FilterEncoding</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<filter-name>accessControl</filter-name>
<!--cn.edu.sjzri.filterEncoding包名不太规范-->
<filter-class>cn.edu.sjzri.filterEncoding.FilterAccess</filter-class>
</filter>
<filter-mapping>
<filter-name>setEncoding</filter-name>
<url-pattern>/*</url-pattern>
<filter-name>accessControl</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<!-- Standard Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>目前只有这一个应用
<filter>
<filter-name>setEncoding</filter-name>
<filter-class>cn.edu.sjzri.filterEncoding.FilterEncoding</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name>accessControl</filter-name>
<!--cn.edu.sjzri.filterEncoding包名不太规范-->
<filter-class>cn.edu.sjzri.filterEncoding.FilterAccess</filter-class>
</filter>
<filter-mapping>
<filter-name>setEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping> <filter-name>accessControl</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>