サーブレットで認証するコードの紹介です。
コード (HTMLフォーム)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<FORM method="POST" action="CertServlet">
UserName : <INPUT type="text" name="username"><br><br>
Password : <INPUT type="text" name="password"><br><br>
<INPUT type="submit" value="SEND">
<INPUT type="reset" value="RESET">
</FORM>
</body>
</html>
解説
<FORM method="POST" action="CertServlet">
POSTメソッドのHTMLフォームを用意します。Action先はサーブレットにします。
HTMLフォーム内にはユーザー名を入力するテキストボックス、パスワードを入力するテキストボックス、リセットボタン、サブミットボタンを配置します。
コード (サーブレット:CertServlet.java)
package webApplication8;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CertServlet extends HttpServlet {
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletConfig config = getServletConfig();
// Servlet 初期化パラメータ情報
String un = config.getInitParameter("username");
String pw = config.getInitParameter("password");
response.setContentType("text/html; charset=shift-jis");
PrintWriter out = response.getWriter();
if (un.equals(request.getParameter("username")) == true
&& pw.equals(request.getParameter("password")) == true) {
out.println("OK 認証に成功しました");
} else {
out.println("NG パスワードまたはユーザー名が違います");
}
out.close();
}
/** Returns a short description of the servlet. */
public String getServletInfo() {
return "Short description";
}
}
解説
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost()メソッドを実装します。
ServletConfig config = getServletConfig();
String un = config.getInitParameter("username");
String pw = config.getInitParameter("password");
ServletConfigを取得し、getInitparameter()メソッドを呼び出し、web.xmlに記載されたユーザー名とパスワード情報を取得します。
response.setContentType("text/html; charset=shift-jis");
setContentType()メソッドを呼び出しContentType、キャラクターセットを設定します。
PrintWriter out = response.getWriter();
getWriter()メソッドを呼び出し、PrintWriterを取得します。
if (un.equals(request.getParameter("username")) == true
&& pw.equals(request.getParameter("password")) == true) {
out.println("OK 認証に成功しました");
} else {
out.println("NG パスワードまたはユーザー名が違います");
}
HTMLフォームに入力されたユーザー名とパスワードとweb.xmlに記載されたユーザー名とパスワードが一致しているか確認します。一致していれば認証に成功した棟のメッセージを表示し、一致していなかった場合はパスワード、ユーザー名が違う旨のメッセージを表示します。
コード (web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>CertServlet</servlet-name>
<servlet-class>webApplication8.CertServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>administrator</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>administrator</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>CertServlet</servlet-name>
<url-pattern>/CertServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2023-12-20
作成日: 2011-02-10