- 浏览: 13878 次
- 性别:
- 来自: 深圳
最近访客 更多访客>>
最新评论
-
Aether:
Here is include a jsp file!
Thi ...
JSP拾遗(五)——jsp文件包含指令
一个过滤器必须要实现javax.servlet.Filter,并在web.xml里面正确地配置。过滤器可以用来对客户端对资源(servlet或静态资源如html、图片、影音等)的请求、服务端对请求资源的响应进行分别过滤,或者同时过滤。
Filter接口定义了三个方法:
doFilter(ServletRequest request, ServletResponse response, FilterChain chain):处理过滤信息;
init(FilterConfig filterConfig):初始化filter。在web容器加载filter时执行。
destroy():销毁占用资源。在web容器销毁filter时执行。
以下情形是Filter的应用示例:
1、权限
2、日志及核查
3、图像转换
4、数据压缩
5、加密
6、语义解析
7、触发资源访问事件
8、XSL/T应用
9、 数据类型解析(Mime-type chain Filter)
下面举例说明Filter在语义解析方面的应用。在这个示例中,给出了一种伪静态化的实现方法。这里的伪静态化的含义就是,在客户端表现为静态化的页面链接,但服务端并没有对应的静态html页面,仍然是动态地从数据库读取数据。这需要在Filter里面对静态html资源的请求转化为对servlet或jsp的动态调用。
假设我们做一个小说网站。小说的内容通过后台编辑来发布。一篇小说包括基本信息和章节信息来组成,它们之间是一对多的关系。小说的基本信息用小说名称来唯一标识,章节名称用数字1、2、3等来标识,我们通过传入小说名称和章节号到viewBook.jsp来显示小说的章节内容,在访问地址会是这样的格式: http://127.0.0.1/books/viewBook.jsp?name=guichuideng&article=1
但这种格式对应客户端来说是没有意义的,你可能需要提供一个更友好的访问地址如:
http://127.0.0.1/books/guichuiden/1.html
我们通过BookFilter来实现伪静态化的过程。
在web.xml里面配置:
Java代码:<filter>
<filter-name>BookFilter</filter-name>
<filter-class>com.hx.servlet.BookFilter</filter-class>
<init-param>
<param-name>BOOK_URI</param-name>
<param-value>books/</param-value>
</init-param>
<init-param>
<param-name>BOOK_SERVLET</param-name>
<param-value>/books/viewBook.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>BookFilter</filter-name>
<url-pattern>/books/*</url-pattern>
</filter-mapping>
package com.hx.servlet; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class BookFilter implements Filter { /** 小说放置目录 */ private static String bookURI = ""; /** 小说查看Servlet */ private static String bookServlet = ""; public void init(FilterConfig filterConfig) throws ServletException { bookURI = filterConfig.getInitParameter("BOOK_URI"); bookServlet = filterConfig.getInitParameter("BOOK_SERVLET"); } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; String contextPath = request.getContextPath(); String uri = request.getRequestURI(); String resource = uri.substring(contextPath.length() + 1, uri.length()); resource = resource.substring(bookURI.length()); String[] tmp = resource.split("/"); if (tmp.length != 2 || tmp[1].indexOf(".htm") <= 0) { filterChain.doFilter(servletRequest, servletResponse); } else { String bookName = tmp[0]; String article = tmp[1].substring(0, tmp[1].indexOf(".htm")); request.setAttribute("name", bookName); request.setAttribute("article", article); //分发请求 //bookServlet里面根据request.getAttribute("name")和request.getAttribute("article") //分别获取小说名和章节编号 request.getRequestDispatcher(bookServlet).forward(request, response); } } public void destroy() { } }
发表评论
-
Hadoop从零开始(一)——环境准备
2012-07-12 23:17 1465一、Linux虚拟机安装 Hadoop要运行在Uni ... -
JSP拾遗(十四)——单点登录
2009-08-03 09:58 0todo -
JSP拾遗(十三)——文件上传
2009-08-01 19:53 0TODO -
JSP拾遗(十二)——分页查询
2009-08-01 19:52 0TODO -
JSP拾遗(十一)——注册验证
2009-08-01 19:52 0TODO -
JSP拾遗(十)——权限控制
2009-08-01 19:51 0TODO -
JSP拾遗(九)——中文乱码
2009-08-01 19:48 0TODO -
JSP拾遗(八)——Listener
2009-08-01 19:44 2001Javax.servlet中定义了三类监听器:ServletC ... -
JSP拾遗(六)——Servlet
2009-08-01 18:42 931在典型的J2EE中,我们的应用是通过应用服务器(如TOMCAT ... -
JSP拾遗(五)——jsp文件包含指令
2009-07-12 19:36 2140<%@include file=”fileName” ... -
JSP拾遗(四)——jsp页面标签
2009-07-10 22:41 1862第二节中,我们通过JSP编译成的java源文件对比出了 ... -
JSP拾遗(三)——jsp内置对象
2009-07-08 22:40 1190在看本章介绍的jsp ... -
JSP拾遗(二)——从jsp到servlet
2009-06-16 22:08 1755无代码无真相。这里我们来看看,一个简单的jsp页面, ... -
JSP拾遗(一)——初识JSP
2009-06-16 21:53 1138我的java编程学习,即是从jsp开始。 什么是jsp ...
相关推荐
JSP核心技术——JSP引擎内幕(2010).pdf 内除了引擎外,还有jsp标签、线程安全
jsp网络编程——源文件(06——09)帮助
jsp网络编程——源文件(10——11)帮助
jsp网络编程——源文件(12——13),帮助
jsp网络编程——源文件(01——05),帮助
jsp毕业设计——jsp报名系统.zip
JSP网络编程——多媒体(1——3),对出学者很有帮助的。
JSP技巧收集——超多超赞的JSP实用小技巧哦!
jsp毕业设计——jsp网上选课系统.zip
jsp网络编程——多媒体文件(7),对初学者很有帮助的
jsp毕业设计——jsp企业人事管理系统.zip
用JSP写的——企业人力资源系统,希望大家不要错过!经典啊,经典
jsp毕业设计——jsp商品进销存系统.zip
jsp毕业设计——jsp-企业人事管理系统.zip
jsp网络编程——多媒体(chap02) 实用
jsp开发实例——购物车,是一个综合开发实例。比较有针对性。
jsp网络编程——多媒体教程 实用 希望对大家有用
jsp网络编程——多媒体(chap04) 实用,适合初学
jsp网络编程——多媒体文件(6),对初学者有帮助
jsp网络编程——多媒体文件(8),对学习用帮助