使用过滤器对后台权限的设置

来源:互联网 发布:日本文化 知乎 编辑:程序博客网 时间:2024/06/01 07:23
package org.yc.jd.util;/** * @author 后飞IT * 关于使用过滤器对后台权限的设置 */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;/* * javaee 是面向接口编程的,所有一般都是实现接口   这里的DoFilter实现了接口Filter 并实现destroy()doFilter()init() * 这里实现的功能是阻止没有登录的用户登录后台中的页面 * 所以在登录的时候,但验证成功后,我们往作用域对象Session中写入这个Login,所以只要session没有失效,浏览器没有关闭,session就会有这个Attribute("Login")  * request.getSession().setAttribute("Login", admin); * 所以对任何访问有关后台的请求都要检查session中是否有这个Attribute,如果没有则定向到登陆页面,要求登陆 *  * 注意:~~~ * 这个是需要这个web project更改web.xml的 * <filter> * <!--这个只是定义一下这个过滤器的名字而已,关键是下面指向的类的位置--> *<filter-name>loginFilter</filter-name> *<filter-class>org.yc.jd.util.DoFilter</filter-class> * </filter> *  * <filter-mapping> * <!--过滤器的名字是沟通class和url的--> *<filter-name>loginFilter</filter-name> *  <!--后台的所有的页面都是在项目的这个back文件夹的,所以对所有的back的内容进行拦截,当然登陆页面就不要放进去了--> *<url-pattern>/back/*</url-pattern> *</filter-mapping> *  * */public class DoFilter implements Filter {@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {//首先要对arg0 arg1类型转换HttpServletRequest req=(HttpServletRequest)arg0;HttpServletResponse res=(HttpServletResponse)arg1;//从session中获取有关Login的这个AttributeObject obj = req.getSession().getAttribute("Login");if(obj==null){//如果没有有关的这个Attribute中res.sendRedirect("/JD/login.html");}else{//可以是一个过滤器链,所以继续往下arg2.doFilter(req, res);}}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}

原创粉丝点击