ユーザ認証を行うサーブレット
////////////////////////////////////////////////////////////////////////////////
//  << sv143.java >>
//
// サーブレット(4):セッション管理(応用 ユーザ認証)
//
//  ユーザ名とパスワードでユーザ認証を行う。
//  セッションに属性LOGINを設定し、認証された場合、LOGINの値はtrue、
//  認証されない場合、falseとする。
//    認証後、認証を必要とするサーブレットの実行が行える。
//
//  sv143.java :認証を行うサーブレット
//  sv143x.java:認証がないと実行されないサーブレット
//
// ●起動法
//  (1)Javaファイル(sv143.java, sv143x.java)をコンパイルし、
//    classファイル(sv143.class, sv143x.class)を
//       作成する。
//       ただし、Javaファイル(sv143.java, sv143x.java)は、
//       %CATALINA_HOME%\webapps\SV\WEB-INF\classes\sv143.java
//       %CATALINA_HOME%\webapps\SV\WEB-INF\classes\sv143x.java
//     classファイル(sv143.class, sv143x.class)は、
//       %CATALINA_HOME%\webapps\SV\WEB-INF\classes\sv143.class
//       %CATALINA_HOME%\webapps\SV\WEB-INF\classes\sv143x.class
//       に保存する。
//    (2)入力フォームで、
//         URL(http://localhost:8080/SV/servlet/sv143)
//       を指定する。
//
////////////////////////////////////////////////////////////////////////////////

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class sv143 extends HttpServlet {
  public void doPost(HttpServletRequest request, HttpServletResponse response)
                     throws ServletException,IOException {

    // セッションの取得。
    HttpSession hs = request.getSession(true);

    // 入力フォームからユーザ名を取得。入力がない場合、nullが返される。
    String p1 = request.getParameter("f1");

    // 入力フォームからパスワードを取得。入力がない場合、nullが返される。
    String p2 = request.getParameter("f2");

    // コンテンツタイプの指定。
    response.setContentType("text/html; charset=Shift_JIS");

    // HTML文書の出力。
    PrintWriter pw = response.getWriter();
    pw.println("<html>"                                    
         + "<head><title>サーブレット</title></head>"  
         + "<body>"
         + "ユーザ認証を行うサーブレット<br>"
         + "<form action=http://localhost:8080/SV/servlet/sv143 method=POST>"
         + "ユーザ名:<input type=text name=f1><br>"
         + "パスワード:<input type=password name=f2><br>"
         + "<input type=submit value=送信>"
         + "</form>");
 
    // ユーザ名とパスワードのチェック。
    if( (p1 != null)&&(p2 != null) ) {
      if( (p1.equals("userid"))&&(p2.equals("password")) ) {
        pw.println("認証されました<br>");
        hs.setAttribute("LOGIN","true");
      } else {
        pw.println("認証できません");
        hs.setAttribute("LOGIN","false");
      }
    }

    pw.println("</body>"                                   
             + "</html>");                                 
  }
}
ユーザ認証が必要なサーブレット
////////////////////////////////////////////////////////////////////////////////
//  << sv143x.java >>
//
// サーブレット(4):セッション管理(応用 ユーザ認証)
//
//   認証を受けないと利用できず、認証を受けると利用できるサーブレット
//
////////////////////////////////////////////////////////////////////////////////

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class sv143x extends HttpServlet {
  public void doPost(HttpServletRequest request, HttpServletResponse response)
                     throws ServletException,IOException {

    // セッションの取得。
    HttpSession hs = request.getSession(true);

    // 属性LOGINを取得。
    String s = (String)hs.getAttribute("LOGIN");

    // コンテンツタイプの指定。
    response.setContentType("text/html; charset=Shift_JIS");

    // HTML文書の出力。
    PrintWriter pw = response.getWriter();
    pw.println("<html>\n"                                    
             + "<head><title>サーブレット</title></head>\n"  
             + "<body>\n");                                    

    // 属性LOGINのチェック。
    if( (s != null)&&(s.equals("true")) ) {
      pw.println("認証が必要なサーブレットの出力です<br>");
      //
      // 認証を受けたときの処理を記述する。                       
      //
    } else {
      pw.println("認証されていません。認証を受けて下さい。<br>");
    }

    pw.println("</body>"                                   
             + "</html>");          
  }
}
入力フォーム
<form action=http://localhost:8080/SV/servlet/sv143x method=POST>
  <input type=submit value=実行1>
</form>
<form action=http://localhost:8080/SV/servlet/sv143 method=POST>
  <input type=submit value=実行2>
</form>
実行結果

実行1後


実行2後




送信をクリック後


実行1後