温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何创建Servlet过滤器

发布时间:2021-07-14 15:44:50 来源:亿速云 阅读:211 作者:chen 栏目:编程语言

这篇文章主要讲解了“如何创建Servlet过滤器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何创建Servlet过滤器”吧!

过滤器可以在请求到达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. …  

感谢各位的阅读,以上就是“如何创建Servlet过滤器”的内容了,经过本文的学习后,相信大家对如何创建Servlet过滤器这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI