イントロダクション
Java ServletでFilterの実装を祖小名いました。
<filter>
<filter-name>docoFilter</filter-name>
<filter-class>filter.DocoFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>docoFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log = Logger.getLogger("logFilter");
log.info("*** フィルター処理開始");
}
@Override
public void destroy() {
log.info("*** フィルター処理終了");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
log.info("** Before doFilter ");
log.info("ContentType: " + request.getContentType());
log.info("** Url: " + req.getRequestURI());
long start = System.currentTimeMillis();
System.out.println("Milliseconds in: " + start);
chain.doFilter(request, response);
long end = System.currentTimeMillis();
log.info("** After doFilter / " + (end - start));
}
初回のリクエストは問題なく、初期画面が表示されるが、次のログイン後の画面が表示されない。。。
下のような実装をしました。
@Override
protected void doGet(HttpServletRequest request
, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String pass = request.getParameter("pass");
// ユーザークラス
User user = new User(name, pass);
// ログイン処理
LoginLogic logic = new LoginLogic();
boolean isLogin = logic.execute(user);
if (isLogin) {
HttpSession sess = request.getSession();
sess.setAttribute("loginUser", user);
}
System.out.println("LoginServlet");
// フォワード
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/loginResult.jsp");
dispatcher.forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest request
, HttpServletResponse response) throws ServletException, IOException {
}
原因
ズバリ、doGetとdoPostのメソッドを間違えた。。。
確認した内容
- doFilterを実装していたので、Filterにエラーがあると思ったが、問題なく。。。
- 画面の遷移先URLが正しいか確認
- 表示先のJSPにエラーがないか確認
結局のところは、凡ミスでした。。。。
でわでわ。。。