创建Servlet过滤器的向导
创始人
2024-04-13 05:30:25
0

过滤器可以在请求到达JSP或Servlet之前或响应返回客户端之前添加一些额外的操作。如果有多个JSP页面和Servlet都需要进行一个相同或相似的操作,我们可以把这个操作抽取到一个Servlet过滤器中,并通过匹配路径截获感兴趣JSP或Servlet。

我们举几个典型的过滤器应用的例子,读者可以推而广之:

◆编码转换
乱码问题困扰了不少的Web应用程序开发者,这是因为基于Java的Web应用程序可能运行于不同的Web应用程序器、操作系统平台或硬件服务器上,不同的环境有自己默认的编码类型,在数据的转换过程中不同的默认编码是乱码问题的始作俑者,所以在开发JSP时常常需要将数据进行编码转换。我们可以创建一个Servlet过滤器在请求进入服务程序前都进行编码转换。

◆添加统一的标题或脚注
有些网页需要添加统一的标题头或脚注,可以通过Servlet过滤器在响应返回到客户端前给网页添加上统一的标题和脚注。

◆进行安全的控制
登录系统后,一般都会将用户信息对象放入到session中,可以通过Servlet过滤器在请求进入JSP或Servlet前判断session中是否有用户信息对象,如果有,则说明用户已经登录,如果没有,则说明用户还没有登录,将请求重定向到登录页面。

本节所提供的Servlet过滤器就是为了实现安全控制,下面我们就来开发这个Servlet。

1.打开创建Servlet过滤器的向导。

和创建标准的Servlet相似,在这步里指定过滤器的类名和包名。在Class name中输入LoginCheckFilter,包名依就为bookstore.Servlet。按Next到下一步。

2.指定过滤器的路径匹配模式
◆Name:logincheckfilter,指定过滤器的名字
◆URL pattern:/*,指定过滤器路径匹配模式,这里我们使过滤器对所有的请求都进行过滤。

按Finish创建此过滤器。

打开向导创建的LoginCheckFilter.java文件,并录入粗体所示的代码,如下所示:

  1. package bookstore.servlet;  
  2. …  
  3. public class LoginCheckFilter  
  4. extends HttpServlet implements Filter  
  5. {  
  6. public void doFilter(ServletRequest request, ServletResponse 
    response, FilterChain filterChain)  
  7. {  
  8. try  
  9. {  
  10. //进行请求和响应的类型转换  
  11. HttpServletRequest httpRequest = (HttpServletRequest) request;  
  12. HttpServletResponse httpResponse = (HttpServletResponse) response;  
  13. boolean isValid = true;  
  14. String uriStr = httpRequest.getRequestURI().toUpperCase();  
  15. if (uriStr.indexOf("LOGIN.JSP") == -1 &&  
  16. uriStr.indexOf("SWITCH.JSP") == -1 &&  
  17. httpRequest.getSession().getAttribute("ses_userBean") == null)  
  18. {  
  19. isValid = false;  
  20. }  
  21. if (isValid)  
  22. {  
  23. filterChain.doFilter(request, response);  
  24. } else  
  25. {  
  26. httpResponse.sendRedirect("/webModule/login.jsp");  
  27. }  
  28. } catch (ServletException sx)  
  29. {  
  30. filterConfig.getServletContext().log(sx.getMessage());  
  31. } catch (IOException iox)  
  32. {  
  33. filterConfig.getServletContext().log(iox.getMessage());  
  34. }  
  35. }  
  36. …  

【编辑推荐】

  1. Servlet中的doFilter方法
  2. 配置Servlet过滤器
  3. 安装Servlet和JSP开发工具
  4. Java Servlet入门教程
  5. Servlet过滤器是什么

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...