黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Filter過濾器

Servlet3.0下@WebFilter

Filter(過濾器)主要對請求到達前進行處理,也可以在請求結束后進行處理,類似于鏈式。一個請求可以被多個過濾器攔截到,會依次進入各個Filter中,放行后直至進入Servlet,Servlet處理請求結束后,回到各個Filter繼續執行后面的代碼,先執行的Filter后執行完。

常用到的地方

用戶權限過濾

記錄日志

字符編碼處理

配置Filter

@WebFilter注解

web.xml中配置

@WebFilter常用屬性

用戶權限過濾示例

1、方式一,@WebFilter注解方式

自定義過濾器,實現javax.servlet.Filter接口,通過注解方式配置。攔截所有的請求,放行登錄頁面、登錄操作請求,其余請求需要在登錄后才可訪問。同時配置參數,指定要放行的路徑和請求的字符集。


@WebFilter(filterName = "loginFilter", 
	urlPatterns = "/*", 
	initParams = {
			@WebInitParam(name = "loginUI", value = "/home/loginUI"),
			@WebInitParam(name = "loginProcess", value = "home/login"),
			@WebInitParam(name = "encoding", value = "utf-8")
	})
public class LoginFilter implements Filter {
	private FilterConfig config;
	
	@Override
	public void init(FilterConfig config) throws ServletException {
		this.config = config;
	}
 
 
	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
			throws IOException, ServletException {
		// 獲取配置參數
		String loginUI = config.getInitParameter("loginUI");
		String loginProcess = config.getInitParameter("loginProcess");
		String encoding = config.getInitParameter("encoding");
 
 
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) res;
		
		// 設置請求的字符集(post請求方式有效)
		request.setCharacterEncoding(encoding);
		
		// 不帶http://域名:端口的地址
		String uri = request.getRequestURI();
		if (uri.contains(loginUI) || uri.contains(loginProcess)) {
			// 請求的登錄,放行
			chain.doFilter(request, response);
		} else {
			if (request.getSession().getAttribute("user") == null) {
				// 重定向到登錄頁面
				response.sendRedirect(request.getContextPath() + loginUI);
			} else {
				// 已經登錄,放行
				chain.doFilter(request, response);
			}
		}
	}
	
	@Override
	public void destroy() {
		this.config = null;
	}
}

2、方式二,web.xml方式配置

通過在web.xml文件中配置,去掉方式一中的@WebFilter注解,其余代碼相同


<filter>
  	<filter-name>loginFilter</filter-name>
  	<filter-class>cn.edu.njit.filter.LoginFilter</filter-class>
  	<init-param>
  		<param-name>loginUI</param-name>
  		<param-value>/home/loginUI</param-value>
  	</init-param>
  	<init-param>
  		<param-name>loginProcess</param-name>
  		<param-value>home/login</param-value>
  	</init-param>
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>utf-8</param-value>
  	</init-param>
</filter>
<filter-mapping>
  	<filter-name>loginFilter</filter-name>
  	<url-pattern>/*</url-pattern>
</filter-mapping>

3、注

●  Filter和Servlet比較相似,從屬性以及配置方式上可以看出,可以理解為Servlet的加強版;

● Filter中對權限的過濾、字符編碼的處理、日志的記錄可以看成是各個Servlet中重復代碼的抽取;

● 對于字符編碼的處理,request.setCharacterEncoding()對post方式的請求有效;若是get方式,可以使用new String(xxx.getBytes("iso-8859-1"), "utf-8")進行處理,否則表單的中文會亂碼;也可以使用代理方式,每當通過request.getParameter()時自動進行編碼處理;

全部教程
主站蜘蛛池模板: 在线免费观看黄色 | 国产亚洲一区二区精品 | 猛h辣h高h文湿重口 美日毛片 | 毛片网站在线看 | 黄色大片在线看 | 日本欧美一二三区色视频 | 国产精品日韩欧美在线第3页 | 欧美色图日韩 | 久久这里知有精品99re66 | 日韩欧美动漫 | 多人伦交性欧美精品欧 | 免费在线不卡视频 | 操你啦在线播放 | 成人免费观看黄a大片夜月 成人免费观看www视频 | 成人黄色三级视频 | 黄色片日韩 | 日韩激情视频网站 | 日本aⅴ永久免费网站www | 一级α片| 精品视频一区二区三区四区 | 天天插天天干天天射 | 麻豆国产免费影片 | 成人羞羞视频免费看看 | 全免费a级毛片免费毛视频 全免费毛片在线播放 | 午夜影视在线 | 久久免费看片 | 午夜小视频网站 | 国产伦理在线播放 | 国产精品青草久久福利不卡 | 韩国伦理片免费在线观看 | h视频在线免费 | 中文字幕日韩三级 | 日本三级带日本三级带黄首页 | 成人免费视频播放 | 丁香激情综合色伊人久久 | 日本与大黑人xxxx | 一级国产特黄aa大片 | 国产日韩欧美综合在线 | 亚洲日韩中文字幕天堂不卡 | 在线观看成人网 | 国产在线观看99 |