ホームページのすべてのページをリダイレクトします
質問
私はJSPページを少数含んでいるWebアプリケーションを持っています。そして私のホームページはwelcome.jspであり、アプリケーションのURLはwww.test.com
のようなものです。だから、ユーザーがURLを打つたびに(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"/>
.
次に、この1つの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);
}
}
}
. 所属していません StackOverflow