我需要一个动态的URL页面。假设用户配置文件页面。
例子:
- 用户配置文件(salah)的URL socail.com/salah和页面必须显示salah数据
- 用户配置文件(wael)的URL socail.com/wael和页面必须显示wael数据
您需要一个适合您需要的映射servlet,如下所示:
@WebServlet("/")
然后,当有人输入URL,如yourpage.com/<anything here>
,那么这个servlet将处理请求。要从url获取用户名你需要这样做:
String username = request.getRequestURI().substring(1)
-这将获得没有主机名的请求信息并从中剥离/
。
设置参数(您的info),以便您可以在JSF中检索它:
request.setAttribute("userInfo", getSomeInfoByUsername(username));
request.getRequestDispatcher("faces/index.xhtml").forward(request,response);
然后在JSF文件中,你可以这样做从请求中获取信息:
<h:outputText value="#{requestScope.userInfo}"/>
如果我没有错过任何东西,这些就是你需要的所有部分,从URL获取用户名可能可以用更好的方式检索,但我现在什么也没想到。
关于servlet的更多信息在这里
如果我理解正确的话,你想在请求/会话属性的基础上动态重定向控制:
你可以得到ExternalContext
的帮助。例如:
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(context.getRequestContextPath() + "userProfile.jsf?user=" + user);
user是通过backing bean传递的属性。
我假设您已经使用过JSF。