1.리스트 화면으로 바로 이동
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% // context path 가져오기 // context path : 웨프로젝트의 식별자 String context = request.getContextPath(); //페이지 이동 response.sendRedirect(context + "/book_servlet/list.do"); %> </body> </html>
2. 북 컨트롤러
package book; import java.io.IOException; import java.util.ArrayList; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //url patter 지정 // //컨트롤러는 하나인데 다양한 url이 넘어온다. 그래서 구분 작업을 해줘야 한다. @WebServlet("/book_servlet/*") public class BookController extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("서블릿 호출"); // 한글처리 request.setCharacterEncoding("utf-8"); // 컨텍스트 페스 경로가져오기 String context = request.getContextPath(); // DAO생성 BookDAO dao = new BookDAO(); // 폼에서 입력 받은 데이터를 DTO에 저장 // http://localhost:8282/web02/book_servlet/list.do String url = request.getRequestURL().toString(); // 문자열. indexOf("검색어") 검색어의 인덱스가 리턴됨 // 검색어가 포함되어 있지 않으면 -1리턴 // 북테이블 리스트 if (url.indexOf("list.do") != -1) { //도서 목록을 List로 리턴받음 ArrayList<bookDTO> list=dao.bookList(); //request 영역에 저장(요청페이지+출력페이지) request.setAttribute("items", list); //포워딩할 페이지 주소 String page="/book/book_list2.jsp"; //포워딩할 페이지의 정보분석 RequestDispatcher rd=request.getRequestDispatcher(page); //포워드(주소고정, 화면전환, 데이터 전달) rd.forward(request, response); //북 테이블 삽입 } else if (url.indexOf("insert.do") != -1) { String title = request.getParameter("title"); String author = request.getParameter("author"); int price = Integer.parseInt(request.getParameter("price")); int qty = Integer.parseInt(request.getParameter("qty")); bookDTO dto = new bookDTO(title, author, price, qty); // 테이블에 저장 dao.bookInsert(dto); // 페이지 이동 response.sendRedirect(context + "/book/book_list.jsp"); } //북 테이블 상세 보기 else if(url.indexOf("view.do") != -1){ int id = Integer.parseInt(request.getParameter("id")); //dao에 자료요청 bookDTO dto=dao.bookDetail(id); // 자료저장 request.setAttribute("dto", dto); // 페이지 이동 //포워드 할때는 context 가 자동으로 붙어서 필요없다. String page= "/book/book_view.jsp"; RequestDispatcher rd= request.getRequestDispatcher(page); rd.forward(request, response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
3. 리스트 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="book.*"%> <%@page import="java.util.ArrayList"%> <!DOCTYPE > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2>도서목록</h2> <input type="button" value="도서등록" onclick="location.href='insert.jsp' "> <table border="1"> <tr> <th>번호</th> <th>도서명</th> <th>저자</th> <th>가격</th> <th>수량</th> </tr> <% //request.setAttribute(key,value); // request.getAttribute(key); String path = request.getContextPath(); ArrayList<bookDTO> list = (ArrayList<bookDTO>) request.getAttribute("items"); for (bookDTO dto : list) { %> <tr> <td><%=dto.getId()%></td> <!-- 제목에 하이퍼 링크 걸기 --> <td><a href= "<%=path%>/book_servlet/view.do?id=<%=dto.getId()%> "> <%=dto.getTitle()%> </a></td> <td><%=dto.getAuthor()%></td> <td><%=dto.getPrice()%></td> <td><%=dto.getQty()%></td> </tr> <% } //for 문의 끝 %> </table> </body> </html>
4. 상세 페이지 로 이동
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="book.bookDTO"%> <!DOCTYPE > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script src="http://code.jquery.com/jquery-3.1.0.js"> </script> <script> $(document).ready(function() { $("#btnAdd").click(function() { //버튼 클릭이벤트 var title = $("#title").val(); //태그입력값 var author = $("#author").val(); var price = $("#price").val(); var qty = $("#qty").val(); if (title == "") { //빈값이면 alert("도서명을 입력하세요") $("#title").focus(); //입력포커스 이동 return; //함수 종료 } if (author == "") { alert("저자명을 입력하세요") $("#author").focus(); return; } if (price == 0) { alert("가격을 입력하세요") $("#price").focus(); return; } if (qty == 0) { alert("수량을 입력하세요") $("#qty").focus(); return; } /* 폼에 입력한 데이터를 서버로 전송 */ document.form1.submit(); }); }); </script> </head> <body> <!-- request.getContextPath() = 컨택스트 페스를 리턴함 --> a <!-- ction ="/컨텍스트/가상디렉토리 / 서블릿 url" --> <!-- id 는 jsp에서 쓸 것이고 name은 서블릿에서 사용할 것이다. --> <h2>도서 정보 등록</h2> <% bookDTO dto = (bookDTO) request.getAttribute("dto"); %> <form name="form1" method="post"> <table border="1"> <tr> <td>도서명</td> <td><input name="title" id="title" value="<%=dto.getTitle() %>"></td> </tr> <tr> <td>저자</td> <td><input type="text" name="author" id="author" value="<%=dto.getAuthor() %>"></td> </tr> <tr> <td>가격</td> <td><input type="number" name="price" id="price" value="<%=dto.getPrice() %>" required></td> </tr> <tr> <td>수량</td> <td><input type="number" name="qty" id="qty" value="<%=dto.getQty() %>" required></td> </tr> <tr> <td colspan="2" align="center"><input type="button" id="btnAdd" value="확인"> <input type="reset" value="취소"></td> </tr> </table> </form> </body> </html>