一个 web 专案开始开发时就要想到网页的 url 优化,良好简洁的 url 会对 SEO 非常友善,在公司一个专案中到了后期才进行 url 的优化,可以说这是开发人员的失职,但是还是能够更改的,我们经常使用的 springMVC 框架就可以使用 REST 风格的 url 来对 url 进行一些优化,struts 也有相应的优化美化 url 的外挂,但是我们在专案中使用了 url 美化通用的方法,那就是 urlrewrite(url 重写), 这个外挂既可以使用在 springmvc 框架中也可以使用在 strust2 的专案中,也可以使用在传统的 web 专案中,为什么呢?
在 springmvc 中的 rest 风格只能使用在 springmvc 专案中,struts 的外挂只能使用在 struts2 的专案中,
两种框架的核心都是拦截请求,springmvc 是根据 controller 来发射请求,struts2 使用使用 action 来转发请求,他们都在专案中都配置了 filter 来拦截请求,来实现访问的拦截,
在使用 urlwrite 的时候我们也会来配置 filter 拦截器,来拦截我们指定的请求,比如
我们在首页中使用了/index 来拦截, 只要拦截到该请求,我们就让这个请求转发到,我们只当的路径/Client/Sinday_toIndex
还有第二种,就是带有引数的请求,比如/HeightST?currentPage=1&type=1
这个时候我们就要 urlrewrite.xml 中配置相应的请求,例:
([a-zA-Z]{1,}) 是未知的引数必须配合小括号使用,第一个就是 $1, 第二个就是 $2
匹配规则预设使用的是正规表示式,只有符合这个正则才能拦截到
to 标签中的 type 属性规定了请求再次传送的型别,forward 是转发,一般都是使用这个属性,因为 forward 后的请求是不会显示转发 url 的,
要想在这个地方使用 forward,必须在 web.xml 中配置 forward 的,
这个 url 重写普遍都存在一个弊端,那就是如果页面引用的样式如果是../这样的形势的话,必然找不到央视建议 写成根路径,或者在 head 便签里面新增,base 子标签,href 指定为专案的根路径