servlet的三大组件
servlet
过滤器是用来过滤http请求的
//继承于filter(javax.servlet)
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 初始化, 当前的过滤器对象创建出来的时候, 该方法会执行
// 一般在该方法中读取web.xml中的参数
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//强转成HttpServletRequest
HttpServletRequest req = (HttpServletRequest) request;
//取出session
HttpSession session = req.getSession();
// 从session中取出登录的用户信息
Object user = session.getAttribute("user");
// 如果可以取出用户
if (user != null) {
// 对该请求进行放行
chain.doFilter(request, response);
} else {
// 用户没登录
HttpServletResponse resp = (HttpServletResponse) response;
// 重定向回登录页面
resp.sendRedirect("/login");
}
}
@Override
public void destroy() {
// 当前过滤器被销毁的时候会执行
// 一般用于释放资源
}
// 在Filter的接口中 init和destroy 方法default被标记所以使用时可以不重写
}
在 wed.xml中进行配置
<!--配置过滤器-->
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.lanou.demo.filter.LoginFilter</filter-class>
</filter>
<!--配置过滤器映射-->
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/user</url-pattern>
</filter-mapping>
<!--如要配置多个就多些几个映射-->
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/book</url-pattern>
</filter-mapping>
原文:https://www.cnblogs.com/lxx-1843693653/p/10922431.html