D+70::SHOP_조건검색기능/날짜검색//파이썬_기본변수/함수

Am.Vinch·2022년 10월 6일
0
post-thumbnail

20221006_thu

html에서 java로 데이터를 넘길 때, java에서 데이터를 받는 방법

지난시간 내용 정리

  • html에서 java로 데이터를 넘길 때, java에서 데이터를 받는 방법
    • 1) VO객체를 사용
    • 2) Map 사용
      : 클래스에 아이템브이오 가 있을 때,
      itemName이라는 변수가 있다면

그리고 input태그로 데이터가 name값이 itemName으로 넘어온다면,
컨트롤러에있는 매개변수 커맨드객체 itemVO가 넘어간다.

public aaaa(ItemVO itemVO){
}
그런데 넘어갈때,내부적으로 vo에있는 setter값 호출되는것이기때문에 setItemName()이 넘어가는 것과 같다.


요청된 파라메터를 요청된map에다가 받아줘라
자동으로 받아주는것은vo객체 int나 string만 해당된다.
map은 자동으로받아주지 않기때문에 @requestParam 어노테이션 사용한것
@requestParam :매개변수와 html의 name값으로 동일한 데이터만 받아서 사용가능한데, 그렇지 않을 시에도 이름값이 달라도 데이터받아달라는 뜻이다.

public aaaa(@requestParam Map<String,String> map){
map.put("itemName","입력한값");
}
map에서는 이라고 되어있으면
map.put("itemName","입력한값"); 으로 되어있는 것과 같다.
: itemName이라는 name값이 map의 key값이고 input태그에 실제로 입력된 값이 map의 value값이 된다.

단, map으로 데이터를 받을 땐 중복된 key값으로는 하나의 값밖에 받지 못한다.
예를 들어
-> 1
-> 2
-> 3
이라고 입력했을 때
map.put("itemName","1");
map.put("itemName","2");
map.put("itemName","3");
위 map의 값에서 key값이 모두 중복되어있다.
그러므로 위 input태그에 입력한 실제 값들은 모두 넣을 수 없다.
단 마지막 가장 최근에 입력한 값만은 받아갈 수 있다.
그래서 itemName이라는 이름의 key에 해당하는 value값은 3 만 데이터로 받아갈수있다.

원래 아래의 코드에서는 String item 만있을 땐 name값이 item이라는 데이터는 없으므로 받을 수 가 없다.
그런데 아래처럼 어노테이션을 사용하여 name값 itemCode라는 값의 파라매터를 item이라는 문자열로 받도록 하자라는 뜻이기때문에 데이터 받아서 사용가능하다.
public aaaa(@requestParam(name="itemCode") String item){
print(item);
//출력결과 -> "1,2,3"
// 왜? 문자열 하나로 넣어주기때문에
}

반면, List를 이용할 경우 map과 달리 중복값도 데이터를 받기 때문에 모든 값이 들어간다.
public aaaa(@requestParam List item){
list.add("itmeName");//"1,2,3"
}


실습내용

  • 현재 상품관리페이지이동시, 두가지 다른 부분을 클릭해도 동일하게 이동하는 경우가 있다.
    : 사이드메뉴에서 상품관리 클릭 -> 상품관리페이지 이동
    : 상품관리 페이지에서 검색 버튼 클릭시에도 -> 상품관리 페이지로 이동
    -> 문제점 발생!
  • 검색버튼을 누르면 데이터를 가져가서 뿌려주지만, 사이드메뉴에서 상품관리 클릭 후, 페이지이동시에는 데이터를 못받아서 쿼리실행시, null값이 떠서 제대로 실행이 되지 않는다.
  • 그래서 쿼리문에 반드시 날짜기능 if문 걸어줘야 한다.

조건검색기능 마무리

  • item-mapper
    :
    		<!-- parameterType="hashMap" : 생략가능 쿼리실행 빈값을 뭐로 채울래? -->
<select id="selectRegItemList" resultMap="item" >
	SELECT 
	ITEM_CODE
		,ITEM_NAME
		,ITEM_PRICE
		,to_char(REG_DATE, 'YYYY-MM-DD') REG_DATE
		,ITEM_STOCK
		,SHOP_ITEM.CATE_CODE
	    ,CATE_NAME
	    ,DECODE(ITEM_STATUS,'ON_SALE','판매중','매진')  ITEM_STATUS
	FROM  SHOP_ITEM,ITEM_CATECGORY
	WHERE SHOP_ITEM.CATE_CODE = ITEM_CATECGORY.CATE_CODE
	<if test="cateCode != null and !cateCode.equals('') ">
	AND SHOP_ITEM.CATE_CODE = #{cateCode} 
	</if>
	<if test="itemName != null and !itemName.equals('')">
	AND UPPER(ITEM_NAME) LIKE UPPER('%'||#{itemName}||'%')
	</if>
	<if test="itemStock != null and !itemStock.equals('')">
	AND ITEM_STOCK &lt;= #{itemStock}
	</if>
	<if test="fromDate != null and fromDate.equals('')">
	AND TO_CHAR(REG_DATE,'YYYY-MM-DD') &gt;= '#{fromDate}' 
	</if>
	<if test="toDate != null and toDate.equals('')">
	AND TO_CHAR(REG_DATE,'YYYY-MM-DD') &lt;= '#{toDate}' 
	</if> 
	<if test="itemStatus != null and !itemStatus.equals('')">
	AND ITEM_STATUS = #{itemStatus}
	</if>   
</select>
  • Admincontroller
    // html에서 파라매터를 사용하기위해 데이터던지기
    model.addAttribute("paramMap",paramMap);
    : itemName이라는 name으로 java라는 글자가 들어오면 param으로 받아서 model객체로 paramMp이라는 이름으로 데이터를 던져준다.

상품등록 마무리

  1. DB에서 상품이미지 테이블 생성
  2. 스프링에서 VO파일 생성
  3. 상품등록화면에 첨부기능을 위한 input태그 두개 를 생성
profile
Dev.Vinch

0개의 댓글