■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" %>
会員登録 ${result.info}
会員削除
会員照会
------------------------------------------------------ ■web.xml invoker org.apache.catalina.servlets.InvokerServlet debug 0 2 invoker /servlet/* ------------------------------------------------------