[스프링] 0207 스프링 아카이브

    jsp 에서 가져온 리스트 뿌려주기 (model로 가져옴)

    <c:if test="${!empty list}"> 
    //list가 비었는지 확인하면서
    	<c:forEach var="hiBoard" items="${list}" varstatus="status">
        	//var:for문 내부에서 사용할 변수, items:${리스트가 받아올 배열 이름}, varstatus: 상태용 변수
    	</c:forEach>      
    </c:if>

     

    위 el, jstl 문법 틀 안에 반복하면서 찍을 내용을 넣어 주면 아래와 같음 

    <c:if test="${!empty list}">  
    	<c:forEach var="hiBoard" items="${list}" varStatus="status">    
          <tr>
             <td class="text-center">${hiBoard.hiBbsSeq}</td>
    
             <td>
                <a href="javascript:void(0)" onclick="fn_view(1)">
                   <c:out value="${hiBoard.hiBbsTitle}" />
                </a>
             </td>
             <td class="text-center">${HiBoard.userName}</td>
             <td class="text-center">${HiBoard.regDate}</td>
             <td class="text-center"><fmt:formatNumber type="number" maxFractionDigits="3" value="${HiBoard.hiBbsReadCnt}" /></td>
          </tr>
    	</c:forEach>      
    </c:if>

    items 가 list 인 이유는 전에 controller 에서 attribute 에서 이름을 list로 정해서 던졌기 때문.

    list 하나하나 안에 hiBoard 객체가 들어가 있음. 그리고 위에서 안에서 사용할 객체로 var hiBoard로 정했기 때문에 hiBoard.어쩌구가 들어가게 되는 거임..

    .https://jetalog.net/20

     

    [JSTL core] [c:forEach] varStatus를 활용한 변수

    forEach문은 아래와 같이 활용한다. // 반복해서 표시할 내용 혹은 반복할 구문 이 때, 상태용 변수를 status라고 지정했다면 아래와 같이 활용할 수 있다. ${status.current} 현재 for문의 해당하는 번호 ${

    jetalog.net

     

    컨트롤러에서 어노테이션 이용해서 쿠키 이름 상수 정의하기 (쓸때마다 "USER_ID" 찾아도 되긴 하는데 아래가 더 편하기도 하고 오류날 가능성도 적음) 

    @Value("#{env['auth.cookie.name']}")
    private String AUTH_COOKIE_NAME;

     

    인서트 하기 전에 (게시판 글쓰기에서) 첨부파일 인서트에 사용하기 위해 키값 빼놓기

    <insert id="boardInsert" parameterType="com.sist.web.model.Hiboard">
     <!-- 선행처리기 (시퀀스 생성) -->
     <selectKey resultType="long" keyProperty="hiBbsSeq" order="BEFORE">
     		SELECT SEQ_HIBOARD_SEQ.NEXTVAL FROM DUAL
     </selectKey>
    	INSERT INTO	(HIBBS_SEQ,
    				USER_ID,
    				HIBBS_GROUP,
    				HIBBS_ORDER,
    				HIBBS_INDENT,
    				HIBBS_TITLE,
    				HIBBS_CONTENT,
    				HIBBS_READ_CNT,
    				HIBBS_PARENT,
    				REG_DATE)
    	 VALUES
    				 VALUES
    				(#{hiBbsSeq},#{userId},#{hiBbsSeq},#{hiBbsOrder},#{hiBbsIndent},
    				#{hiBbsTitle},#{hiBbsContent},0,#{hiBbsParent},SYSDATE)
    </insert>
    enctype="multipart/form-data"

    첨부파일 있는 form의 경우에는 무조건 위의 type으로보내야 함...

    ->https://www.tcpschool.com/html-tag-attrs/form-enctype

     

    코딩교육 티씨피스쿨

    4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

    tcpschool.com

    enctype의 의미는 해당 form이 인코딩되는 방식을 정하는 것. 

    <h2>게시물 쓰기</h2>
       <form name="writeForm" id="writeForm" method="post" enctype="multipart/form-data">
          <input type="text" name="userName" id="userName" maxlength="20" value="${user.userName}" style="ime-mode:active;" class="form-control mt-4 mb-2" placeholder="이름을 입력해주세요." readonly />
          <input type="text" name="userEmail" id="userEmail" maxlength="30" value="${user.userEmail}" style="ime-mode:inactive;" class="form-control mb-2" placeholder="이메일을 입력해주세요." readonly />
          <input type="text" name="hiBbsTitle" id="hiBbsTitle" maxlength="100" style="ime-mode:active;" class="form-control mb-2" placeholder="제목을 입력해주세요." required />
          <div class="form-group">
             <textarea class="form-control" rows="10" name="hiBbsContent" id="hiBbsContent" style="ime-mode:active;" placeholder="내용을 입력해주세요" required></textarea>
          </div>
          <input type="file" id="hiBbsFile" name="hiBbsFile" class="form-control mb-2" placeholder="파일을 선택하세요." required />
          <div class="form-group row">
             <div class="col-sm-12">
                <button type="button" id="btnWrite" class="btn btn-primary" title="저장">저장</button>
                <button type="button" id="btnList" class="btn btn-secondary" title="리스트">리스트</button>
             </div>
          </div>
       </form>
       <form name="bbsForm" id="bbsForm" method="post">
       		<input type="hidden" name="searchType" value="${searchType}"/>
       		<input type="hidden" name="searchValue" value="${searchValue}"/>
       		<input type="hidden" name="curPage" value="${curPage}"/>
       </form>

     javaScript 단에서 form 보낼 내용을 편하게 다루기 위해 formData 형식을 선언해서 초기화를 함 .

     

    총 게시물 수:

    <select id="boardListCnt" parameterType="com.sist.web.model.Hiboard" resultType="long">
    	SELECT  COUNT(A.HIBBS_SEQ) AS CNT
    	  FROM  TBL_HIBOARD A, TBL_USER B 
    	 WHERE  A.USER_ID = B.USER_ID
    	   AND  B.USER_NAME LIKE '%오%'
    	   AND  A.HIBBS_TITLE LIKE '%제%'
    	   AND  DBMS_LOB.INSTR(A.HIBBS_CONTENT, '내') > 0;
    </select>

    위 경우는 long 타입으로 리턴하기 위해 지정해주는 것. 

     

    제이쿼리는 브라우저에서 실행 : $( 여기 )  ... 소괄호

    el 문법은 서버에서 실행되어서 값을 채워서 넘어옴:  ${여기}  ... 중괄호

     

    myBatis가 자바로 바꿔주는데 ""이면 String으로 생각함, 

    댓글