基于Filter<过滤器>登录权限验证设计心得
来源:互联网 发布:用js修改图片地址 编辑:程序博客网 时间:2024/05/16 05:12
捣鼓了一上午的一点点心得,贴出来大家分享下,见笑了。
上图为项目框架
(一). PowerFilter.java代码部分:
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
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 PowerFilter implements Filter{
public void init(FilterConfig arg0) throws ServletException {
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
System.out.println("+-+-+-+-+-+权限验证测试+-+-+-+-+-+-+");
if (session.getAttribute("adminName") != null) {
chain.doFilter(request, response);
} else {
res.sendRedirect("../adminlogin.jsp");
// RequestDispatcher dispatcher = request.getRequestDispatcher("../adminlogin.jsp");
// dispatcher.forward(request, response);
System.out.println("验证失败!");
}
}
public void destroy() {
}
}
(二). web.xml中的Filter配置信息(为了看的清晰我就全贴出来了)
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter>
<filter-name>PowerFilter</filter-name>
<filter-class>filters.PowerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>PowerFilter</filter-name>
<url-pattern>/bakpages/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>jump.jsp</welcome-file>
</welcome-file-list>
注意一下在判断session为空时的情况,实验多次,每次都是进入死循环,走了不少弯路,后来领悟到adminlogin.jsp页面的位置有问题,一开始是放在/bakpages/下面,导致在过滤不存在重定向的时候再次进入了doFilter方法,所以循环继续。因此需要把adminlogin.jsp放到/bakpages/文件夹之外,当与其同目录层次时写成../adminlogin.jsp ,OK,至此问题得意解决。import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
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 PowerFilter implements Filter{
public void init(FilterConfig arg0) throws ServletException {
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
System.out.println("+-+-+-+-+-+权限验证测试+-+-+-+-+-+-+");
if (session.getAttribute("adminName") != null) {
chain.doFilter(request, response);
} else {
res.sendRedirect("../adminlogin.jsp");
// RequestDispatcher dispatcher = request.getRequestDispatcher("../adminlogin.jsp");
// dispatcher.forward(request, response);
System.out.println("验证失败!");
}
}
public void destroy() {
}
}
(二). web.xml中的Filter配置信息(为了看的清晰我就全贴出来了)
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter>
<filter-name>PowerFilter</filter-name>
<filter-class>filters.PowerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>PowerFilter</filter-name>
<url-pattern>/bakpages/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>jump.jsp</welcome-file>
</welcome-file-list>
- 基于Filter<过滤器>登录权限验证设计心得
- filter过滤器登录验证
- 使用filter过滤器实现登陆权限验证
- 使用filter过滤器实现登陆权限验证
- 用filter过滤器实现登陆权限验证
- JSP中filter过滤器验证用户登录
- JSP中filter过滤器验证用户登录
- JSP中filter过滤器验证用户登录(
- 使用filter过滤器实现用户登录验证
- 过滤器Filter的应用:登录验证
- 基于Filter的简单登录过滤器
- 三种基于过滤器的权限设计:spring AOP、webwork、servlet filter
- 通过过滤器Filter来完成登录访问权限限制
- ASP.NET MVC 使用Filter过滤器 验证用户登录状态
- 过滤器Filter--登录案例
- Java web实现登录验证和过滤器权限设置
- 设计模式:Filter过滤器
- Web权限验证过滤器
- java引用型参数
- SQL交叉表实例
- webwork定义页面局部变量或全局变量
- Google天气Xml文件
- 温州前4月民间借贷和金融纠纷案同比上升89%和101%
- 基于Filter<过滤器>登录权限验证设计心得
- ubuntu下Gedit文本编辑器查看txt文件乱码的解决办法
- 从程序架构提升安全性
- 外键为空
- apache的几条配置经验
- 关于PHP 相关注意事项
- 嵌入式实时操作系统μC/OS-||原理及应用学习1
- vmware下 ubuntu与Windows主机共享文件夹hgfs为空的解决办法
- 使用JS中的Call方法实现继承和多重继承