`
明天会更浩
  • 浏览: 5530 次
  • 性别: Icon_minigender_1
社区版块
存档分类

struts2页面伪静态

阅读更多

                                                    myeye1.1博客系统简介
                                  
     说明:
        系统使用 mysql+ssh框架搭建而成,其原型为www.iteye.com,本系统为模仿其博客系统部分功能的练习作品,一方面是为了加强3
    大框架的组合运用能力,另一方面向给本人提供很多帮助的www.iteye.com网站致敬.
   
   1.0版本实现功能。
      
        1、用户可以通过登录页面登录到自己的博客首页,首页显示信息有用户头像、性别、昵称、访问过我的用户列表、用户博客
       标题等信息列表、等。
      
        2、用户可以发布自己的博客,发表博客包括、标题、博客类型(下拉框)、博客分类(下拉框)、博客正文、博客标签(标签
        可使用多个,用“,”分割)。
      
        3、用户可以通过博客列表上方的管理博客列表实现对博客的管理,管理博客页面使用分页显示的方式显示10条博客标题的列表,
        用户可以通过每一条博客后边的编辑,删除按钮实现对每一个博客的编辑。
      
        4、实现点击博客标题列表显示该条博客的信息 。 
      
        5、当其他用户访问我的空间点击查看文章内容后增加文章访问次数。
      
        6、 自己或者其他用户访问文章都可以再文章下面的回复内实现文章的回复功能。   
      
        7、用户可以编辑自定义博客类型列表,实现对类型表的删除和添加。
      
        8、用户可以对自己博客的评论进行管理,仿iteye评论只能查看、删除,不能编辑修改。   
       
        9、实现用户管理自己的信息 ,注册时只提供填写部分信息,如用户头像(刚注册使用默认头像、用户自我简介等都未填写,用户都可以再 在这个
        模块完善自己的信息。         
       
        10、实现用户注册功能,使用javamail对用户的注册进行确认,目前只支持qq邮箱。地址选择使用ajax三级联动,同时用户名和
        验证码的检测同样使用ajax局部刷新技术,避免用户名重复和验证码老是出错(当用户输完验证码如果错误,输入框变红);
-------------------------------------------------------------------------------------------------------------------------------------   
        11、所有的博客展示页面使用伪静态第一便于SEO网络收索,第二是地址更加美观,由原来的/showblog?blogid=1123变成了/showblog/1123.html
        但是大量使用伪静态会使得网页加载速度不佳,并发量减少,所有只有博客展示页面使用了伪静态。

        

     struts2实现页面伪静态是使用urlrewrite这个开源框架,其原理就是Filter过滤器,首先urlrewrite会按照你在urlrewrite.xml的配置过滤一些指定地址的访问,比如你在urlrewrite.xml中配置只拦截/xxxx/yyy.html,当然/xxxx/yyy.html是你想要的地址,事先写到jsp中的,在未使用伪静态前的地址是/xxxx?id=yyy当拦截到/xxxx/yyy.html后会根据一些规则(正则表达式)将地址映射成/xxxx?id=yyy然后转发以便action处理,先前的?带值得url就不存在了,这样便于seo也较美观,但是大量使用会使得网页加载速度不佳,并发量减少。所有使用需谨慎。

 

     struts2实现伪静态关键步骤如下:

         1、添加jar包,urlrewrite-3.1.0.jar

 

          2、在web.xml中配置UrlRewriterFilter,配置代码如下

                <!--伪静态配置  -->
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <init-param>
            <param-name>logLevel</param-name>
            <param-value>WARN</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
       <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

     

         3、编写urlrewrite.xml,名字必须一致且放到WEB-INF/下,和web.xml同目录格式如下

          <?xml version="1.0" encoding="utf-8"?>
          <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
           "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
           <urlrewrite>
               <rule>
             <from>^/(\w+)/(\d+)\.html$</from>
             <to type="forward" >/$1?blogid=$2</to>
             </rule>
             </urlrewrite>

                需要拦截多种格式的url则添加多个  <rule>即可。

              <from>^/(\w+)/(\d+)\.html$</from>表示需要拦截的uir过滤器会通过这个正则匹配访问的地址,如我的博客标题的url为

            <a href="...../showblog/223.html">博客标题</a>

              当拦截后映射成?带参数的形式$1匹配第一个正则即(\w+)$2匹配第一个正则即(\d+)最后生产的地址为/showblog?blogid=222

 

 

              需要注意有:

                 urlrewrite的过滤器必须在struts之前,且struts的配置在 <filter-mapping>下加上 <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>   

                即struts2的配置如下:<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher> 
  </filter-mapping>

 

       疑问:第一次访问的时候感觉明显速度很慢?不知道是我的问题还是大家都会有这样的问题,之后访问就和没有伪静态之前的速度一样了,求解。

 

1
0
分享到:
评论

相关推荐

    struts2+spring3+hibernate4+urlrewrite

    本框架为struts2+spring3+hibernate4+urlrewrite(伪静态地址) Struts采用通配,web-inf下的urlrewrite.xml为伪静态配置文件,跳转到struts.xml进行对应

    Url Rewrite Filter实现页面伪静态化,简单实例及步骤

    UrlRewrite,在创建的时候,选择勾选“Add JSTL libraries to WEB-INF/lib folder ”(注:因为项目中会用到jstl 核心标签库),然后再把urlrewrite-2.6.0.jar导入到项目Bulid Path路径下,最后再加入struts框架。

    hibernate3+struts2+spring2+freemarker 主流技术架构 实例

    包括: +----doc +-----jeecms基础概念.txt ...• 采用伪静态结合页面缓存技术,可自定义路径结构,无需urlrewrite • 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录

    jeecms-src.rar_com.jeec_freemarker_freemarker struts2_单点登录

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content...采用伪静态页面技术,可自定义路径结构,无需urlrewrite 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录

    jeecmsv2.3.2 内容管理系统 (hibernate3+struts2+spring2+freemarker)

    JEECMS是JavaEE版网站管理系统(Java Enterprise ...· 采用伪静态结合页面缓存技术,可自定义路径结构,无需urlrewrite · 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录

    jee cms学习文档

    · 采用伪静态页面缓存技术,管理方便,速度可与静态页面相媲美,用户自定义路径结构,无需urlrewrite · 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录

    JEECMS3.0.4使用教程

    在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好性 采用伪静态页面技术,可自定义路径结构,无需urlrewrite 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录。

    JEEcms目前国内的cms领跑者

    JEECSM是JavaEE版网站管理系统(Java Enterprise Edition ...·采用伪静态页面技术,可自定义路径结构,无需urlrewrite ·轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登陆!

    JEECMS v2.3.2 正式版用源码

    JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content...采用伪静态页面技术,可自定义路径结构,无需urlrewrite 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录

    jeecms3.0.4

    在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好性 ,采用伪静态页面技术,可自定义路径结构,无需urlrewrite ,轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录。

    jeecms-2.4.2(源码+安装包)

    JEECMS是国内Java版开源网站内容管理系统(java cms、jsp ...· 采用伪静态页面技术,可自定义路径结构,无需urlrewrite · 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录

    JEECMS 2.3.1 Beta 系统程序

    采用伪静态页面技术,可自定义路径结构,无需urlrewrite 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录 JEECMS v2.3.1版于2009年3月23日发布,这是JEECMS自发布以来...

    JEECMS v2.2 beta 贺岁版

    采用伪静态页面技术,可自定义路径结构,无需urlrewrite 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单点登录 JEECMS v2.2 beta版对以下方面进行了更新: ·降低运行环境...

    validate验证帮助文档

    Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。...

    WODECMS开源内容管理系统 v1.1.zip

    动态,伪静态,纯HTML三种方式 后台一键切换,模板或后台智能获取各模块对应内容页或列表页URL地址。 DB读写分离切换 读写频繁,容易阻塞的需求,可以使用主从库读写分离,mysql类switchDB方法自由切换。 高性能扩展...

    WODECMS开源内容管理系统

    动态,伪静态,纯HTML三种方式 后台一键切换,模板或后台智能获取各模块对应内容页或列表页URL地址。 DB读写分离切换 读写频繁,容易阻塞的需求,可以使用主从库读写分离,mysql类switchDB方法自由切换。 高性能扩展 ...

    超级有影响力霸气的Java面试题大全文档

    静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面&lt;%@ include file="included.htm" %&gt; 26、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都...

    java 面试题 总结

    静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面&lt;%@ include file="included.htm" %&gt; 23、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都...

Global site tag (gtag.js) - Google Analytics