我可以在java中使用自定义servlet URL吗?

时间:2011-08-09 12:08:56

标签: java servlets

当用户点击以下网址时,我希望这样:

http://host:8080/AppName/ServletName/Param1/Param2

应该转到名为ServletName的servlet,Param1Param2成为请求参数。我在ruby项目中看到过这些网址。是否有可能在Java?

6 个答案:

答案 0 :(得分:3)

如果您使用的是Spring MVC,则可以映射@Controller并在@PathVariable中以#{3}}的形式访问参数。

@Controller
public class MyController {

  @RequestMapping("/{param1}/{param2})
  public Response get(@PathVariable("param1") String param1, @PathVariable("param2") String param2) {
    //method body
  }

}

答案 1 :(得分:2)

是的,您可以使用servlet执行类似的操作。您需要在web.xml中设置servlet映射,如下所示:

<servlet-mapping>
    <servlet-name>ServletName</servlet-name>
    <url-pattern>/ServletName/*</url-pattern>
</servlet-mapping>

获取所有请求,并在servlet中解析HttpServletRequest.getPathInfo()的结果。

答案 2 :(得分:1)

HttpServletRequest.getContextpath()似乎很有趣,尽管我自己从未使用过它。

答案 3 :(得分:0)

当然可以,它被称为REST,你可以在这里得到一个介绍:http://download.oracle.com/javaee/6/tutorial/doc/giepu.html

您还可以将servlet映射到通配路径,这样您就可以将servlet映射到/ServletName/*并从request.getPathInfo()获取/Param1/Param2部分。

答案 4 :(得分:0)

您也可以使用URL rewriting实现此目的。还有一个可用的servlet容器,它与名为UrlRewriteFilter的ServletFilter一起使用。

我个人使用Tapestry5本身以这种方式对参数进行编码。

答案 5 :(得分:0)

我还没有这样做,即使没有看过,但试试这个

首先像这样在

中映射web.xml中的url
    <servlet>
    <servlet-name>ServletName</servlet-name>
    <servlet-class>ServletName</servlet-class>
</servlet>
    <servlet-mapping>
    <servlet-name>ServletName</servlet-name>
    <url-pattern>/ServletName/Param1/Param2</url-pattern>
</servlet-mapping>

然后使用获取字符串的url   String url=request.getRequestURI();

然后你可以拆分并获得param1和param2。