java - 如何改变jsp中的url模式

标签 java php .htaccess jsp

我是 jsp 新手,我需要将 url 映射到新模式,这是我在 php 中所做的就是更改 .htaccess 文件中的 url 模式

RewriteEngine on
RewriteRule ^([A-Z]+)$ go.php?code=$1

因此网址的结果将是 www.site.com/{XXXX}

之后我可以通过GET请求获取XXXX的值。

我如何在jsp中做同样的事情? 我通过修改 web.xml 文件中的模式尝试了一些情况

<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>servlet3</servlet-name>
<servlet-class>thServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>servlet3</servlet-name>
<url-pattern>/s/*</url-pattern>
</servlet-mapping>

但是要获取“* ”的值,我需要解析请求的url。

request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/")

所以我的问题是如何像在php中一样直接获取请求的值

最佳答案

我一直在使用 URLRewriteFilter http://tuckey.org/urlrewrite/对于这个要求。如果您使用 Maven 作为依赖管理,首先添加 Maven 依赖:

<dependency>
    <groupId>org.tuckey</groupId>
    <artifactId>urlrewritefilter</artifactId>
    <version>4.0.3</version>
</dependency>

或者,添加urlrewritefilter-4.0.3.jar到您的 WEB-INF/lib 文件夹。

然后修改您的 web.xml 文件:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

最后在WEB-INF文件夹中添加一个urlrewrite.xml。 然后,您可以根据需要向该文件添加规则(示例取自 http://tuckey.org/urlrewrite/ )。更多示例可参见 here .

<rule>
    <from>^/tidy/page$</from>
    <to>/old/url/scheme/page.jsp</to>
</rule>
<outbound-rule>
    <from>^/old/url/scheme/page.jsp$</from>
    <to>/tidy/page</to>
</outbound-rule>

任何对 /tidy/page 的传入请求都将透明地转发到 /old/url/scheme/page.jsp

所以在你的情况下,规则将是这样的:

<rule>
    <from>^([A-Z]+)$</from>
    <to>go.php?code=$1</to>
</rule>

关于java - 如何改变jsp中的url模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38175998/

相关文章:

php - 使用表格使用 MySQL 数据和 PHP 创建格式化的 excel 电子表格

php - 使用 htaccess 使 url 不区分大小写

java - ReplaceAll 正则表达式 替换$

java - PDFBox 可以签署所有 'Approval Signatures' 而不是总是将第一个签名设为 'Certified' 吗?

javascript - 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

.htaccess - 删除 SSL 后的浏览器警告

.htaccess - 如果 url 包含特定字符串,htaccess 重定向

java - 在 jlist 上显示弹出菜单

构造函数中的 Java 可重写调用

php-fpm 访问日志应包含从 php 应用程序设置的自定义变量