什么是Filter过滤器
1.Filter是JavaEE的规范 也就是接口
作用是 拦截请求 、过滤响应
拦截请求常见的应用场景
1.权限检查
2.日记操作
3.事务管理
…
Filter过滤器的初体验
要求在web工程下有一个admin目录(html、jpg、jsp…)。这个admin目录下的所有资源必须是用户登录后才允许访问
//一般的jsp实现 有局限性
查看session中是否包含用户信息即可判断用户是否已经登陆
在请求到目标资源以前 先经过Fliter过滤器的过滤
package com.wangqiang.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.HttpSession;
public class AdminFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest=(HttpServletRequest)servletRequest;
HttpSession session=httpServletRequest.getSession();
Object user=session.getAttribute("user");
if(user==null){
servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest, servletResponse);
return ;
}else{
//放行 让用户继续向下访问用户的目标资源
filterChain.doFilter(servletRequest, servletResponse);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
package com.wangqiang.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String username=req.getParameter("username");
String password=req.getParameter("password");
if("123".equals(username)&&"456".equals(password)) {
req.getSession().setAttribute("user", username);
resp.getWriter().write("登陆成功");
}else {
req.getRequestDispatcher("/login.jsp").forward(req, resp);
}
}
}
AdminFilter com.wangqiang.filter.AdminFilter AdminFilter /admin/* LoginServlet com.wangqiang.servlet.LoginServlet LoginServlet /loginServlet
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
这是登录页面login.jsp



