当前位置: 代码迷 >> JavaScript >> JavaEE学习札记之JSP+Servlet(二)
  详细解决方案

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

热度:524   发布时间:2012-12-24 10:43:13.0
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>??

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

1 楼 mixer_a 2012-05-24  
关注一下,最近也在学习这个
2 楼 bestchenwu 2012-05-24  
兄弟,这些文章自己写写看看就好了,没必要老是要人工置顶到首页吧?
3 楼 290845534 2012-05-24  
bestchenwu 写道
兄弟,这些文章自己写写看看就好了,没必要老是要人工置顶到首页吧?

+ 1
4 楼 liveonnoevil 2012-05-24  
太少了讲的。。。
5 楼 longfor5 2012-05-24  
username.length()==0||password.length()==0  这样判断字符串有些不合适吧。如果字符串是null。。。
6 楼 xianwu13 2012-05-25  
讲的很没有水平,鉴定垃圾,抄袭,没有重点
  相关解决方案