뷰구현: productList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>상품 목록</title>
</head>
<body>
<h2>상품 목록</h2>
<hr>
<table border="1">
<tr>
<th>번호</th>
<th>상품명</th>
<th>가격</th>
<th>구입일</th>
</tr>
<c:forEach var="p" varStatus="i" items="${products}">
<tr>
<td>${i.count}</td>
<td><a href="/jwbook/pcontrol?action=info&id=${p.id}">${p.name}</a></td>
<td>${p.price}</td>
<td>${p.date}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
상품 정보를 출력하는 화면을 만들기 위해 [ch08]에 파일 추가
productInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>상품정보 조회</title>
</head>
<body>
<h2>상품정보 조회</h2>
<hr>
<ul>
<li>상품코드: ${p.id}</li>
<li>상품명: ${p.name}</li>
<li>제조사: ${p.maker}</li>
<li>가격: ${p.price}</li>
<li>등록일: ${p.date}</li>
</ul>
</body>
</html>
이제 자바에 ch08패키지에 product 클래스 생성
package ch08;
public class Product {
private String id;
private String name;
private String maker;
private int price;
private String date;
public Product(String id, String name, String maker, int price, String date) {
this.id = id;
this.name = name;
this.maker = maker;
this.price = price;
this.date = date;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMaker() {
return maker;
}
public void setMaker(String maker) {
this.maker = maker;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
ProductService
이것도 추가
package ch08;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ProductService {
Map<String, Product> products = new HashMap<>();
public ProductService() {
/*
* Product p = new Product("101","애플사과폰 12","애플전자",1200000,"2020.12.12");
* products.put("101", p); p = new
* Product("102","삼전우주폰 21","삼전전자",1300000,"2021.2.2"); products.put("102", p);
* p = new Product("103","엘스듀얼폰","엘스전자",1500000,"2021.3.2"); products.put("103",
* p);
*/
//객체 배열의 선언과 동시에 할당
//인덱스를 이용한 초기화(5명을 보관할 수 있는 객체 배열 선언)
Product[] p = new Product[5];
p[0] = new Product("101","애플사과폰 12","애플전자",1200000,"2020.12.12");
p[1] = new Product("102","삼전우주폰 21","삼전전자",1300000,"2021.2.2");
p[2] = new Product("103","엘스듀얼폰","엘스전자",1500000,"2021.3.2");
p[3] = new Product("104","민지폰 21","애플전자",1800000,"2021.2.10");
p[4] = new Product("105","민지옛날폰 21","애플전자",1300000,"2018.2.2");
//각 개체의 멤버에 접근 이름을 products.put로 추가하여서 출력
for (int i = 0; i < p.length; i++) {
products.put(p[i].getId(),p[i]);
}
}
public List<Product> findAll() {
return new ArrayList<>(products.values());
}
public Product find(String id) {
return products.get(id);
}
}
이제
컨트롤러 구현을 한다
(이것도 서블릿 추가로 해야하는데 체크박스 유심히 살펴보기 252 페이지 참고)
package ch08;
import java.io.IOException;
import javax.servlet.ServletConfig;
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 ProductController
*/
@WebServlet("/pcontrol")
public class ProductController extends HttpServlet {
private static final long serialVersionUID = 1L;
ProductService service;
public void init(ServletConfig config) throws ServletException {
super.init(config);
service = new ProductService();
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
String view = "";
if(action == null) {
getServletContext().getRequestDispatcher("/pcontrol?action=list").forward(request, response);
} else {
switch(action) {
case "list": view = list(request, response);break;
case "info": view = info(request, response);break;
}
getServletContext().getRequestDispatcher("/ch08/"+view).forward(request, response);
}
}
private String info(HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("p", service.find(request.getParameter("id")));
return "productInfo.jsp";
}
private String list(HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("products", service.findAll());
return "productList.jsp";
}
}
'서버 > JSP' 카테고리의 다른 글
JSTL (c: ) (0) | 2023.12.07 |
---|---|
html로 컨트롤러 들어가기 (1) | 2023.12.07 |
243p 컨트롤러 계산기 구현 (0) | 2023.12.05 |
h2 설치 및 활용 (1) | 2023.12.05 |
MVC패턴 (1) | 2023.12.05 |