Filter过滤器
来源:互联网 发布:淘宝美食店铺吐血推荐 编辑:程序博客网 时间:2024/06/12 19:54
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 LoginFilter implements Filter{
//黑名单 不需要拦截直接放行的
String[] exculde = new String[] {"helloWeb.html","register.html"};
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
System.out.println("我是过滤器LoginFilter");
//强转req和resp
HttpServletRequest request=(HttpServletRequest) req;
HttpServletResponse response=(HttpServletResponse) resp;
// Enumeration<String> headers =request.getHeaderNames();
//requestURL使我们可使用的内容
//RequestURI是我们可以使用的内容。
String target = request.getRequestURI();
System.out.println(request.getRequestURL());
if(isExculde(target)) {
chain.doFilter(request, response);
} else {
doFilterMyHtml(request, response,chain);
}
}
/**
* 此方法用来判断是否是不需要拦截的的
* @param target
* @return
*/
public boolean isExculde(String target){
boolean flag=false;
for(String str:exculde){
if(target.indexOf(str)>0){
flag=true;
break;
}
}
return flag;
}
/**
* 拿到需要对比的username
*
* @param request
* @param response
* @param chain
* @throws IOException
* @throws ServletException
*/
public void doFilterMyHtml(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException{
//通过request获取session
HttpSession session=request.getSession();
//拿到浏览器中记录的session中保存的username
String username=(String) session.getAttribute("username");
//如果不为空则放行,否则调回登录页面
if(username!=null &&!username.isEmpty()){
//通过
chain.doFilter(request, response);
}else{
//跳转到登录页面
response.sendRedirect("helloWeb.html");
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
web.xml配置
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.lanou.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>*.html</url-pattern>
拦截单个页面
package com.lanou.filter;
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;
/**
* 通过角色过滤,学生登录不能打开insertStudent.html
* @author xalo
*
*/
public class RoleFilter implements Filter{
//黑名单 不需要拦截直接放行的
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
System.out.println("我是过滤器RoleFilter");
//强制转化resp和req
HttpServletRequest request=(HttpServletRequest) req;
HttpServletResponse response=(HttpServletResponse) resp;
HttpSession session=request.getSession();
//2代表老师,1代表学生
Integer role= (Integer) session.getAttribute("role");
System.out.println("roleFilter的角色是"+role);
if(role!=null && role==0 ){
response.sendRedirect("helloWeb.html");
return ;
}
chain.doFilter(request, response);
}
public void doFilterMy(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException{
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
web.xml配置
<filter>
<filter-name>RoleFilter</filter-name>
<filter-class>com.lanou.filter.RoleFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RoleFilter</filter-name>
<url-pattern>/insertStudent.html</url-pattern>
</filter-mapping>
- 过滤器Filter
- 过滤器Filter
- Filter 过滤器
- 过滤器 filter
- 过滤器filter
- 过滤器,Filter
- 过滤器Filter
- filter--过滤器
- 过滤器Filter
- filter过滤器
- Filter过滤器
- filter过滤器
- Filter过滤器
- Filter过滤器
- Filter 过滤器
- Filter过滤器
- Filter(过滤器)
- filter过滤器
- ECLIPSE生成JAVADOC时出错:编码GBK的不可映射字符
- 回车事件
- HDU4670-Cube number on a tree
- hdu 2639 (Bone Collector II) 0-1背包的第k优解
- NOIP 2002 均分纸牌
- Filter过滤器
- 《大话设计模式》读书笔记之C++实现--chapter22桥接模式
- Gym 101389. B
- 关于Switch控件的使用
- Saltstack安装LAMP
- codeforces 870C. Maximum splitting
- [NOIP2017模拟]玩积木
- 学习uboot前奏之hardware-IRQ[s3c2440]
- 流程控制语句