WEB开发网
开发学院WEB开发Jsp JBuilder2005 Servlet开发之过滤器 阅读

JBuilder2005 Servlet开发之过滤器

 2008-01-05 20:32:04 来源:WEB开发网   
核心提示:过滤器可以在请求到达jsp或Servlet之前或响应返回客户端之前添加一些额外的操作,假如有多个JSP页面和Servlet都需要进行一个相同或相似的操作,JBuilder2005 Servlet开发之过滤器,我们可以把这个操作抽取到一个Servlet过滤器中,并通过匹配路径截获感爱好JSP或Servlet, 按Fini

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

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

   ·编码转换

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

   ·添加统一的标题或脚注

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

   ·进行安全的控制

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

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

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

   通过File->New...->Web->双击Filter Servlet图标启动创建Servlet过滤器的向导,如下图所示:

JBuilder2005 Servlet开发之过滤器
图 7 指定Servlet过滤器的名字


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

   2.指定过滤器的路径匹配模式

JBuilder2005 Servlet开发之过滤器
图 8 指定过滤器的匹配路径模式


   ·Name:logincheckfilter,指定过滤器的名字

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

   按Finish创建此过滤器。

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

   代码清单 4 LoginCheckFilter.java代码

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

31.
32.  } catch (ServletException sx)
33.  {
34.   filterConfig.getServletContext().log(sx.getMessage());
35.  } catch (IOException iox)

Tags:JBuilder Servlet 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接