package controller.admin.product;
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;
import entity.Product;
import service.ProductService;
/*
* 여기서 처리할 것
* 상품 등록 get
* 등록창 반영 처리 post
*/
@WebServlet("/admin/product/reg")
public class RegController extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
ProductService productsService = new ProductService();
Product product = productsService.getProduct(id);
// redirect
request.setAttribute("p", product);
request.getRequestDispatcher("/WEB-INF/view/admin/product/reg.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
action="./processUpdateProduct.jsp"
로 가는데 저 파일 수정 필요<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<link href="/resources/css/styles.css" rel="stylesheet" />
<link rel="stylesheet" href="/resources/css/bootstrap.min.css" />
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="/resources/js/scripts.js"></script>
<title>상품 수정</title>
</head>
<body>
<jsp:include page="../../../../menuAdmin.jsp" />
<header class="bg-dark py-5" style="margin-bottom: 50px">
<div class="container px-4 px-lg-5 my-5">
<div class="text-center text-white">
<h1 class="display-4 fw-bolder">상품수정</h1>
</div>
</div>
</header>
<div class="container">
<div class="row">
<div class="col-md-5">
<img src="/img/${p.filename}" alt="image"
style="width: 100%" />
</div>
<div class="col-md-7">
<form name="newProduct" action="./processUpdateProduct.jsp"
class="form-horizontal" method="post" enctype="multipart/form-data">
<div class="form-group row">
<label class="col-sm-2">상품 코드</label>
<div class="col-sm-3">
<input type="text" id="productId" name="productId"
class="form-control" value='${p.productId }'>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">상품명</label>
<div class="col-sm-3">
<input type="text" id="name" name=name class="form-control"
value="${p.pname }">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">가격</label>
<div class="col-sm-3">
<input type="text" id="unitPrice" name="unitPrice"
class="form-control" value="${p.unitPrice}">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">상세 설명</label>
<div class="col-sm-5">
<textarea name="descriptions" cols="50" rows="2"
class="form-control">${p.description}</textarea>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">제조사</label>
<div class="col-sm-3">
<input type="text" name="manufacturer" class="form-control"
value="${p.manufacturer}">
</div>
</div>
<%-- <div class="form-group row">
<label class="col-sm-2">분류</label>
<div class="col-sm-3">
<input type="text" name="category" class="form-control"
value="<%=rs.getString("category")%>">
</div>
</div> --%>
<div class="form-group row">
<label class="col-sm-2">분류</label>
<div class="col-sm-5">
<input type="radio" name="category" value="Phone "> 휴대폰 <input
type="radio" name="category" value="Tab"> 태블릿PC <input
type="radio" name="category" value="Notebook"> 노트북 <input
type="radio" name="category" value="PC"> PC <input
type="radio" name="category" value="Audio"> 음향 가전 <input
type="radio" name="category" value="other"> 기타
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">재고수</label>
<div class="col-sm-3">
<input type="text" id="unitsInStock" name="unitsInStock"
class="form-control" value="${p.unitsInStock}">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">이미지</label>
<div class="col-sm-5">
<input type="file" name="filename" class="form-control">
</div>
</div>
<div class="form-group row">
<div class="col-sm-offset-2 col-sm-10 ">
<input type="submit" class="btn btn-primary" value="등록">
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html>
<head>
<link href="/resources/css/styles.css" rel="stylesheet" />
<link rel="stylesheet" href="/resources/css/bootstrap.min.css" />
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="/resources/js/scripts.js"></script>
<meta charset="UTF-8">
<title>상품등록</title>
</head>
<body>
<fmt:setLocale value='<%=request.getParameter("language")%>' />
<fmt:bundle basename="bundle.message">
<jsp:include page="../../../../menuAdmin.jsp" />
<header class="bg-dark py-5" style="margin-bottom: 50px">
<div class="container px-4 px-lg-5 my-5">
<div class="text-center text-white">
<h1 class="display-4 fw-bolder">상품등록</h1>
</div>
</div>
</header>
<div class="container">
<div class="text-right">
<a href="?language=ko">Korean</a>|<a href="?language=en">English</a>
<!--로그아웃 일단 주석 <a href="logout.jsp" class="btn btn-sm btn-success pull-right">logout</a> -->
</div>
<form name="newProduct" action="./processAddProduct.jsp"
class="form-horizontal" method="post" enctype="multipart/form-data">
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="productId" /></label>
<div class="col-sm-3">
<input type="text" id="productId" name="productId"
class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="pname" /></label>
<div class="col-sm-3">
<input type="text" id="name" name="name" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="unitPrice" /></label>
<div class="col-sm-3">
<input type="text" id="unitPrice" name="unitPrice"
class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="description" /></label>
<div class="col-sm-5">
<textarea name="description" cols="50" rows="2"
class="form-control"></textarea>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="manufacturer" /></label>
<div class="col-sm-3">
<input type="text" name="manufacturer" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="category" /></label>
<div class="col-sm-8">
<input type="radio" name="category" value="Phone "> Phone
<input type="radio" name="category" value="Tab"
style="margin-left: 10px"> Tab <input type="radio"
name="category" value="Notebook" style="margin-left: 10px">
Notebook <input type="radio" name="category" value="PC"
style="margin-left: 10px"> PC <input type="radio"
name="category" value="Audio" style="margin-left: 10px">
Audio <input type="radio" name="category" value="Other"
style="margin-left: 10px"> Other
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="unitsInStock" /></label>
<div class="col-sm-3">
<input type="text" id="unitsInStock" name="unitsInStock"
class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="productImage" /></label>
<div class="col-sm-5">
<input type="file" name="productImage" class="form-control">
</div>
</div>
<div class="form-group row">
<div class="col-sm-offset-2 col-sm-10 ">
<input type="submit" class="btn btn-primary"
value="<fmt:message key="button" />">
<!-- onclick="CheckAddProduct()" -->
</div>
</div>
</form>
</div>
</fmt:bundle>
</body>
</html>
PrintWriter out = response.getWriter();
out.printf("name: %s ", pname);
setChatacterEncoding("UTF-8")
로 받기package filter;
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;
public class CharacterEncodingFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request
, ServletResponse response
, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
System.out.println(1234);
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
package filter;
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;
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request
, ServletResponse response
, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
PrintWriter out = response.getWriter()
로 깨지는 건 다른 해결방법response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
package controller.admin.product;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
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 com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;
import entity.Product;
import service.ProductService;
// post가 필요하려나?: o -> 상품 등록 처리해야하니까
// get은 그냥 처음 등록창 보여주는 거고
@WebServlet("/admin/product/add")
public class AddController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/view/admin/product/add.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String productId = request.getParameter("productId");
String pname= request.getParameter("pname");
Integer unitPrice= Integer.parseInt(request.getParameter("unitPrice")) ;
String description= request.getParameter("description");
String manufacturer= request.getParameter("manufacturer");
String category= request.getParameter("category");
long unitsInStock= Long.parseLong(request.getParameter("unitPrice")) ;
//String filename= request.getParameter("productImage");
String isOpen= request.getParameter("open"); // true or null
Boolean pub = false;
if(isOpen != null)
pub = true;
Product product = new Product();
product.setCategory(category);
product.setDescription(description);
product.setManufacturer(manufacturer);
product.setPname(pname);
product.setProductId(productId);
product.setUnitPrice(unitPrice);
product.setUnitsInStock(unitsInStock);
product.setPub(pub);
ProductService productService = new ProductService();
productService.insertProduct(product);
response.sendRedirect("list");
}
}