반응형
바로 전 [로그인 만들기]때는 클라이언트의 요청을 서블릿에서 바로 받는 기본 형태의 모델 2 구조로 구현해보았다. 이번에는 [게시판 만들기]를 할 때와 같이 FrontController 서블릿을 사용하여 FrontController 패턴을 사용해보도록 하겠다.
📌테이블 생성
CREATE TABLE shop(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price INT NOT NULL,
image VARCHAR(20) NOT NULL,
size VARCHAR(6) NOT NULL,
content VARCHAR(400),
readcount INT
)
START TRANSACTION
INSERT INTO shop(name, price, image, size, content, readcount) VALUES('Stussy Young Organics T-Shirt Black',90000,'S.jpg','L','스투시 영 오가닉스 티셔츠 블랙',0)
INSERT INTO shop(name, price, image, size, content, readcount) VALUES('Adidas Yeezy Boost 380 Yecoraite - Reflective',300000,'YB.jpg','280','아이다스 이지 부스트 380 예코레이트 - 리플렉티브',0)
INSERT INTO shop(name, price, image, size, content, readcount) VALUES('Maison Kitsune x Ader Error Meditation Fox T-Shirt Black',200000,'MA.jpg','A2','메종 키츠네 x 아더에러 메디테이션 폭스 티셔츠 블랙',0)
INSERT INTO shop(name, price, image, size, content, readcount) VALUES('Ader Error Sculpture Logo Hood Jacket Grey',430000,'AEH.jpg','A2','아더에러 스컬쳐 로고 후드 자켓 그레이',0)
COMMIT;
id | 상품번호 | image | 이미지 이름 |
name | 옷 명 | size | 옷 사이즈 |
price | 가격 | content | 옷 설명 |
readcount | 조회수 |
📌VO(DTO)
clothes.java
상품 정보 하나를 저장할 수 있는 클래스
package vo;
public class Clothes {
private int id;
private String name;
private int price;
private String image;
private String size;
private String content;
private int readcount;
public Clothes(int id, String name, int price, String image, String size, String content, int readcount) {
super();
this.id=id;
this.name=name;
this.price=price;
this.image=image;
this.size=size;
this.content=content;
this.readcount=readcount;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getReadcount() {
return readcount;
}
public void setReadcount(int readcount) {
this.readcount = readcount;
}
}
Cart.java
장바구니 항목 하나의 정보를 저장하는 클래스
package vo;
public class Cart {
private String image;
private String name;
private int price;
private int qty;
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getQty() {
return qty;
}
public void setQty(int qty) {
this.qty = qty;
}
}
ActionForward
포워딩 정보 하나를 저장하는 클래스
package vo;
//컨트롤러에서 비지니스 로직을 처리하고 뷰 페이지로 포워딩할 때 포워딩에 필요한 정보를 저장하는 클래스
public class ActionForward {
private String path;
private boolean redirect;
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public boolean isRedirect() {
return redirect;
}
public void setRedirect(boolean redirect) {
this.redirect = redirect;
}
public ActionForward(String path, boolean redirect) {
this.path = path;
this.redirect = redirect;
}
}
📌기본 세팅
앞서 게시판과 로그인을 만들때 다 설명했던 부분이기 때문에 JdbcUtil.java 파일과 Action 인터페이스를 추가 설명없이 작성하도록 하겠다.
JdbcUtil.java
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
//DB 작업을 할 때 반복적으로 수행해야 하는 작업을 정의하는 클래스
public class JdbcUtil {
public static Connection getConnection(){
Connection con = null;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/testDB";
try {
Class.forName(driver);
con = DriverManager.getConnection(url,"root","!234qwerasdf");
con.setAutoCommit(false);
System.out.println("connect succes");
} catch (Exception e) {
System.out.println("connect 실패");
e.printStackTrace();
}
return con;
}
public static void close(Connection con){
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void close(Statement stmt){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void close(ResultSet rs){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void commit(Connection con){
try {
con.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void rollback(Connection con){
try {
con.rollback();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Action 인터페이스
package action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import vo.ActionForward;
public interface Action {
ActionForward execute(HttpServletRequest request, HttpServletResponse response)
throws Exception;
}
반응형
'JSP & Servlet > 실습' 카테고리의 다른 글
[JSP & Servlet] 쇼핑몰 (오늘 본 상품 & 장바구니) - Action (0) | 2022.07.01 |
---|---|
[JSP & Servlet] 쇼핑몰 (오늘 본 상품 & 장바구니) - controller (0) | 2022.07.01 |
[JSP & Servlet] 로그인 (feat. 세션 & 쿠키) - controller / service (0) | 2022.06.30 |
[JSP & Servlet] 로그인 (feat. 세션 & 쿠키) - View / DAO (0) | 2022.06.30 |
[JSP & Servlet] 로그인 (feat. 세션 & 쿠키) - 테이블 생성 및 vo(Value Object) (0) | 2022.06.30 |