반응형
Add 상품 추가 기능은 전체 상품 목록 페이지에 추가해줄 것이다.
list.jsp
때문에, 전체 상품 목록의 결과 페이지 list.jsp에 아래 코드를 추가한다.
<a href="/webApp2/product/add"> 상품추가</a>
Add.java - doGet
Add.java 에서는 상품 추가 클릭시 상품 추가 폼으로 이동할 수 있도록 doGet 메서드에 연결한다.
package product.controller;
import java.io.IOException;
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;
import member.MemberVo;
import product.ProductService;
import product.ProductVo;
/**
* Servlet implementation class Add
*/
@WebServlet("/product/add")
public class Add extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Add() {
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
// 상품 추가 폼
RequestDispatcher dis = request.getRequestDispatcher("/product/add.jsp");
dis.forward(request, response);
}
add.jsp
상품등록 폼을 나타내는 페이지이다. 상품 등록 이후 /product/add (Add.java) 의 post 메서드로 이어지도록 form 액션을 넣는다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>상품등록</h3>
<form action="/webApp2/product/add" method="post">
<table border="1">
<tr><th> 상품명 </th><td><input type = "text" name = "name"></td></tr>
<tr><th> 가격 </th><td><input type = "number" name = "price"></td></tr>
<tr><th> 수량 </th><td><input type = "number" name = "amount"></td></tr>
<tr><th> 추가 </th><td><input type = "submit" value = "상품등록"></td></tr>
</table>
</form>
</body>
</html>
Add.java
추가 폼에 넣은 값을 받아올 수 있게 getParameter을 사용한다.
num은 Oracle 에서 seq_product.nextval을 사용해 자동으로 추가된다.
addProduct 서비스를 사용하기 위해 ProductService 객체를 사용해 서비스를 구현한다.
num 자리에는 아무 숫자나 넣어도 된다. 상품 추가 이후 자동으로 상품 리스트로 이동하도록 한다.
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// submit -> 폼 파라메터에 입력된 상품정보 읽어와서 db에 저장
// 완료후 index.jsp 이동
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
int price = Integer.parseInt(request.getParameter("price"));
int amount = Integer.parseInt(request.getParameter("amount"));
// Integer.parseInt(문자 값을 숫자로 변환)
//기능 구현하려면 productservice 객체 필요
ProductService service = new ProductService();
service.addProduct(new ProductVo(0, name, price, amount));
//제품 번호는 아무거나 넣어도 된다.
response.sendRedirect("/webApp2/product/list");
}
}
반응형