servlet07 → servlet06 혼자서 해보기
S04MainServlet
(서블릿 다른 폴더라도 같은 이름으로 생성하면 충돌 일어남)
package servlet07;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class S04MainServlet
*/
@WebServlet("/S04MainServlet")
public class S04MainServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public S04MainServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
doGet 메소드
response.getWriter().append("Served at: ").append(request.getContextPath());
s01main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<title>Insert title here</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>
S05AddServlet
package servlet07;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class S05AddServlet
*/
@WebServlet("/S05AddServlet")
public class S05AddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public S05AddServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
또 doGet 에
response.getWriter().append("Served at: ").append(request.getContextPath());
작성됨
s02add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<title>Insert title here</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>
S06ListServlet
package servlet07;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class S06ListServlet
*/
@WebServlet("/S06ListServlet")
public class S06ListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public S06ListServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
마찬가지 doGet
s03list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="<%= request.getContextPath() %>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<title>Insert title here</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>
마찬가지 내용없음
servlet08
S01BookMainServlet
package servlet08;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class S01BookMainServlet
*/
@WebServlet("/servlet08/main")
public class S01BookMainServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public S01BookMainServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = "/WEB-INF/view/servlet08/main.jsp";
request.getRequestDispatcher(path).forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
doGet 에서 main.jsp 로 포워딩
S02BookAddServlet
package servlet08;
import java.io.IOException;
import java.util.ArrayList;
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 sample03javabean.Bean06;
/**
* Servlet implementation class S02BookAddServlet
*/
@WebServlet("/servlet08/add")
public class S02BookAddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public S02BookAddServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = "/WEB-INF/view/servlet08/add.jsp";
request.getRequestDispatcher(path).forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 한글 인코딩
// request.setCharacterEncoding("utf-8");
// 0. 사전 작업
HttpSession session = request.getSession();
List<Bean06> list = (List<Bean06>) session.getAttribute("books");
if (list == null) {
list = new ArrayList<>();
session.setAttribute("books", list);
}
// 2. 파라미터 분석/가공
String title = request.getParameter("title");
String writer = request.getParameter("writer");
String priceStr = request.getParameter("price");
String publisher = request.getParameter("publisher");
String stockStr = request.getParameter("stock");
int price = Integer.parseInt(priceStr);
int stock = Integer.parseInt(stockStr);
Bean06 book = new Bean06(title, writer, price, publisher, stock);
// 3. 책 추가 - business logic
list.add(book);
// 4. 데이터를 attribute에 추가
// 5. forward or redirect
String location = request.getContextPath() + "/servlet08/list";
response.sendRedirect(location);
}
}
doGet 에서 add.jsp 로 포워딩
doPost 에서 리스트 생성, 값 전달받아 저장, 리스트에 추가, S03BookListServlet 으로 리디렉트
S03BookListServlet
package servlet08;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class S03BookListServlet
*/
@WebServlet("/servlet08/list")
public class S03BookListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public S03BookListServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 3. business logic (db에서 책 목록 읽기)
// 4. request attribute 추가
// 5. forward
String path = "/WEB-INF/view/servlet08/list.jsp";
request.getRequestDispatcher(path).forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
doGet 에서 list.jsp 로 포워딩
add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="<%=request.getContextPath()%>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<title>Insert title here</title>
</head>
<body>
<!-- .container>.row>.col-2+.col-10 -->
<div class="container">
<div class="row">
<div class="col-2">
<%-- side menu --%>
<!-- ul.nav.flex-column>li.nav-item*3>a.nav-link -->
<ul class="nav flex-column">
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/main" class="nav-link">MAIN</a>
</li>
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/add" class="nav-link">ADD</a>
</li>
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/list" class="nav-link">LIST</a>
</li>
</ul>
</div>
<div class="col-10">
<%-- main contents --%>
<h1>책 추가</h1>
<form method="post">
<!-- .form-group*5>label+input.form-control -->
<div class="form-group">
<label>제목</label>
<input type="text" class="form-control" name="title">
</div>
<div class="form-group">
<label>저자</label>
<input type="text" class="form-control" name="writer">
</div>
<div class="form-group">
<label>가격</label>
<input type="number" class="form-control" name="price">
</div>
<div class="form-group">
<label>출판사</label>
<input type="text" class="form-control" name="publisher">
</div>
<div class="form-group">
<label>재고</label>
<input type="number" class="form-control" name="stock">
</div>
<input type="submit" value="등록" class="btn btn-primary">
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>
main, add, list 링크걸고, 책추가 form - 제목, 저자, 가격, 출판사, 재고 - post 방식으로 전달
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="<%=request.getContextPath()%>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<title>Insert title here</title>
</head>
<body>
<!-- .container>.row>.col-2+.col-10 -->
<div class="container">
<div class="row">
<div class="col-2">
<%-- side menu --%>
<!-- ul.nav.flex-column>li.nav-item*3>a.nav-link -->
<ul class="nav flex-column">
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/main" class="nav-link">MAIN</a>
</li>
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/add" class="nav-link">ADD</a>
</li>
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/list" class="nav-link">LIST</a>
</li>
</ul>
</div>
<div class="col-10">
<%-- 메인 컨텐츠 - 책 목록 --%>
<h1>책 목록</h1>
<!-- table.table>thead>tr>th*6^^tbody -->
<table class="table">
<thead>
<tr>
<th>#</th>
<th>제목</th>
<th>저자</th>
<th>가격</th>
<th>출판사</th>
<th>재고</th>
<th>삭제</th>
<th>수정</th>
</tr>
</thead>
<tbody>
<c:forEach items="${books }" var="book" varStatus="status">
<tr>
<td>${status.count }</td>
<td>${book.title }</td>
<td>${book.writer }</td>
<td>${book.price }</td>
<td>${book.publisher }</td>
<td>${book.stock }</td>
<td>
<c:url value="/servlet08/remove" var="removeUrl">
<c:param name="id" value="${status.index }" />
</c:url>
<!-- button.btn.btn-danger>i.fas.fa-trash -->
<button class="btn btn-danger removeBtn" data-toggle="modal" data-target="#confirmModal1" data-link="${removeUrl }">
<i class="fas fa-trash"></i>
</button>
</td>
<td>
<c:url value="/servlet08/modify" var="modifyUrl" >
<c:param name="id" value="${status.index }" />
</c:url>
<!-- a.btn.btn-warning>i.fas.fa-pencil -->
<a href="${modifyUrl }" class="btn btn-warning">
<i class="fas fa-edit"></i>
</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="confirmModal1" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">삭제 확인</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">삭제하시겠습니까?</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<a id="removeModalBtn1" href="" type="button" class="btn btn-primary">확인</a>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
<script>
$(document).ready(function() {
$(".removeBtn").click(function() {
let link = $(this).attr("data-link");
$("#removeModalBtn1").attr("href", link);
});
});
</script>
</body>
</html>
main, add, list 서블릿 링크 걸어둠
책목록 테이블로 출력
remove, modify url 걸어둠
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="<%=request.getContextPath()%>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<title>Insert title here</title>
</head>
<body>
<!-- .container>.row>.col-2+.col-10 -->
<div class="container">
<div class="row">
<div class="col-2">
<%-- side menu --%>
<!-- ul.nav.flex-column>li.nav-item*3>a.nav-link -->
<ul class="nav flex-column">
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/main" class="nav-link">MAIN</a>
</li>
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/add" class="nav-link">ADD</a>
</li>
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/list" class="nav-link">LIST</a>
</li>
</ul>
</div>
<div class="col-10">
<%-- main contents --%>
<h1>책 관리 APP</h1>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>
main, add, list 서블릿 링크 걸어둠
책관리 app
modify.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="<%=request.getContextPath()%>/resource/css/icon/css/all.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<title>Insert title here</title>
</head>
<body>
<!-- .container>.row>.col-2+.col-10 -->
<div class="container">
<div class="row">
<div class="col-2">
<%-- side menu --%>
<!-- ul.nav.flex-column>li.nav-item*3>a.nav-link -->
<ul class="nav flex-column">
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/main" class="nav-link">MAIN</a>
</li>
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/add" class="nav-link">ADD</a>
</li>
<li class="nav-item">
<a href="${pageContext.request.contextPath }/servlet08/list" class="nav-link">LIST</a>
</li>
</ul>
</div>
<div class="col-10">
<%-- main contents --%>
<h1>책 수정</h1>
<form method="post">
<input type="hidden" name="index" value="${index }">
<!-- .form-group*5>label+input.form-control -->
<div class="form-group">
<label>제목</label>
<input type="text" class="form-control" name="title" value="${book.title }">
</div>
<div class="form-group">
<label>저자</label>
<input type="text" class="form-control" name="writer" value="${book.writer }">
</div>
<div class="form-group">
<label>가격</label>
<input type="number" class="form-control" name="price" value="${book.price }">
</div>
<div class="form-group">
<label>출판사</label>
<input type="text" class="form-control" name="publisher" value="${book.publisher }">
</div>
<div class="form-group">
<label>재고</label>
<input type="number" class="form-control" name="stock" value="${book.stock }">
</div>
<input type="submit" value="수정" class="btn btn-primary">
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>
책 수정 form
servlet09→ servlet08 혼자서 해보기~!
S04BookMainServlet
S05BookAddServlet
S06BookListServlet
+ 그리고 나중에 servlet8 에 추가된 세가지
S01BookCharEncodingFilter
package servlet08;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* Servlet Filter implementation class S01BookCharEncodingFilter
*/
// @WebFilter("/S01BookCharEncodingFilter")
public class S01BookCharEncodingFilter implements Filter {
/**
* Default constructor.
*/
public S01BookCharEncodingFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
System.out.println("북차엔코딩필터!!");
request.setCharacterEncoding("utf-8");
// pass the request along the filter chain
chain.doFilter(request, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
filter - 다음 게시글에서 자세히
S04BookRemoveServlet
package servlet08;
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 sample03javabean.Bean06;
/**
* Servlet implementation class S04BookRemoveServlet
*/
@WebServlet("/servlet08/remove")
public class S04BookRemoveServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public S04BookRemoveServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 0. 사전 작업
HttpSession session = request.getSession();
List<Bean06> books = (List<Bean06>) session.getAttribute("books");
// 2. 요청 처리(파라미터 수집/가공)
String indexStr = request.getParameter("id");
int index = Integer.parseInt(indexStr);
// 3. business 로직
books.remove(index);
// 4. data를 attribute에 추가
// 5. forward / redirect
String location = request.getContextPath() + "/servlet08/list";
response.sendRedirect(location);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
doGet 만 작성됨 - list 서블릿으로 리디렉트
S05BookModifyServlet
package servlet08;
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 sample03javabean.Bean06;
/**
* Servlet implementation class S05BookModifyServlet
*/
@WebServlet("/servlet08/modify")
public class S05BookModifyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public S05BookModifyServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 0. 사전작업
HttpSession session = request.getSession();
List<Bean06> list = (List<Bean06>) session.getAttribute("books");
// 2. request 분석/가공
String idStr = request.getParameter("id");
int index = Integer.parseInt(idStr);
// 3. 비지니스 로직
Bean06 book = list.get(index);
// 4. attribute 추가
request.setAttribute("index", index);
request.setAttribute("book", book);
// 5. forward/redirect
String path = "/WEB-INF/view/servlet08/modify.jsp";
request.getRequestDispatcher(path).forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 0. 사전작업
HttpSession session = request.getSession();
List<Bean06> list = (List<Bean06>) session.getAttribute("books");
// request.setCharacterEncoding("utf-8");
// 2. request 분석/가공
String indexStr = request.getParameter("index");
String title = request.getParameter("title");
String writer = request.getParameter("writer");
String priceStr = request.getParameter("price");
String publisher = request.getParameter("publisher");
String stockStr = request.getParameter("stock");
int index = Integer.parseInt(indexStr);
int price = Integer.parseInt(priceStr);
int stock = Integer.parseInt(stockStr);
// 3. 비지니스 로직
Bean06 book = list.get(index);
book.setTitle(title);
book.setWriter(writer);
book.setPrice(price);
book.setPublisher(publisher);
book.setStock(stock);
// 4. attribute
// 5. forward/redirect
String location = request.getContextPath() + "/servlet08/list";
response.sendRedirect(location);
}
}
doGet - 뭐라고 작성된 후 modify.jsp 로 포워딩됨
doPost - 뭐라고 작성된 후 list 서블릿으로 리디렉트됨
'course 2021 > JDBC\DB' 카테고리의 다른 글
listener (0) | 2021.12.04 |
---|---|
filter (0) | 2021.12.02 |
DB - aws, sql (0) | 2021.12.02 |
servlet02 - 03, 04, 05, 06 (0) | 2021.12.01 |
servlet01 - 01, 02 (0) | 2021.11.29 |