JavaEE学习笔记之JSP+Servlet(二)

一、Servlet过滤器

过滤器是进行过滤预处理的装置。

Servlet过滤器是一种特殊的Servlet,可以对用户的请求信息和响应信息进行过滤,当访问Servlet过滤器对应的Servlet时,会先执行Servlet过滤器,对请求和响应的信息进行过滤。

Servlet过滤器类需要实现javax.servlet.Filter接口,同时需要继承HttpServlet类。接口中的方法如下:

init(FilterConfig):初始化方法,完成Servlet过滤器类的初始化。

doFilter(ServletRequest, ServletResponse,FilterChain):完成过滤操作。

destory():销毁过滤器。

二、Demo

过滤器LoginFilter类实现登录时的过滤,如果帐号或密码为空的话,则不防问Login.java。该例子接上一篇:JavaEE学习笔记之JSP+Servlet(一)

在上一个工程中,建一个LoginFilter类,实现过滤功能。源代码如下:

Java代码 
  1. package edu.cn.filters;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.Filter;  
  7. import javax.servlet.FilterChain;  
  8. import javax.servlet.FilterConfig;  
  9. import javax.servlet.ServletException;  
  10. import javax.servlet.ServletRequest;  
  11. import javax.servlet.ServletResponse;  
  12. import javax.servlet.http.HttpServlet;  
  13.   
  14. public class LoginFilter extends HttpServlet implements Filter {  
  15.     public void doFilter(ServletRequest request, ServletResponse response,  
  16.             FilterChain filterchain) throws IOException, ServletException {  
  17.         String username = request.getParameter("username");  
  18.         String password = request.getParameter("password");  
  19.         if(username.length()==0||password.length()==0){  
  20.             //设定response返回的编码  
  21.             response.setContentType("text/html;charset=gb2312");  
  22.             try{  
  23.                 PrintWriter out = response.getWriter();  
  24.                 out.print("用户名或口令为空,请");  
  25.                 out.print("<a href='Login.jsp'>");  
  26.                 out.print("重新登录");  
  27.                 out.print("</a>!");  
  28.                 out.flush();  
  29.                 return;  
  30.             }catch(Exception e){  
  31.                   
  32.             }  
  33.         }  
  34.         try{  
  35.             filterchain.doFilter(request, response);  
  36.         }catch(Exception e){  
  37.               
  38.         }  
  39.     }  
  40.   
  41.     public void init(FilterConfig config) throws ServletException {  
  42.   
  43.     }  
  44. }  

还需要在配置文件中配置过滤器,此时的配置文件内容为

Java代码 
  1. <?xml version="1.0" encoding="GB2312"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <servlet>  
  8.     <servlet-name>Login</servlet-name>  
  9.     <servlet-class>edu.cn.servlets.Login</servlet-class>  
  10.   </servlet>  
  11.   
  12.   <servlet-mapping>  
  13.     <servlet-name>Login</servlet-name>  
  14.     <url-pattern>/Login</url-pattern>  
  15.   </servlet-mapping>  
  16.   <welcome-file-list>  
  17.     <welcome-file>Login.jsp</welcome-file>  
  18.   </welcome-file-list>  
  19.   <span style="color: #ff0000;"><filter>  
  20.     <filter-name>LoginFilter</filter-name>  
  21.     <filter-class>edu.cn.filters.LoginFilter</filter-class>  
  22.   </filter>  
  23.   <filter-mapping>  
  24.     <filter-name>LoginFilter</filter-name>  
  25.     <url-pattern>/Login</url-pattern>  
  26.   </filter-mapping>  
  27. </span></web-app>  

其中红色的为配置过滤器的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值