학생성적정보시스템만들기 1(DTO, index, controller.java, 기본 페이지 만들기.jsp)
기존에는 새 프로젝트를 만들 때 다른 설정없이 finish로 마무리 했지만 이번에는 아래와 같이
설정하여 실행 시 ctrl f11이 아니라 Run As를 활용하여 실행하고자 한다.
<학생성적정보시스템 만들기>
위의 조건을 보면, 필요한 화면이 몇개인지 구상 가능하다.
1. 학생정보 목록페이지
2. 학생등록페이지
3.점수등록페이지
4. 학생상세정보 페이지
servlet에서 controller를 몇개를 구상해야하는지 생각해본다.
1. 목록페이지로 이동
2. 학생등록 누르면 학생등록 페이지로 이동
3. 학생등록 이후 버튼 누르면 목록 페이지로
4.점수등록 페이지 이동
5. 점수등록 후 버튼 누르면 목록페이지 이동
6. 학생상세정보 페이지로 이동
7. 데이터 삭제
1. StudentDTO 만들기
public class StudentDTO {
private String name;
private int korSco;
private int engSco;
private int mathSco;
private double avg;
private int age;
private String tel;
private String addr;
getter와 setter 만든다
세과목의 점수를 등록하면 getAvg()를 이용하여
평균점수를 가져올 것이기 때문에 아래와 같이 변경한다.
public double getAvg() {
avg=(korSco+engSco+mathSco)/3.0;
return avg;
}
평균은 세팅할 필요가 없기 때문에 setAvg는 지워준다.
// public void setAvg(double avg) {
// this.avg = (korSco+engSco+mathSco)/3.0;
// }
2. (web.xml) index.jsp를 만들어 곧바로 servlet으로 가도록 만들기
이번에는 *.st를 이용해서 끝에 .st를 붙이면 servlet으로 이동하도록 할 것이다.
<body>
<jsp:forward page="studentList.st"></jsp:forward>
</body>
3. Controller.java (servlet)으로 이동 기본값 세팅하기
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request, response);
}
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
<추가22.08.06>
왜 do get do post로 나뉠까에 대한 해답을 찾았다.
form태그의 경우 doPost방식으로 전달되고,
a태그, jsp:forward 태그의 경우 doGet 방식으로 데이터 전달되기 때문에
그에 맞춰서 doProcess가 실행되도록 만든것이다.
<한글 인코딩 처리>
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String requestURI = request.getRequestURI();
String contextPath = request.getContextPath();
String command = requestURI.substring(contextPath.length());
String page = "";
boolean isRedirect = false;
<학생 목록 페이지로 이동>
if(command.equals("/studentList.st")) {
( index.jsp에서 받은 studentList.st를 실행하면 학생목록페이지로
이동하도록 설정함)
page = "student_List.jsp";
}
if(isRedirect) {
response.sendRedirect(page);
}
else {
RequestDispatcher dispatcher = request.getRequestDispatcher(page);
dispatcher.forward(request, response);
}
}
4. 학생목록페이지 만들기 student_List.jsp
<table>
<tr>
<td>No</td>
<td>학생명</td>
<td>국어점수</td>
<td>영어점수</td>
<td>수학점수</td>
<td>평균</td>
<td>점수입력</td>
<td>삭제</td>
</tr>
(추후에 taglibs 이용하여 데이터를 받도록 설정할 것이라 기본 세팅만 해놓은 상태이다)
</table>
<div align="center" >
<input type="button" value="학생등록" onclick="location.href='regStudentForm.st';">
(학생등록버튼을 누르면 학생등록 페이지 컨트롤러로 이동하도록 만들었다.)
</div>
5. 학생등록페이지 만들기 regStudentFrom.jsp
controller에 아래와 같이 작성한다.
위에서 받은 속성값을 받아서 등록 페이지로 이동하도록 하였다.
else if(command.equals("/regStudentForm.st")) {
page="regStudentForm.jsp";
regStudentForm.jsp를 만들고 form 입력 자료를 들고 넘어가야 하기 때문에 form태그로 감싼다.
<form action="regStudent.st" method="post">
<table>
<tr>
<td>이름</td>
<td> <input type="text" name="name" required>
</td>
</tr>
<tr>
<td>나이</td>
<td> <input type="text" name="age">
</td>
</tr>
<tr>
<td>연락처</td>
<td>
<select name="tel">
<option value="010">010</option>
<option value="011">011</option>
<option value="019">019</option>
</select>
<input type="text" name="tel">
<input type="text" name="tel">
</td>
</tr>
<tr>
<td>주소</td>
<td><input type="text" name="addr"> </td>
</tr>
</table>
<div align="center">
<input type="submit" value="기본정보 입력">
</div>
</form>
6. 점수등록 페이지 만들기
<form action="sendScore.st" method="post">
<div align="center">${name } 학생의 성적을 입력합니다.</div>
(★이름으로 각 데이터를 구분하기 때문에 이름 데이터를 가져가야한다)<input type="hidden" name="name" value="${name }">
<table>
<tr>
<td>국어</td>
<td> <input type="text" name="korSco"> </td>
</tr>
<tr>
<td>영어</td>
<td> <input type="text" name="engSco"> </td>
</tr>
<tr>
<td>수학</td>
<td> <input type="text" name="mathSco"> </td>
</tr>
</table>
<div align="center">
<input type="submit" value="점수등록">
</div>
</form>
7. 학생상세정보 페이지 만들기
<table>
(위 페이지처럼 나오도록 기본 설정만 해 놓은 상태 추후에 태그 추가할 예정이다)
<tr>
<td>이름</td>
<td></td>
<td>나이</td>
<td></td>
</tr>
<tr>
<td>연락처</td>
<td></td>
<td>주소</td>
<td></td>
</tr>
<tr>
<td>국어점수</td>
<td></td>
<td>영어점수</td>
<td></td>
</tr>
<tr>
<td>수학점수</td>
<td></td>
<td>평균</td>
<td></td>
</tr>
</table>
<input type="button" value="뒤로가기" onclick="location.href='studentList.st';">
(상세보기에서는 데이터를 넘기거나 할 필요 없기 때문에 사이트에서 곧바로 목록으로 넘어가도록 함)