Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在web.xml中通过URL传递参数?_Java_Servlets_Servlet Filters_Web.xml - Fatal编程技术网

Java 如何在web.xml中通过URL传递参数?

Java 如何在web.xml中通过URL传递参数?,java,servlets,servlet-filters,web.xml,Java,Servlets,Servlet Filters,Web.xml,我需要这样的东西: /{paramvalue}/url 获取param value的值,并将url指向servlet 例如: /约书亚/简介 /玛丽/留言 “/josua/”和“/mary/”是我需要获取的参数 然后我需要将/{username}/profile映射到ProfileServlet.class,将/{username}/messages映射到MessagesServlet.class 有什么办法可以做到这一点吗?听起来有点像。如果你真的能胜任,我建议你研究一下这些框架中的任何一个(

我需要这样的东西:

/{paramvalue}/url

获取param value的值,并将url指向servlet

例如:

/约书亚/简介 /玛丽/留言

“/josua/”和“/mary/”是我需要获取的参数

然后我需要将/{username}/profile映射到ProfileServlet.class,将/{username}/messages映射到MessagesServlet.class

有什么办法可以做到这一点吗?

听起来有点像。如果你真的能胜任,我建议你研究一下这些框架中的任何一个(对于JSF),然后


此外,这不是我们在Java中通常的做法,这可能有一些缺点,您应该能够将URL映射到
web.xml
中的过滤器。然后使用
HttpServletRequest
方法,如
getRequestURI()
继续。此外,研究
regex
并尝试利用它来开发这个系统是很好的,因为(python web开发框架)实现了它。

过滤器映射到
/*
上,它在
doFilter()
方法中基本上执行以下操作

String[] pathParams = ((HttpServletRequest) request).getRequestURI().substring(1).split("/", 2);
String userName = pathParams[0];
String servletUrl = pathParams[1];

request.setAttribute("userName", userName);
request.getRequestDispatcher("/" + servletUrl).forward(request, response);

并在
/profile/*
上映射
ProfileServlet
,在
/messages/*
上映射
MessagesServlet
。在这两个servlet中,用户名应该可以通过
request.getAttribute(“用户名”)

获得,谢谢BalusC。事实上,我完全失去了联系。