【问题标题】:URL Format Query String with /带有 / 的 URL 格式查询字符串
【发布时间】:2014-05-21 06:34:38
【问题描述】:

有谁知道如何使用斜杠作为查询字符串。什么 我想做的是使用网址:

http://sample.com/urltest/?id=23423ea342

显示为

http://sample.com/urltest/23423ea342

并将其处理到 Servlet 或 Struts Action 类上

【问题讨论】:

  • 这被称为 URL 重写,但你的问题对于 SO 来说太宽泛了。所以最好的办法是在谷歌上搜索这些术语并从中了解更多信息。
  • 相反,您应该拥有正确的 Servlet 的 Action 类,其方法映射到 http://sample.com/urltest/ 并接受 id 作为请求参数
  • 您可以使用正则表达式并将 {'?id='} 替换为 ''(空字符串)。 vogella.com/tutorials/JavaRegularExpressions/article.html
  • 我不想要一个?在查询字符串中,它应该只有斜杠。有什么教程可以让我对此有所了解吗?

标签: java string url slash


【解决方案1】:

将此添加到.htaccess 文件

RewriteEngine On
RewriteRule ^(.*)$ /sample.com/urltest/?id=$1 [L]

【讨论】:

  • 您还应该解释这是做什么的,否则 OP 不会从这个答案中学到任何东西。
  • 除了上面的评论,你还应该提到上面的RewriteRule会重写任何请求,因为它是.*^$在这种情况下是不必要的) .
  • 我见过很多支付网关或报告工具使用这种 url 例如gateway.com/userauth/txn678257/reportxml
【解决方案2】:

好吧,如果我了解 OP 的要求,我最简单的方法是使用 JAX-RS,也就是用于 RESTful Web 服务的 Java API

这里是 JAX-RS oracle 教程:http://docs.oracle.com/javaee/6/tutorial/doc/giepu.html

这是您的示例 URL 的示例服务类:

@Path("/")
public class testClass {

    @GET
    @Path("/{id}/")
    @Produces(MediaType.APPLICATION_JSON)
    public Response testMethod(@PathParam(value = "id") String id) {

        return Response.ok().entity("HELLO! You sent me this id: " + id).build();

    }

} 

假设 /urltest 是为您的基本 url 配置的路径,将使用以下 URL 调用此服务: http://sample.com/urltest/23423ea342

“23423ea342”将成为您服务的{id} 参数

【讨论】:

    猜你喜欢
    • 2013-05-11
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2012-05-12
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多