我有一个Web应用程序,其中包含几个jsp页面。我的主页是welcome.jsp,应用程序的URL类似于www.test.com
因此,只要用户点击该网址(www.test.com),它就会重定向到www.test.com/welcome.jsp
现在我想如果用户直接想要访问任何其他页面,例如www.test.com/*.jsp,它应该始终重定向到我的主页,即www.test.com/welcome.jsp
请给任何建议如何做。
您可以将以下映射添加到web.xml:
<servlet> <servlet-name>welcome</servlet-name> <jsp-file>welcome.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>welcome</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping>
这会将所有对.jsp文件的请求映射到welcome.jsp。
编辑:
如果您只想在尚未访问过欢迎的jsp的用户上进行重定向,请不要在web.xml文件中使用上面的代码。而是在您的jsp中,在welcome.jsp中的用户会话上设置一个标志:
<c:set scope="session" var="sessionStarted" value="true"/>
然后添加create Filter来重定向它们,如下所示RedirectFilter.java:
RedirectFilter.java
@WebFilter("*.jsp") public class RedirectFilter implements Filter { public void destroy() {} public void init(FilterConfig fConfig) throws ServletException {} /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { Object sessionStarted = ((HttpServletRequest)request).getSession(true).getAttribute("sessionStarted"); if(sessionStarted==null){ request.getServletContext().getRequestDispatcher("welcome.jsp").forward(request, response); }else{ chain.doFilter(request, response); } } }