当用户点击以下网址时,我希望这样:
http://host:8080/AppName/ServletName/Param1/Param2
应该转到名为ServletName
的servlet,Param1
和Param2
成为请求参数。我在ruby项目中看到过这些网址。是否有可能在Java?
答案 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。