ベースとなるサーブレットを作り、そのサーブレットを継承しさえすれば共通処理を全く考慮せずともログ出力とログインチェックを行うようにしたいのですが、可能でしょうか?
はい、可能です。
適切な方法だと思います。
可能であればベースサーブレット側はどのような実装になるでしょうか?
ベースサーブレットのdoGet、doPostに最初と最後に共通処理を記述し、子サーブレットでビジネスロジックを記述するためのabstractなメソッドを定義すればよいと思います。
【ベースサーブレット】
java
1
2import java.io.IOException;
3
4import javax.servlet.ServletException;
5import javax.servlet.http.HttpServlet;
6import javax.servlet.http.HttpServletRequest;
7import javax.servlet.http.HttpServletResponse;
8
9public abstract class BaseServlet extends HttpServlet {
10
11 @Override
12 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
13 // doGet、doPostともに共通のメイン処理を呼び出す
14 this.execMain(req, resp);
15 }
16
17 @Override
18 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
19 // doGet、doPostともに共通のメイン処理を呼び出す
20 this.execMain(req, resp);
21 }
22
23 private void execMain(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
24
25 // 事前に行う共通処理を実装する
26
27 // 同クラスを継承した子サーブレット側に記述されたビジネスロジックが実行される
28 this.execLogic(req, resp);
29
30 // 事後に行う共通処理を実装する
31
32 }
33
34 36
37 abstract void execLogic(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
38}
39
【子サーブレット】
java
1
2import java.io.IOException;
3
4import javax.servlet.ServletException;
5import javax.servlet.http.HttpServletRequest;
6import javax.servlet.http.HttpServletResponse;
7
8// BaseServletを継承している
9public class ChildServlet extends BaseServlet {
10
11 @Override
12 void execLogic(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
13 // 子サーブレット毎のビジネスロジックを実装する
14 }
15
16}
17
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/25 15:01