博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb开发分享:urlrewriter
阅读量:2432 次
发布时间:2019-05-10

本文共 2000 字,大约阅读时间需要 6 分钟。

在Java Web开发中,有时候为了提高安全性(隐藏技术的实现,我们可以通过Url重写可以实现技术的隐藏,可以有效的避免一些参数名、ID等完全暴露在用户面前)或者提高网站的移植性和方便用户使用(用户不用关心你网站的页面的地址变更,后台方法改动的话,可以保证前台的页面地址部分不用改)会采用地址重写功能,将动态地址伪静态。这样还可以优化搜索引擎的抓取。
在Java中实现地址重写是通过过滤器常用的forward()和sendRedirect()来实现url重写。实现细节可以参考官方文档: 。现在说说最简单的基本实践:简单的三步走。

第一歩:在web应用中导入需要的jar包,使用Maven就是在Maven配置pom.xml加入urlrewrite包依赖。

org.tuckey
urlrewritefilter
ro.isdc.wro4j
wro4j-core
第二步,使用过滤器自然要在
web.xml中加入filter的配置,filter-mapping的位置要考虑好,通常应该是在比较前面的位置,只在编码和本地化之类的过滤器格式之后。

UrlRewriteFilter
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
UrlRewriteFilter
/*
REQUEST
FORWARD

第三步:在WEB-INF目录下建一个urlrewrite.xml文件,通过正则表达式编写地址重写的规则。urlrewrite.xml简单来说就是配置rule和outbound-rule。当用户访问服务器时的URL会与rule结点比较。rule中form的规则默认使用的是正则表达式来匹配的,如果符合规则就会按照下面to结点中的配置对其进行跳转,其默认是forward跳转。当服务器需要给用户返回的页面中的url重写是通过outbound-rule来实现的(页面中必须使用<%= response.encodeURL或者<c:url ),配置规则和rule大致相同。下面给个简单配置例子。

/
home
/j_security_check
/j_security_check
/images/**
/images/$1
/scripts/**
/scripts/$1
/styles/**
/styles/$1
/login*
/login.jsp
/logout*
/logout.jsp
^([^?]*)/([^?/\.]+)(\?.*)?$
$1/$2.action$3
^(.*)\.action(\?.*)?$
true">$1$2
大功告成!开发过程中有问题可以把filter的debug level打开,查看更多debug的log分析。

转载地址:http://abtmb.baihongyu.com/

你可能感兴趣的文章
Java知识体系最强总结(2020版)
查看>>
MyBatis与Hibernate区别
查看>>
笔记︱风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)
查看>>
MySQL存储引擎之MyISAM与InnoDB区别
查看>>
Python numpy小练习
查看>>
Linux命令英文解释(按英文字母顺序)
查看>>
秋招面试准备-数据库知识
查看>>
数据分析岗-机器学习相关知识
查看>>
分类模型的效果评估
查看>>
深入理解什么是Java双亲委派模型
查看>>
MySQL优化Limit查询语句
查看>>
轻松入门MySQL主从复制原理
查看>>
SpringCloud全家桶---Zuul网关
查看>>
基于zuul和ribbon的灰度发布方案
查看>>
JVM常用垃圾收集器参数说明
查看>>
MySQL索引基础知识梳理
查看>>
MySQL事务ACID底层实现原理
查看>>
关于MySQL wait_timeout问题记录
查看>>
基础算法面试题---如何用栈实现队列
查看>>
基础算法面试题---如何用队列实现栈(1)
查看>>