フィルターの使い方を勉強中です。次のように url-pattern を指定して、アプリケーション全体のフィルターを作成しました。
<filter>
<display-name>AuthenticationFilter</display-name>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>learn.filters.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
welome-file を次のように設定しました。
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/home.jsp</welcome-file>
</welcome-file-list>
私のdoFilterコードは次のとおりです。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse res=(HttpServletResponse)response;
String username=(String)req.getSession().getAttribute("username");
if(username==null && req.getParameter("username")==null){
req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
}else{
String user=req.getParameter("username");
String pass=req.getParameter("password");
if(user==null){
req.getRequestDispatcher("/WEB-INF/jsp/home.jsp").forward(request, response);
}else{
if(user.equals(pass)){
req.getSession().setAttribute("username", user);
res.sendRedirect("home");
}
}
}
このコードは正常に機能し、ユーザーを認証しますが、すべてのリクエストがログイン ページを返すため、login.jsp ページにある追加のリソース (js ファイルなど) はインポートされません。つまり、ユーザーが認証されていない場合、キャプチャ、js、css ファイルなどの Web アプリのリソースにアクセスできません。ご意見をお聞かせください