Filter
了解Filter:
Fileter表示过滤器,是JavaWeb三大组件(Servlet、Fileter、Listener)之一。
过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
过滤器一般完成一些通用的操作:权限控制、统一编码处理、敏捷字符处理等等...
放行后对应资源,资源访问完成后,会继续回到Filter中 ,继续执行放行后的逻辑
下面是登陆的过滤器:
package web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException; /* 登陆验证的过滤器 */ @WebFilter("/*") public class LoginFilter implements Filter { public void init(FilterConfig config) throws ServletException { } public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { HttpServletRequest req = (HttpServletRequest) request; //判断访问资源路径是否和登录注册相关 String[] urls = {"/login.jsp","/imgs/","/css/","/loginServlet","/register.jsp","/registerServlet","/checkCodeServlet"}; // 获取当前访问的资源 String url = req.getRequestURL().toString(); for (String u : urls) { if(url.contains(u)){ //找到了 chain.doFilter(request, response); return; } } //判断session是否有user HttpSession session = req.getSession(); Object user = session.getAttribute("user"); //判断session中是否有user if (user != null) { //登陆过了 chain.doFilter(request, response); }else { // 没有登陆,跳转到登陆界面,存储提示信息 req.setAttribute("login_msg","您尚未登录"); req.getRequestDispatcher("/login.jsp").forward(req,response); } } }
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术