重写URL并从JSP中的url获取值

时间:2014-05-10 03:22:25

标签: jsp url servlets

如何重写JSP URL,例如:

myhost/UserMVC/index.jsp?id=5&&name=tome

myhost/UserMVC/index/5/tome

然后获取5tome

2 个答案:

答案 0 :(得分:1)

使用此UrlRewriteFilter http://tuckey.org/urlrewrite/并编写如下规则。

<urlrewrite>
  <rule>
    <from>^/UserMVC/index/(.*)/(.*)$</from>
    <to>/UserMVC/index.jsp?id=$1&&name=$2</to>
  </rule>
</urlrewrite>

在某些情况下,您需要使用outbound-rule标记。 UrlRewriteFilter有很好的文档。

答案 1 :(得分:0)

在web.xml中,您可以选择侦听哪种URL模式。在WEB-INF/web.xml

中定义映射时,可以这样做
<servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.stackoverflow.TestServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/test</url-pattern>
</servlet-mapping>

任何进入/ test / *的HTTP请求都将由TestServlet处理。在该类中,您可以使用HttpServletRequest来访问上下文路径。

public class TestServlet implements javax.servlet.Filter{
    // ...
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
        FilterChain chain) throws IOException, ServletException {
    try {
        HttpServletRequest hReq = (HttpServletRequest) req;
        String path = hReq.getContextPath();

    } catch (Exception e) {
        // TODO: handle exception
    }


}
    // ...
}

现在您可以按照自己喜欢的方式处理路径。正如@Tiny建议的那样,你可能最好使用像Jersey这样的REST框架。