java web应用URL过滤
2015-06-25 16:37
561 查看
转自http://www.yihaomen.com/article/java/117.htm,有改动,收录做笔记
首先是过滤器的类
web.xml配置
注意:错误的几种写法
还有这样写是错误的
spring拦截器对servlet的过滤方式
首先是写拦截器
然后在spring配置文件中配置:
首先是过滤器的类
[code]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.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SecurityFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1; HttpSession session = request.getSession(true); Object obj = (Object)session.getAttribute("CURRENT_USER"); String url = request.getRequestURI(); System.out.println(">>>>RequestURI:"+url); System.out.println(">>>RequestContext:"+request.getContextPath()); if(obj==null){ // 判断获取的路径不为空且不是访问登录页面或执行登录操作时跳转 if (url != null && !url.equals("")) { response.sendRedirect(request.getContextPath() + "/login.jsp"); return; } } arg2.doFilter(arg0, arg1); return; } public void init(FilterConfig arg0) throws ServletException { } }
web.xml配置
[code] <filter> <filter-name>SecurityFilter</filter-name> <filter-class>com.gjp.o2o.web.filter.SecurityFilter</filter-class> </filter> <filter-mapping> <filter-name>SecurityFilter</filter-name> <url-pattern>/admin/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>SecurityFilter</filter-name> <url-pattern>/facilitator/*</url-pattern> </filter-mapping>
注意:错误的几种写法
[code]<filter-mapping> <filter-name>authority</filter-name> <url-pattern>/pages/cmm/*;/pages/genbill/*</url-pattern> </filter-mapping>
还有这样写是错误的
[code]<url-pattern>/direcotry/*.jsp</url-pattern>
spring拦截器对servlet的过滤方式
首先是写拦截器
[code]import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.apache.log4j.Logger; //import org.apache.struts.action.ActionMapping; public class LoginInterceptor implements MethodInterceptor { private static final Logger log = Logger.getLogger(LoginInterceptor.class); public Object invoke(MethodInvocation invocation) throws Throwable { System.out.println("拦截开始!"); Object[] args = invocation.getArguments(); HttpServletRequest request = null; HttpServletResponse response = null; for (int i = 0 ; i < args.length ; i++ ) { if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i]; if (args[i] instanceof HttpServletResponse) response = (HttpServletResponse)args[i]; } if (request != null ) { String url=request.getRequestURI(); String operation=request.getParameter("operation"); HttpSession session = request.getSession(true); Object obj = (Object)session.getAttribute("CURRENT_USER"); System.out.println(">>>>RequestURI:"+url); System.out.println(">>>RequestContext:"+request.getContextPath()); System.out.println(">>>Operation:"+operation); if (obj == null&&(!"login".equals(operation))) { response.sendRedirect(request.getContextPath() + "/login.jsp"); return false; } else { /*do something*/ return invocation.proceed(); } } else { return invocation.proceed(); } } }
然后在spring配置文件中配置:
[code]<!--配置拦截器--> <bean id="loginInterceptor" class="com.gjp.o2o.web.interceptor.LoginInterceptor" ></bean> <!--配置拦截的Bean--> <bean id="autoPorxyFactoryBean" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="interceptorNames"> <list> <value>loginInterceptor</value> </list> </property> <property name="beanNames" > <list> <value>*Servlet</value><!--拦截的bean的格式都是这样的--> </list> </property> </bean>
相关文章推荐
- java中的==、equals()、hashCode()源码分析 (转)
- SpringMVC自定义日期类型的数据绑定
- spring mvc提交日期类型参数
- SpringMVC日期类型转换问题三大处理方法归纳
- 理解Struts2配置
- java.util.ConcurrentModificationException解决方案
- java list
- 利用eclipse(MyEclipse)快速生成set、get方法的方法
- Java合并两个有序序列算法实现
- Eclipse web工程 部署 三种方式 1
- struts2 标签
- Java事务
- Java中Runnable和Thread的区别
- android Eclipse自动编译NDK/JNI的三种方法
- Spring的JdbcTemplate插入操作返回主键ID的方法
- java中File文件的创建,删除,复制,移动,以及目录文件的删除等等,主要是文件及文件夹的操作
- Java书籍推荐
- Spring揭秘:第一章-第六章IOC与BeanFactory
- eclipse构建maven的web项目
- java8文档