过滤器的使用---- 使用某些功能时未登录跳转到登录界面 && 每次定义字符集

在Util层内新建 UrlFilter 

package cn.trade.util;

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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebFilter("/UrlFilter")
public class UrlFilter implements Filter {
	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here
		HttpServletResponse resp = (HttpServletResponse) response;
		HttpServletRequest req = (HttpServletRequest) request;
		
		HttpSession session = req.getSession();
		
		Object obj = session.getAttribute("ss_user");
		String path = req.getServletPath();
//  输出每次请求的地址  根据这个来在if里面加或者不加		
System.out.println("请求的地址:"+path);
		String action = req.getParameter("action");
		
		if (obj!=null
				|| "/firststep.jsp".equals(path)
				|| "/IndexPageServlet".equals(path)
				|| "/LoginServlet".equals(path)
				|| "/index.jsp".equals(path)
				|| "/registe.jsp".equals(path)
				|| "/RegisteServlet".equals(path)
				|| "/KeyServlet".equals(path)
				|| "/ProductDetailServlet".equals(path)
				|| "/login.jsp".equals(path)
				|| path.endsWith(".js")
				|| path.endsWith(".css")
				|| path.endsWith(".jpg")
				|| path.endsWith(".png")
				|| path.endsWith(".gif")) {
			// pass the request along the filter chain
			chain.doFilter(request, response);
			
		} else{
//			resp.sendRedirect("firstStep.jsp");
//跳转到登录界面
			resp.getWriter().print("<script type='text/javascript'>top.location.href='login.jsp'</script>");
		}
		
//		chain.doFilter(request, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("初始化UrlFilter.....");
	}

}

xeb。xml文件内添加

<filter>
    <filter-name>UrlFilter</filter-name>
    <filter-class>cn.trade.util.UrlFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>UrlFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

在Util层内新建EncodingFilter

package cn.trade.util;

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.annotation.WebFilter;

/**
 * Servlet Filter implementation class EncodingFilter
 */
@WebFilter("/EncodingFilter")
public class EncodingFilter implements Filter {
	private String encoding = "";
	private String contenttype = "";
    /**
     * Default constructor. 
     */
    public EncodingFilter() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here
		request.setCharacterEncoding(encoding);
		
		response.setCharacterEncoding(encoding);
		response.setContentType(contenttype);
		// pass the request along the filter chain
		chain.doFilter(request, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
		encoding = fConfig.getInitParameter("Encoding");
		contenttype = fConfig.getInitParameter("ContentType");
	}

}

web.xml里添加

 <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>cn.trade.util.EncodingFilter</filter-class>
    <init-param>
      <param-name>Encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>ContentTpye</param-name>
      <param-value>text/html;charset=utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

猜你喜欢

转载自blog.csdn.net/n20164206199/article/details/86217696
今日推荐