■AddMember.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* @author student
*
*/
public class AddMember extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// パラメーターの受け取り
String name = req.getParameter("name");
if(name == null || name.length() == 0) {
throw new ServletException();
}
// セッションオブジェクトの取得
HttpSession session = req.getSession(true);
// Result オブジェクトをセッションオブジェクトに設定
Circle01 circle = new Circle01();
Result01 result;
try {
result = circle.addMember(name);
} catch (CircleException e) {
throw new ServletException();
}
session.setAttribute("result", result);
// JSP にフォーワード
getServletContext().getRequestDispatcher("/jsp/circle01.jsp").forward(req, res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req, res);
}
}
------------------------------------------------------
■Circle01.java
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class Circle01 {
private Map members = new TreeMap();
private int currentMaxMemberCode = 0;
private DecimalFormat df = new DecimalFormat("0000");
public Result01 addMember(String name) throws CircleException {
Result01 ret = new Result01();
// currentMaxMemberCode++;
String code = "ME" + df.format(++currentMaxMemberCode);
members.put(code, new Member01(code, name));
ret.addInfo(createInfoElement("会員番号", code));
return ret;
}
public Result01 removeMember(String code) throws NoMemberException {
Result01 ret = new Result01();
Member01 member = (Member01) members.get(code);
if (member == null) {
ret.setCode(Result01.NO_MEMBER);
throw new NoMemberException();
// return ret;
}
members.remove(code);
return ret;
}
public Result01 showMembers() throws NoMemberException {
if (members.size() == 0) {
throw new NoMemberException();
}
Result01 ret = new Result01();
ret.addInfo(createInfoElement("会員番号", "名前"));
Iterator it = members.values().iterator();
while (it.hasNext()) {
Member01 member = (Member01) it.next();
ret.addInfo(createInfoElement(member.getCode(), member.getName()));
}
return ret;
}
/**
* @param string
* @param string2
* @return
*/
private List createInfoElement(String string1, String string2) {
List info = new ArrayList();
info.add(string1);
info.add(string2);
return info;
}
}
------------------------------------------------------
■CircleException.java
/**
* @author student
*/
public class CircleException extends Exception {
}
------------------------------------------------------
■Member01.java
/**
* 会員を管理します。
* @author student
* @version
* @since
*
* TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
public class Member01 {
private String code;
private String name;
/**
* @param name
*/
public Member01(String name) {
this.name = name;
}
/**
* @param code 会員番号
* @param name 会員名
*/
public Member01(String code, String name) {
this.code = code;
this.name = name;
}
/**
* @return code を戻します。
*/
public String getCode() {
return code;
}
/**
* @param code code を設定。
*/
private void setCode(String code) {
this.code = code;
}
/**
* @return name を戻します。
*/
public String getName() {
return name;
}
/**
* @param name name を設定。
*/
private void setName(String name) {
this.name = name;
}
}
------------------------------------------------------
■NoMemberException.java
/**
* @author student
*
*/
public class NoMemberException extends CircleException {
}
------------------------------------------------------
■Result01.java
import java.util.LinkedList;
import java.util.List;
public class Result01 {
public static final int OK = 0;
public static final int NO_MEMBER = -1;
private int code = OK;
private List info = new LinkedList();
/**
* @return code を戻します。
*/
public int getCode() {
return code;
}
/**
* @param code code を設定。
*/
public void setCode(int code) {
this.code = code;
}
/**
* @return info を戻します。
*/
public List getInfo() {
return info;
}
/**
* @param info info を設定。
*/
public void setInfo(List info) {
this.info = info;
}
/**
* @param row info を設定。
*/
public void addInfo(List row) {
this.info.add(row);
}
}
------------------------------------------------------
■addMember.jsp
<%@ page contentType="text/html;charset=EUC-JP" %>
------------------------------------------------------
■circle01.jsp
<%@ page contentType="text/html;charset=EUC-JP" %>
------------------------------------------------------
■web.xml
invoker
org.apache.catalina.servlets.InvokerServlet
debug
0
2
invoker
/servlet/*
------------------------------------------------------