Servlets 从HttpServletRequest获取美化的URL
我正在使用org.omnifaces.filter.HttpFilter在无人登录时重定向登录页面上的访问者Servlets 从HttpServletRequest获取美化的URL,servlets,servlet-filters,omnifaces,prettyfaces,Servlets,Servlet Filters,Omnifaces,Prettyfaces,我正在使用org.omnifaces.filter.HttpFilter在无人登录时重定向登录页面上的访问者 @Override public void doFilter(HttpServletRequest req, HttpServletResponse res, HttpSession session, FilterChain chain) throws ServletException, IOException { String loginUrl = "/myapp/login?
@Override
public void doFilter(HttpServletRequest req, HttpServletResponse res, HttpSession session, FilterChain chain) throws ServletException, IOException {
String loginUrl = "/myapp/login?redirect_url=" + req.getRequestURL();
boolean loggedIn = (req.getRemoteUser() != null);
if (loggedIn) {
chain.doFilter(req, res); // So, just continue request.
} else {
Servlets.facesRedirect(req, res, loginUrl);
}
}
我想将未登录的用户重定向到/login?重定向\u url=上一页\u url
问题是,我所有的URL都被漂亮的面孔美化了,当我尝试使用HttpServletRequest.getRequestURI获取前一个URL时,它给出了丑陋的URL
例如,我配置了一个url/myapp/my-page-3,其中显示/views/module1/page3.xhtml
但是HttpServletRequest.getRequestURI提供的是/views/module1/page3.xhtml,而不是/myapp/my-page-3
有什么想法吗?当基于servlet的URL重写引擎使用UnderCovers RequestDispatcher向前转发传入的友好URL请求到所需的资源时,您可以使用request.getAttributeRequestDispatcher.forward\u request\u URI查找原始请求URI
String originalRequestURI = request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);
由于您已经在使用OmniFaces,因此可以使用ServletsgetRequestURI自动检测并在出现时返回它,否则返回默认的HttpServletRequestgetRequestURI
因为您已经在使用OmniFaces。。Servlets.getRequestURIreq是否返回预期的URI?
String requestURI = Servlets.getRequestURI(request);