jsp,servlet利用过滤器解决中文乱码,和控制访问权限

来源:互联网 发布:小额借贷软件排名 编辑:程序博客网 时间:2024/05/07 02:27
  <!-- 过滤器1,解决中文乱码 --><filter><!-- 名字随便起,但是类要写完整的带包的路径--><filter-name>encodingFitler</filter-name><filter-class>com.accp.filter.EcondingFilter</filter-class><!-- 获取初始化的一些参数--><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><!-- 过滤器2,权限控制 --><filter><filter-name>LoginFilter</filter-name><filter-class>com.accp.filter.LoginFilter</filter-class></filter><filter-mapping><filter-name>encodingFitler</filter-name><!-- *表示匹配所有 --><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>LoginFilter</filter-name><!-- 过滤除login.jsp和register.jsp页面的 --><url-pattern>/page/*</url-pattern></filter-mapping>

这个是过滤器解决中文乱码的类

package com.accp.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 EcondingFilter implements Filter {private String charset = null;public void destroy() {// TODO Auto-generated method stubSystem.out.println("filter销毁");}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubSystem.out.println("doFilter前");//对请求的转码request.setCharacterEncoding(charset);//对回应的转码response.setCharacterEncoding(charset);chain.doFilter(request, response);System.out.println("doFilter后");}public void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stubSystem.out.println("filter初始化");//读取初始化filter的参数charset=filterConfig.getInitParameter("encoding");System.out.println(charset);}}

这个是过滤器控制用户权限的类

package com.accp.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 LoginFilter implements Filter {public void destroy() {// TODO Auto-generated method stubSystem.out.println("filter销毁");}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubSystem.out.println("doFilter前面");//获取HttpServletRequest通过,它的实例获取一个sessionHttpSession session = ((HttpServletRequest)request).getSession();//判断session中是否有数据if(session.getAttribute("user")!=null){System.out.println(session.getAttribute("user"));chain.doFilter(request, response);System.out.println("doFilter后");}else{String mes = "你还没有登录";System.out.println(mes);request.setAttribute("mes", mes);request.getRequestDispatcher("../login.jsp").forward(request, response);}}public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stubSystem.out.println("filter被实例化");}}

过滤器无需我们在程序中调用,每次当我们获取web请求时,会首先自动的进入过滤器类。