Servlet일반상품2 : 카테고리별 상품목록조회
GoodsFrontController.java
의 doProcess()의 주소비교 후 처리부분에 코드 추가
1 | System.out.println("--------------@ 주소 비교후 처리 @-------------"); |
GoodsListAction.java
생성
1 | public class GoodsListAction implements Action { |
GoodsDAO.java
생성 후 GoodsListAll()메서드 코드 추가
- 상품전제목록 조회 -> 이거 대신 카테고리별 상품목록조회 GoodsList(String item)메서드 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34//상품 전체목록
public List<GoodsDTO> GoodsListAll() {
List<GoodsDTO> goodsList = new ArrayList<GoodsDTO>();
try {
getCon();
sql = "select * from itwill_goods";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()){
GoodsDTO gdto = new GoodsDTO();
gdto.setGno(rs.getInt("gno"));
gdto.setCategory(rs.getString("category"));
gdto.setName(rs.getString("name"));
gdto.setPrice(rs.getInt("price"));
gdto.setColor(rs.getString("color"));
gdto.setAmount(rs.getInt("amount"));
gdto.setSize(rs.getString("size"));
gdto.setContent(rs.getString("content"));
gdto.setImage(rs.getString("image"));
gdto.setBest(rs.getInt("best"));
gdto.setDate(rs.getDate("date"));
goodsList.add(gdto);
}
System.out.println("DAO : 상품목록 모두 저장완료! "+goodsList);
} catch (Exception e) {
e.printStackTrace();
} finally {
closeDB();
}
return goodsList;
}//end of getGoodsList()
GoodsDAO.java
생성 후 GoodsList(String item)메서드 코드 추가
- item에 따라 쿼리구문이 달라진다.
- item이 각 카테고리명인 경우
sql = "select * from itwill_goods where category=?";
- item == null인 경우
sql = "select * from itwill_goods";
- item == best인 경우
sql = "select * from itwill_goods where best=?";
- 따라서 String대신 StringBuffer를 써보자.
- item이 각 카테고리명인 경우
- 아래 세가지 방법으로 StringBuffer를 String으로 나타낼수있다
- pstmt = con.prepareStatement(SQL.toString());
- pstmt = con.prepareStatement(SQL+””);
+
는 덧셈 또는 String타입으로 바꿔주는 두 가지 기능이 있다.- 뒤에
+ 공백
이 붙으면+
가 두번째 기능을 해서 String으로 데이터 타입을 바꿔준다. 기억할 것!
- pstmt = con.prepareStatement(String.valueOf(SQL)); //object에 담아서 거기서 string으로 꺼낸다
1 | //카테고리별 상품목록 출력 |
goods_list.jsp
생성
- 제품의 총 개수를 카테고리수 만큼만 출력하고 그 이상인 경우 다음 row로 출력하려면 어떻게 하면 될까?
- 필요한 정보 : total개수, row개수, col개수
- 예를 들어 total 16개 col은 8개 => 필요한 row는 2개
- 예를 들어 total 17개 col은 8개 => 필요한 row는 3개
- 내코드
1
2int result = goodsCnt%col;
int row = result == 0 ? result:result+1; - 강사님코드
1
int row = (goodsCnt/col) + (goodsCnt%col>0? 1:0);
1 | <% |