Java Beanを使ってログイン処理をします。
コード (JSPファイル:login.jsp)
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Login</h1>
<FORM method="POST" action="Control">
UserName : <INPUT type="text" name="username"><br><br>
Password : <INPUT type="password" name="password"><br><br>
<INPUT type="submit" value="SEND">
<INPUT type="reset" value="RESET">
</FORM>
</body>
</html>
解説
HTMLフォーム画面を用意します。POSTメソッドを用いAction左記はControlサーブレットとします。
コード (JSPファイル:authok.jsp)
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="userbeanses" scope="session" class="webApplication26.UserBean" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Login</h1>
<p><jsp:getProperty name="userbeanses" property="aName" /> さん、ようこそ</p>
</body>
</html>
解説
UserBeanの利用を宣言します。
<jsp:useBean id="userbeanses" scope="session" class="webApplication26.UserBean" />
UserBeanのプロパティ(ログインユーザー名)を読み出し画面に表示します。
<jsp:getProperty name="userbeanses" property="aName" /> さん、ようこそ
コード (JSPファイル: autherror.jsp)
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>エラーです</title>
</head>
<body>
<h1>エラーだよ</h1>
</body>
</html>
コード (サーブレット: control.java)
package webApplication26;
import com.sun.security.auth.login.ConfigFile;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import webApplication26.*;
public class Control extends HttpServlet {
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher rd = null;
rd = getServletConfig().getServletContext().getRequestDispatcher("/login.jsp");
rd.forward(request, response);
//processRequest(request, response);
}
/** 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 {
webApplication26.UserBean ub = null;
ub = new webApplication26.UserBean();
String formun = request.getParameter("username");
String formps = request.getParameter("password");
ub.setaName(formun);
ub.setPassword(formps);
webApplication26.UserAuthBean uab = null;
uab = new webApplication26.UserAuthBean();
HttpSession session = null;
RequestDispatcher rd = null;
if (uab.execute(ub) == true) {
//認証に成功
//セッションオブジェクトを作成
if (checkSession(request) == true) {
//セッションオブジェクトがある場合は獲得
session = request.getSession(false);
} else {
//セッションオブジェクトがない場合は新規作成
session = request.getSession(true);
}
//Beansをセッションオブジェクトに保存
session.setAttribute("userbeanses", ub);
rd = getServletConfig().getServletContext().getRequestDispatcher("/authok.jsp");
} else {
//認証に失敗
rd = getServletConfig().getServletContext().getRequestDispatcher("/autherror.jsp");
}
rd.forward(request, response);
}
/** Returns a short description of the servlet. */
public String getServletInfo() {
return "Short description";
}
//セッションオブジェクトのチェックメソッド
public boolean checkSession(HttpServletRequest req) {
HttpSession session = req.getSession(false);
if (session != null) {
return true;
} else {
return false;
}
}
}
解説 doGet()メソッド
login.jspへリダイレクトします。
解説 doPost()メソッド
UserAuthBeanのインスタンスを作成し、POSTされたユーザー名とパスワードを用いて認証をします。認証ができた場合はセッションオブジェクトにユーザー情報を格納したUserBeanを保存します。その後、/authok.jspにリダイレクトします。
認証に失敗した場合は/autherror.jspにリダイレクトします。
コード (UserAuthBean.java)
package webApplication26;
public class UserAuthBean {
/** Creates a new instance of UserAuthBean */
public UserAuthBean() {
}
public boolean execute(UserBean ub) {
if (ub.getaName().equals("taro") == true && ub.getPassword().equals("taro") == true) {
return true;
} else {
return false;
}
}
}
解説
execute()メソッドにUserBeanのインスタンスを与えると認証をします。認証の結果を戻り値で返します。
コード (Bean: UserBean.java)
package webApplication26;
import java.io.*;
public class UserBean implements Serializable {
private String name;
private String password;
private String address;
/** Creates a new instance of UserBean */
public UserBean() {
name = "No Name";
address = "No Address";
}
public String getaName() {
return name;
}
public void setaName(String na) {
name = na;
}
public String getPassword() {
return password;
}
public void setPassword(String ps) {
password = ps;
}
public String getAddress() {
return address;
}
public void setAddress(String adr) {
address = adr;
}
}
解説
各プロパティ(Name, Password, Address)のゲッターとセッターメソッドを実装します。
コード (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>Control</servlet-name>
<servlet-class>webApplication26.Control</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Control</servlet-name>
<url-pattern>/Control</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>
実行結果
login.aspx画面
ユーザー名とパスワードを入力し、[SEND]ボタンを押します。
認証が成功した場合は下図の画面が表示されます。
認証が失敗した場合は下図の画面が表示されます。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-06
作成日: 2011-02-14