6 開発環境の整備

(文責:阿部)

6.1 開発環境の統一

共同開発をするにあたって、無用のトラブル(ある人の環境で動くものが、別の人の環境だと動かなくなるなど)を防ぐためにメンバーそれぞれの開発環境を統一した。 作業は顔を合わせて行い、細かい設定なども同時にした。

また、CVSでバージョン管理を行いeclipseと連携させた。ファイルの競合を防ぎ、マージや過去のバックアップ復元を手軽にできるこのシステムは、作業を分担したとはいえ、共同開発に欠かせない。

6.2 サーブレットサンプル作成

モデルの実装時と同様に、ServletやJSPにも統一された書式が必要なためサンプルをつくり、それを基準にして実装を進めた。

リスト 6.2.1 サーブレットサンプル
/*
 * Created on 2003/06/05
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package mirumiru.servlet.teacher;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import mirumiru.model.Lecture;
import mirumiru.servlet.MiruMiruServlet;

/**
 * @author macchan
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class LoginServlet extends MiruMiruServlet {

	/****************************************
	 * constants
	 ****************************************/

	private static final String PASSWORD = "password";
	private static final String LECTURE_NAME = "lectureName";

	/****************************************
	 * Application Logics
	 ****************************************/

	/**
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	protected void doPost(HttpServletRequest req, HttpServletResponse res)
		throws ServletException, IOException {

		// input
		req.setCharacterEncoding("Shift_JIS");
		String lectureName = req.getParameter(LECTURE_NAME);
		String password = req.getParameter(PASSWORD);

		if (lectureName == null) { // input validate check

		}

		// application logic
		System.out.println(
			"DEBUG: "
				+ "name="
				+ lectureName
				+ ",password="
				+ password
				+ "でアプリに委託");
		Lecture lecture = getApp().loginLecture(lectureName, password);

		// output
		ServletContext servletContext = getServletContext();

		if (lecture != null) { //	success
			HttpSession session = req.getSession(true);
			session.setAttribute("lecture", lecture);
			RequestDispatcher reqDispatcher =
				servletContext.getRequestDispatcher("/jsp/teacher/lecture.jsp");
			reqDispatcher.forward(req, res);
		} else { // failure
			RequestDispatcher reqDispatcher =
				servletContext.getRequestDispatcher(
					"/jsp/teacher/loginfailure.jsp");
			reqDispatcher.forward(req, res);
		}
	}

}
リスト 6.2.2 JSPサンプル
		
<!--
	lecture.jsp
	出題画面
	
	@author macchan
	@vertion $Id: index_c6.html,v 1.1 2005/04/07 07:28:19 gackt Exp $
-->

<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<%@ page contentType="text/html;charset=Shift_JIS" 
	import="java.util.*,mirumiru.app.*,mirumiru.model.*" %>
<jsp:useBean id="lecture" class="Lecture" scope="session" />

<html>
	<head>
		<title>OK</title>
	</head>
	
	<body bgcolor="#FFFFFF">
		成功しました。
		<%=lecture.getName()%>のサポートを開始。
	</body>	
</html>