Maison >Java >javaDidacticiel >Une brève introduction au filtre Servlet Filter (avec des exemples)

Une brève introduction au filtre Servlet Filter (avec des exemples)

不言
不言avant
2018-11-24 16:54:343551parcourir

Cet article vous apporte une brève introduction à Servlet Filter (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Fonctionnalités

1) Le filtre dépend du conteneur Servlet et fait partie de la spécification Servlet. Trois classes d'interface sont définies dans l'API Servlet : Filter, FilterChain, FilterConfig.

2) La fonction de base est d'intercepter le processus d'appel du Servlet, afin d'implémenter certaines fonctions spéciales avant et après que le Servlet effectue le traitement des réponses.

3) Vous devez vous inscrire et définir les ressources qu'il peut intercepter dans le fichier web.xml.

Encodage

public class UserNoFilter implements Filter { 
    
	private FilterConfig filterConfig; //获取参数配置

	public void init(FilterConfig fConfig) throws ServletException {
		this.filterConfig = fConfig;
	}
	
	/**
	 * 业务逻辑判断
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		String initUser = filterConfig.getInitParameter("userNo");
		String userNo = request.getParameter("userNo");//从提交请求获取用户账号
		
		if(!initUser.equals(userNo)){
			request.setAttribute("message", "用户名不正确");
			request.getRequestDispatcher("/index.jsp").forward(request, response);
			return;
		}
		
		chain.doFilter(request, response);
	} 
	
	public void destroy() {
		 
	} 

}

Paramètres web.xml

	<!-- 配置过滤器 -->
	<filter>
		<display-name>UserNoFilter</display-name>
		<filter-name>UserNoFilter</filter-name>
		<filter-class>com.demo.filter.UserNoFilter</filter-class>
		<init-param>
			<param-name>userNo</param-name>
			<param-value>admin</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>UserNoFilter</filter-name>
		<url-pattern>/hello.jsp</url-pattern> 
	</filter-mapping>

Application

1) Spécifiez le format d'encodage

request.setCharacterEncoding(encoding);
filterChain.doFilter(request, response);

2) Si l'utilisateur est connecté et s'il peut accéder au menu

String userId=(String) session.getAttribute("userId");
if (userId ==null){
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer