我想在标准的servlet web.xml配置中使用类似于下面的spring框架的URL映射。
@RequestMapping(value="/students/{username}", method=RequestMethod.GET)
public String deleteSpitter(@PathVariable String username) {
...
...
}
我想要像这两样的URL映射:
/生/麦克
/生/约翰
要映射到同一个servlet,我也可以以某种方式读取“Mike”和“John”作为参数。如果它可以扩展到多个级别,如下面的例子那么对我来说非常有用:
/生/ {schoolname} / {studentname} 像:
/生/麦吉尔/麦克
/生/ UBC /约翰
答案 0 :(得分:1)
查看UrlRewriteFilter:http://www.tuckey.org/urlrewrite/
在http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/guide.html的示例中,请查看“清理网址”示例。
答案 1 :(得分:1)
JAX-RS(又名Jersey)可以使用servlet应用程序执行类似的操作(尽管不是只是 servlet)
答案 2 :(得分:1)
您可以将标准servlet映射到通配符路径,并使用HttpServletRequest.getPathInfo()方法访问请求的pathInfo部分。
servlet应该像这样获取路径信息
package com.acme;
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String info = request.getPathInfo();
}
}
你应该像你这样在web.xml中映射servlet
<servlet>
<servlet-name>test-servlet</servlet-name>
<servlet-class>com.acme.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test-servlet</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>
如果您请求网址'/ test / mcgill / mike',路径信息将为'/ mcgill / mike'。解析路径信息取决于您。
如果您使用符合Java EE 6的容器,您还应该查看JAX-RS specification以构建RESTful Web服务。