java - 在 WEB-INF 中创建 XML 文件

标签 java jsp jakarta-ee servlets

我正在使用http://tuckey.org/urlrewrite/要创建我的网站 map ,目前我有很多链接,我无法手动编写所有规则,例如:

<rule>
   <from>^/about-us$</from>
   <to type="redirect">/myWeb/Controller?page=ForwardAbout</to>
</rule>

Tuckey 在 WEB-INF 文件夹中使用名为 urlrewrite.xml 的文件。

重定向规则可以来自数据库,例如:每当创建文章时,将一行插入到所需的链接,例如:

/about-potatoes

规则将变成这样

<rule>
   <from>^/about-us$</from>
   <to type="redirect">/myWeb/Controller?page=ForwardPotatoes</to>
</rule>

然后应编写urlrewrite.xml,以便应用重定向到新文章。

主要问题是:如何在 WEB-INF 中创建这个urlrewrite.xml

第二个问题:假设每周都有新文章,每周创建这个urlrewrite.xml来更新规则,是否可以应用规则而不需要重新 -再次部署网络应用程序?

最佳答案

在大多数应用程序服务器上,您无法动态更改 Web 应用程序内的任何内容,除非重新打包并重新部署应用程序。

即使您可以更改文件,例如在未打包的 war 中,tuckey 可能仍只会读取该文件一次,并且除非重新启动应用程序,否则不会采用新规则。

为什么不制定一个更动态的规则来匹配所有请求?在重写规则中,您可以使用反向引用,例如'$1​​' 将匹配括号之间的第一个正则表达式,例如:

<rule>
   <from>^/about-(.*)$</from>
   <to type="redirect">/myWeb/Controller?page=Forward$1</to>
</rule>

关于java - 在 WEB-INF 中创建 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29929959/

相关文章:

Java 调试 : Source not found

javascript - 如何在不重新加载的情况下获取jsp页面的响应?

hibernate - org.jboss.weld.exceptions.IllegalArgumentException : WELD-001456: Argument resolvedBean must not be null

java - 当从@transactional公共(public)方法调用私有(private)方法时,私有(private)方法中会使用相同的事务还是不使用事务

java - 绑定(bind)两个 JComboBox 过滤器

java - 到下一个 5 秒的毫秒数

java - 我应该使用哪种 jSTL?

java - 如何让Servlet识别调用者JSP和 session

java - 调用 @Singleton bean 的方法

java - EJB lite 是否由容器管理?