[ 세미프로젝트(http://iclasskh.iptime.org:9090/pictures/) 과정 ]
01. 메뉴바 Menubar
02. 메인화면 Main
04. 예매단계1 ReserveOne
05. 예매단계2 ReserveTwo
09. 마이페이지-예매/관람확인 MyPage-MiniView
10. 마이페이지/관리자페이지-예매상세확인 MyPage-Reserved/Admin-Reserved
1. 예매2단계 ReserveTwo 화면

2. 주요기능
-1) Servlet 단계
1. 지역식별번호, 영화관식별번호를 가져옴 (Controller)
2. 지정된 날짜가 없을 경우, 오늘날짜를 사용 (Controller)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} |
-2) View 단계
1. 현재 상영중인 영화제목 리스트 나열
2. 영화제목 순서를 lineUp 번호에 따라 최신순/이름순/나이제한순 으로 변경가능 (동기식)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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> |
3. 배운점
- null 값 확인, 혹은 Integer파싱하기, 오늘 날짜(new Date())를 가져오거나 날짜포맷지정하기처럼 자주사용하는 메서드는 따로 빼내어 놓기!
- 재사용성 UP + 관리용이 !
+ StringUtils
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
+ DateUtils
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} |
'Project > KH.학원프로젝트' 카테고리의 다른 글
Semi-[Pictures.] 07. ReserveFour (0) | 2020.04.22 |
---|---|
Semi-[Pictures.] 06. ReserveThree (0) | 2020.04.22 |
Semi-[Pictures.] 04. ReserveOne (0) | 2020.04.22 |
Semi-[Pictures.] 03. Theater (0) | 2020.04.22 |
Semi-[Pictures.] 02. Main (0) | 2020.04.22 |