用urlrewrite及mapping方式实现静态化
来源:互联网 发布:大数据时代在线 编辑:程序博客网 时间:2024/06/06 05:26
用Article表来演示下页面静态化,在此做记录,便于今后参考。这里是基于SSH2架构来演示的。
1.演示工程整体结构概览
这里我引入了htdz_lib这么个User Libraliry,包含了SSH2整合所需的jar以及urlrewrite.jar。
同时urlrewrite.xml也已创建于WEB-INF下。
2.Article表预览
我们给Article表增加个HadStatic字段,用以标识此文章是否已静态化。
我们不建议添加一篇文章就直接生成对应的静态页面,如果都没有用户来阅读,服务器就徒增了大量html文件,浪费资源。
所以我们一般采用访问生成策略:
用户访问某文章,判断服务器是否存在此文章对应的静态页,存在则直接重定向到此静态页面,不存在则执行静态化,然后再重定向到生成的静态页。
然而每次通过IO去查找文件是否存在,耗费性能,所以像Article这类表加个HadStatic字段,直接判断字段的值来决定是否静态化显得合理多了。
3.配置web.xml
其它你懂的,就是修改了struts2的过滤器的<filter-mapping/>,增加了几个<dispatcher/>,WHY?后面会讲到。
另外再加了个urlrewrite的过滤器。
4.配置applicationContext.xml
其他dataSource、sessionFactory、事务等配置,不是本帖的重点,略去了。
这里我在<beans/>中用了default-autowire="byName"让spring自动装配依赖的bean了。
5.下面贴上各层的代码
以下是ArticleDao.java
再是ArticleService.java及ArticleServiceImpl.java
然后是ArticleAction.java
这里省略了getter、setter方法。
CreateStaticHTML.java
这里我们采用了mapping方式实现静态化。另外还有用freemarker作为模版来实现静态化的,
将在《用urlrewrite及mapping方式实现静态化》内做介绍。建议采用mappding方式。
6.struts.xml
7.页面articleList.jsp及article.jsp
下面是articleList.jsp
下面是article.jsp
这里我们先看下静态化的目标,总结如下:
1.直接返回已存在的静态页,减少服务端压力;
2.隐藏真实访问地址,增强系统安全性;
3.增加网站被搜索引擎爬虫捕获的概率;
为了实现2和3的目标,我们还使用了urlrewrite伪静态技术,把articleList.jsp的“查看”链接编写为
<a href="article_${article.articleID}_${article.hadStatic}.html" target="_blank">查 看</a>。
8.在urlrewrite.xml里配置了转向链接
前面我们不是在web.xml里配置了urlrewrite过滤器嘛,这里的article_(/d+)_([0-1]).html的请求被过滤成
showArticle.action?articleID=$1&hadStatic=$2
这里的$1指第一个位置正则表达式的值,$2指第二个位置正则表达式的值,
所以当我们点击页面的链接
<a href="article_${article.articleID}_${article.hadStatic}.html" target="_blank">查 看</a>
后台实际去访问了
showArticle.action?articleID=${article.articleID}&hadStatic=${article.hadStatic}。
struts2的过滤器只过滤直接来自客户端.action的request请求。当我们访问*.html时,通过urlrewrite过滤器在服务端用fowward转成.action请求,struts2是不会处理的。所以我们前面修改了struts2的过滤器,增加了<dispatcher/>
至此,彻底完成了静态化的目标,看下效果。
浏览器输入http://localhost:8080/listArticles.action,返回articleList.jsp显示文章列表,
鼠标移到第一篇文章的“查看”链接处,查看状态栏显示地址
说明请求的articleID是1,hadStatic是0,
urlrewrite在服务端将其forward成showArticle.action?articleID=1&hadStatic=0。
生成静态页后重定向到静态页article_1.html
再次刷新http://localhost:8080/listArticles.action
鼠标移动到第一篇文章的“查看”链接处,看状态栏显示。
说明此文章已静态化,点击后将直接访问html页面,我们的工程里已经存在这个HTML页面了
- 用urlrewrite及mapping方式实现静态化
- URLRewrite 实现URL地址伪静态化
- 使用URLRewrite 实现URL伪静态化
- 使用UrlRewrite实现URL伪静态化
- java urlrewrite实现伪静态化
- UrlRewrite---实现url伪静态化
- URLRewrite实现URL地址伪静态化
- URLRewrite实现url地址伪静态化
- UrlRewrite---实现url伪静态化
- URLRewrite 实现URL地址伪静态化
- java urlrewrite实现伪静态化
- 使用UrlRewrite实现url伪静态化
- UrlRewrite实现伪静态
- UrlRewrite 网页静态化
- UrlRewrite实现url伪静态
- 使用URLRewrite 实现URL伪静态化1
- 使用URLRewrite 实现URL伪静态化2
- 1使用URLRewrite实现url地址伪静态化(转载)
- Google啊,你伤不起啊伤不起
- 找二维数组鞍点
- B 树、B- 树、B+ 树、B* 树
- 中国剩余定理
- java 获取页面编码
- 用urlrewrite及mapping方式实现静态化
- C语言面试题大汇总
- HTTP协议状态码详解(HTTP Status Code)
- 利用boost库进行字符串与文本处理
- [转]C++底层
- @override出错
- PSAC中的overview与summary——DO-178B/ED-12B学习笔记之十二
- JSP中输出Excel表格
- 此博已封,转向cnblogs(www.cnblogs.com/slave_wc)