본문 바로가기

Project/KH.학원프로젝트

Semi-[Pictures.] 05. ReserveTwo

[ 세미프로젝트(http://iclasskh.iptime.org:9090/pictures/) 과정 ]

01. 메뉴바 Menubar

02. 메인화면 Main

03. 영화관 상세페이지 Theater

04. 예매단계1 ReserveOne

05. 예매단계2 ReserveTwo

06. 예매단계3 ReserveThree

07. 예매단계4 ReserveFour

08. 예매단계5 ReserveFive & Six

09. 마이페이지-예매/관람확인 MyPage-MiniView

10. 마이페이지/관리자페이지-예매상세확인 MyPage-Reserved/Admin-Reserved

 

1. 예매2단계 ReserveTwo 화면

2. 주요기능

-1) Servlet 단계

1. 지역식별번호, 영화관식별번호를 가져옴 (Controller)

2. 지정된 날짜가 없을 경우, 오늘날짜를 사용 (Controller)

package com.kh.reserved.controller;
import static com.kh.common.isInteger.isInteger;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.kh.common.DateUtils;
import com.kh.common.StringUtils;
import com.kh.member.model.service.MemberService;
import com.kh.member.model.vo.Member;
import com.kh.movie.model.service.MovieService;
import com.kh.movie.model.vo.Movie;
import com.kh.section.model.service.SectionService;
import com.kh.section.model.vo.Section;
import com.kh.theater.model.service.TheaterService;
import com.kh.theater.model.vo.Theater;
@WebServlet("/reservedTwo.do")
public class ReservedTwoView extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 기본값 세팅 말고 사용자에게 잘못된 요청임을 알림
String sectionNo = request.getParameter("sectionNo");
String theaterNo = request.getParameter("theaterNo");
String screenDate = request.getParameter("screenDate");
if(StringUtils.isEmpty(screenDate)) {
screenDate = DateUtils.getNowDateString();
}
String lineUp = request.getParameter("lineUp");
if(StringUtils.isEmpty(lineUp) || !isInteger(request.getParameter("lineUp"))) {
lineUp = "4";
}
if(!isInteger(request.getParameter("sectionNo")) || !isInteger(request.getParameter("theaterNo"))) {
request.getRequestDispatcher("views/reserved/reservedOneView.jsp").forward(request, response);
return;
}
List<Section> sList = new SectionService().selectAll();
List<Theater> tList = new TheaterService().selectAllBySection(sectionNo);
List<Movie> mList = new MovieService().selectScreen(theaterNo, screenDate, lineUp);
request.setAttribute("sectionList", sList);
request.setAttribute("theaterList", tList);
request.setAttribute("movieList", mList);
request.getRequestDispatcher("views/reserved/reservedTwoView.jsp").forward(request, response);
}
}

3. lineUp(순서변경용 식별번호)에 따라 영화제목 값을 가져옴 (Repository)

public List<Movie> selectScreen(Connection conn, String theaterNo, String screenDate, String lineUp) {
List<Movie> list = new ArrayList<>();
PreparedStatement pstmt = null;
ResultSet rset = null;
String sql = prop.getProperty("selectS");
sql += " ORDER BY " + screenOrderBy(lineUp);
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, theaterNo);
pstmt.setString(2, screenDate);
rset = pstmt.executeQuery();
while(rset.next()) {
list.add(new Movie(rset.getInt("MOVIE_NO"), rset.getString("TITLE"), rset.getInt("AGE_LIMIT")));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(rset);
close(pstmt);
}
return list;
}
view raw MovieDao.java hosted with ❤ by GitHub

 

-2) View 단계

1. 현재 상영중인 영화제목 리스트 나열

2. 영화제목 순서를 lineUp 번호에 따라 최신순/이름순/나이제한순 으로 변경가능 (동기식)

<div id="choose_movie" class="threediv">
<div class="title">영화선택</div>
<select name="lineUp" style="width: 100px;" onchange="changeLineUp(this);">
<option value="4" ${empty param.lineUp or param.lineUp eq '4' ? 'selected="selected"' : ''}>최신순</option>
<option value="2" ${param.lineUp eq '2' ? 'selected="selected"' : ''}>이름순</option>
<option value="3" ${param.lineUp eq '3' ? 'selected="selected"' : ''}>나이제한순</option>
</select>
<ul>
<c:forEach items="${movieList}" var="m">
<input type="hidden" name="sectionNo" value="${param.sectionNo}"/>
<input type="hidden" name="theaterNo" value="${param.theaterNo}"/>
<li><a href="#selectMovie" onclick="selectMovie('${m.movieNo}')">
<span class="grade_${m.ageLimit}">${m.ageLimit==0 ? 'All':m.ageLimit}</span>
<strong>${m.title}</strong></a></li>
</c:forEach>
</ul>
</div>
view raw reserveTwo.jsp hosted with ❤ by GitHub

 

3. 배운점

- null 값 확인, 혹은 Integer파싱하기, 오늘 날짜(new Date())를 가져오거나 날짜포맷지정하기처럼 자주사용하는 메서드는 따로 빼내어 놓기!

- 재사용성 UP + 관리용이 !

+ StringUtils

package com.kh.common;
public class StringUtils {
public static boolean isInteger(String s) {
try {
Integer.parseInt(s);
} catch(NumberFormatException e) {
return false;
} catch(NullPointerException e) {
return false;
}
return true;
}
public static boolean isEmpty(String s) {
if(s == null || "".equals(s)) {
return true;
}
return false;
}
public static String getValue(String s) {
if(isEmpty(s)) {
return "";
}
return s;
}
}

+ isInteger

package com.kh.common;
public class isInteger {
public static boolean isInteger(String s) {
try {
Integer.parseInt(s);
} catch(NumberFormatException e) {
return false;
} catch(NullPointerException e) {
return false;
}
return true;
}
}
view raw isInteger.java hosted with ❤ by GitHub

+ DateUtils

package com.kh.common;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
public static String getNowDateString() {
Date now = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
return sf.format(now);
}
public static String formatDate(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
}
view raw DateUtils.java hosted with ❤ by GitHub

 

 

'Project > KH.학원프로젝트' 카테고리의 다른 글