凤岗建设网站,佛山行业网站设计,如何寻找做企业网站的,六安seo曝光行者seo什么是过滤器#xff1f;在Java Web中#xff0c;过滤器即Filter。Servlet API中提供了一个Filter接口(javax.servlet.Filter)。开发web应用时#xff0c;假设编写的Java类实现了这个接口#xff0c;则把这个Java类称之为过滤器Filter。通过Filter技术#xff0c;开发者能…什么是过滤器在Java Web中过滤器即Filter。Servlet API中提供了一个Filter接口(javax.servlet.Filter)。开发web应用时假设编写的Java类实现了这个接口则把这个Java类称之为过滤器Filter。通过Filter技术开发者能够实现用户在訪问某个目标资源之前对訪问的请求和响应进行拦截。简单说。就是能够实现web容器对某资源的訪问前截获进行相关的处理还能够在某资源向web容器返回响应前进行截获进行处理。创建一个Filter的步骤1.创建一个Filter处理类(实现javax.servlet.Filter接口)2.在web.xml文件里配置FilterFilter运行流程1.Filter对用户的请求进行预处理2.处理好后将请求交给Servlet处理并生成响应3.最后Filter再对server响应进行后处理字符编码过滤器CharacterFilter.javapackage org.LabReserve.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;public class CharacterFilter implements Filter { //实现Filter接口private String character; //保存字符编码的类型Overridepublic void destroy() { //在Filter销毁前。完毕某些资源的回收}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding(utf-8); //能够直接设置编码servletResponse.setCharacterEncoding(character); //也能够读取初始化的參数characterfilterChain.doFilter(servletRequest, servletResponse); //转到下一个过滤器}Overridepublic void init(FilterConfig fc) throws ServletException { //完毕Filter的初始化//读取web.xml中Filter配置的初始化參数character fc.getInitParameter(character);}}web.xml文件里的配置CharacterFilterorg.LabReserve.filter.CharacterFiltercharacterutf-8CharacterFilter/*登录验证过滤器LoginFilter.javapackage org.LabReserve.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;public class LoginFilter implements Filter {Overridepublic void destroy() {}Overridepublic void doFilter(ServletRequest servletRequest,ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {// 转换为HTTP请求对象HttpServletRequest request (HttpServletRequest) servletRequest;// 转化为HTTP响应对象HttpServletResponse response (HttpServletResponse) servletResponse;// 获得请求相应的session对象HttpSession session request.getSession();// 获得用户请求的URIString path request.getRequestURI();// 不用验证登录过滤的页面String[] noCheckPages { index.jsp,findPassword.jsp,LoginServlet,UserServlet,css,images,js};// int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。没找到则返回-1for (int i 0; i noCheckPages.length; i) {if (path.indexOf(noCheckPages[i]) -1) {// 转到下一个过滤器filterChain.doFilter(servletRequest, servletResponse);return; //不再过滤防止页面重定向循环}}// 假设session为null说明用户是第一次訪问if (session.getAttribute(userId) ! null|| session.getAttribute(teacherId) ! null|| session.getAttribute(adminId) ! null) {// 转到下一个过滤器filterChain.doFilter(request, response);} else {// 又一次定向到首页response.sendRedirect(index.jsp);return; //不再过滤防止页面重定向循环}}Overridepublic void init(FilterConfig arg0) throws ServletException {}}web.xml文件配置LoginFilterorg.LabReserve.filter.LoginFilterLoginFilter/*