サーブレットを用いてログインと注文を受け付けるアプリケーションを作成します。
プログラム
コード (Login.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="LoginServlet">
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>
コード (LoginServlet.java)
package webApplication28;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** 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 {
}
/** 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 (request.getParameter("username") == un){
if (un.equals(request.getParameter("username")) == true
&& pw.equals(request.getParameter("password")) == true) {
//セッション情報の新規作成
HttpSession session = request.getSession(true);
//セッションオブジェクトに保存する
session.setAttribute("username", un);
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>BookStore BS</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<h3>ようこそ!" + un + "さん</h3>");
out.println("<p><a href=\"./ProductServlet\">本の商品一覧を見る</a></p>");
out.println("<p><a href=\"./LoginServlet\">ログイン画面に戻る</a>");
out.println("</BODY>");
out.println("</HTML>");
} else {
out.println("NG パスワードまたはユーザー名が違います");
}
}
/** Returns a short description of the servlet. */
public String getServletInfo() {
return "Short description";
}
}
コード (OrderServlet.java)
package webApplication28;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class OrderServlet 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 {
}
/** 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 {
String un;
HttpSession session = request.getSession(false);
//セッションオブジェクトの獲得確認
if (session == null || session.getAttribute("username") == null) {
//セッションが取得できなければエラー
return;
} else {
//セッションが取得できた場合はカウンタを取り出す
un = (String) session.getAttribute("username");
}
String books[] = request.getParameterValues("books");
response.setContentType("text/html; charset=shift-jis");
PrintWriter out = response.getWriter();
//クライアントに送るHTML
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>注文リスト</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>注文リスト</H1>");
out.println("<p>" + un + "さんの注文リスト</p>");
out.println("<BR><HR><BR>");
out.println("<UL>");
//Form情報を取得
out.println("<table border=\"1\" width=\"500\""
+" cellspacing=\"0\" cellpadding=\"5\" bordercolor=\"#333333\">");
if (books != null) {
out.println("<tr>");
out.println("<th>タイトル");
out.println("</tr>");
for (int i = 0; i < books.length; i++) {
out.println("<tr>");
out.println("<th>" + books[i] + "<BR>");
out.println("</tr>");
}
} else {
out.println("バスケットは空です");
}
out.println("</table>");
out.println("<BR>");
out.println("</UL>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
/** Returns a short description of the servlet. */
public String getServletInfo() {
return "Short description";
}
}
コード (ProductServlet.java)
package webApplication28;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ProductServlet 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 {
HttpSession session = request.getSession(false);
response.setContentType("text/html; charset=shift-jis");
PrintWriter out = response.getWriter();
//セッションオブジェクトの獲得確認
if (session == null || session.getAttribute("username") == null) {
//セッションが取得できなければエラー
out.println("Cookieが無効です。Cookieを有効にしてからもう一度ログインしなおしてください。");
} else {
//セッションが取得できた場合はリストを表示
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>BookStore BS</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<h3>ようこそ!" + session.getAttribute("username") + "さん</h3>");
out.println("<FORM method=\"POST\" action=\"OrderServlet\">");
out.println(
"<INPUT type=\"checkbox\" name=\"books\" value=\"JustTomcat\" >JustTomcat<BR>");
out.println("<INPUT type=\"checkbox\" name=\"books\" value=\"WebService\">WebService<BR>");
out.println("<INPUT type=\"checkbox\" name=\"books\" value=\"Stepjava\">Stepjava<BR>");
out.println("<INPUT type=\"checkbox\" name=\"books\" value=\"Servlet\">Servlet<BR>");
out.println("<INPUT type=\"checkbox\" name=\"books\" value=\"JSP\">JSP<BR><BR>");
out.println("<INPUT type=\"submit\" value=\"SEND\">");
out.println("<INPUT type=\"reset\" value=\"RESET\">");
out.println("</BODY>");
out.println("</HTML>");
}
}
/** 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 {
}
/** Returns a short description of the servlet. */
public String getServletInfo() {
return "Short description";
}
}
コード (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>LoginServlet</servlet-name>
<servlet-class>webApplication28.LoginServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>taro</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>taro</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>ProductServlet</servlet-name>
<servlet-class>webApplication28.ProductServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>OrderServlet</servlet-name>
<servlet-class>webApplication28.OrderServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProductServlet</servlet-name>
<url-pattern>/ProductServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>OrderServlet</servlet-name>
<url-pattern>/OrderServlet</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>
実行結果
実行するとログイン画面が表示されます。ユーザー名とパスワードを入力し[SEND]ボタンを押します。
ログインが成功すると数のメニュー画面が表示されます。[本の商品一覧を見る]リンクをクリックします。
本の一覧が表示されます。
注文した本のチェックボックスにチェックを付け[SEND]ボタンを押します。
注文した本が表組みされて表示されます。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2023-12-20
作成日: 2011-02-14