[영화 예매 시스템]
movie_part1.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>영화 예매 시스템</title>
</head>
<body>
<form id="frm" method="post" action="./movie_part2.do">
<p>영화 예매 시스템</p>
고객명 : <input type="text" name="mname"><br>
연락처 : <input type="text" name="mtel" maxlength="11"> "-"없이 숫자만 입력<br><br>
<p>영화 선택</p>
<ol>
<li><input type="radio" name="movie_name" value="히트맨2">히트맨2</li>
<li><input type="radio" name="movie_name" value="써니데이">써니데이</li>
<li><input type="radio" name="movie_name" value="브루탈리스트">브루탈리스트</li>
<li><input type="radio" name="movie_name" value="히어">히어</li>
<li><input type="radio" name="movie_name" value="하얼빈">하얼빈</li>
</ol>
예매일자 : <input type="date" name="mdate"><br>
<input type="button" value="예매하기" onclick="movieok()">
</form>
</body>
<script>
var movieok = function(){
if(frm.mname.value==""){
alert("고객명을 입력하세요!");
frm.mname.focus();
} else if(frm.mtel.value==""){
alert("연락처를 입력하세요!");
frm.mtel.focus();
} else if(isNaN(frm.mtel.value)){
alert("연락처는 숫자만 입력하세요!");
frm.mtel.focus();
} else if(frm.mtel.value.length < 10){
alert("연락처를 제대로 입력하세요!");
frm.mtel.focus();
} else if(frm.movie_name.value==""){
alert("영화를 선택하세요!");
} else if(frm.mdate.value==""){
alert("날짜를 선택하세요!");
}
else{
frm.submit();
}
}
</script>
</html>
movie_part2.java
package web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class movie_part2 extends HttpServlet {
private static final long serialVersionUID = 1L;
PrintWriter pw = null;
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");
try {
this.pw = res.getWriter();
String mname = req.getParameter("mname");
String mtel = req.getParameter("mtel");
String movie_name = req.getParameter("movie_name");
String mdate = req.getParameter("mdate");
String redate = mdate.replace("-", "");
// System.out.println("예약 날짜 : " + redate);
// System.out.println("오늘 날짜 : " + this.today());
if(Integer.parseInt(redate) < Integer.parseInt(this.today())) {
this.pw.write("<script>"
+ "alert('오늘 이후의 날짜로 예약해주세요.');"
+ "history.go(-1);"
+ "</script>");
}else {
ArrayList<String> data = new ArrayList<String>();
data.add(mname);
data.add(mtel);
data.add(movie_name);
data.add(mdate);
req.setAttribute("data", data);
RequestDispatcher rd = req.getRequestDispatcher("./movie_part2.jsp");
rd.forward(req, res);
}
}catch (Exception e) {
this.pw.write("<script>"
+ "alert('올바른 접근이 아닙니다.');"
+ "history.go(-1);"
+ "</script>");
}finally {
this.pw.close();
}
}
public String today() {
Date day = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
return sf.format(day);
}
}
movie_part2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.ArrayList"%>
<%
ArrayList<String> data = (ArrayList)request.getAttribute("data");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>영화 예매 확인</title>
</head>
<body>
<p>영화 예매 확인</p>
고객명 : <%=data.get(0)%><br>
연락처 : <%=data.get(1)%><br>
영화선택 : <%=data.get(2)%><br>
예매일자 : <%=data.get(3)%><br><br>
<input type="button" value="확인" onclick="kk()">
</body>
<script>
var kk = function(){
alert("*^-^*");
}
</script>
</html>
😭 어려웠던점
- 라디오 체크
- else if(frm.movie_name.value=="")
- 라디오는 값이 하나니까 그냥 value로 체크
- 번호 숫자인지 체크 => isNaN() 사용 !
- else if(isNaN(frm.mtel.value))
- 날짜
- HTML에서 <input type="date"> => yyyy-MM-dd 의 형태로 나옴
- servlet에서 오늘 날짜 가져오려할때 Date 임포트
- import java.util.Date; 이거 맞는지 확인
- 날짜 비교
- HTML에서 넘어온 값에 -가 포함되어있음
- 서블릿에서 replace 사용