Java サーブレット(基礎編⑤ フィルタークラス)
■サーブレットのフィルタークラス
前回までの内容はこちら→Java サーブレット(基礎編④ JavaBeans)
フィルタークラスとは?
サーブレットのdoGet()メソッドやdoPost()メソッドの前後で自動実行されるクラス
【基本構文】
@WebFilter("/URLパターン")
public class フィルタークラス名 implements Filter {
public EncodeFilter() {
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//サーブレットクラス実行前の処理を記述
chain.doFilter(request, response);
//サーブレットクラス実行後の処理を記述
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
【フィルタークラスの作成方法】
Eclipseなら簡単に作成可能
対象のプロジェクトで「右クリック」⇒「新規」⇒「フィルター」⇒「任意のパケージ名とクラス名を入力」⇒「完了」押下
【使用例】
・サーブレットクラス
package action;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import beans.LoginBean;
@WebServlet("/LoginAction")
public class LoginAction extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginAction() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/login.jsp");
dispatcher.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//フィルタークラスに記述する為、コメントアウト
//request.setCharacterEncoding("UTF-8");
String userName = request.getParameter("userName");
String pass = request.getParameter("pass");
LoginBean lb = new LoginBean(userName, pass);
request.setAttribute("lb", lb);
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/menu.jsp");
dispatcher.forward(request, response);
}
}
・フィルタークラス
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
@WebFilter("/LoginAction")
public class EncodeFilter implements Filter {
public EncodeFilter() {
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//フィルタークラスに文字エンコードを記述
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}