21-03-10 오늘 공부

songi Jeon·2021년 3월 10일
0

@ModelAttribute가 메소드의 파라미터로 사용할 경우 프로그램이 어떻게 돌아가는가

참조 사이트

  • modelAttribute속성으로 지정된 이름의 객체를 세션에서 읽어와서 form태그로 설정된 태그에 값을 설정합니다.
  • Spring MVC가 제공하는 tag 라이브러리를 이용하면 세션에 있는 정보들을 form에다가 출력을 할 수도 있습니다.

view.jsp

	<form:form commandName="searchVO" name="defaultFrm" id="defaultFrm" method="post">
    
    	<form:hidden path="seq" id="seq"/>
        <form:hidden path="atchFileId" id="atchFileId"/>
        
    </form:form>

sampleController.java

	@SuppressWarnings("unchecked")
	@RequestMapping(folderPath + "view.do")
public String view(@ModelAttribute("searchVO") SampleVO2 searchVO, Model model, HttpServletRequest request) throws Exception {

	return ".mLayout:" + folderPath + "view";
    
 }

form태그에 action이 없지만 대신 ModelAttribute의 "searchVO"에 post로 searchVO로 hidden값을 가지고 전송

SessionStatus 사용법

참조사이트
SessionStatus 는 컨트롤러 메소드의 파라미터로 사용할 수 있는 스프링 내장 타입으로,
이 오브젝트를 이용하면 현재 컨트롤러의 @SessionAttributes에 의해 저장된 오브젝트를(전달받은 값) 삭제하고자 할 때는 sessionStatus가 가지고 있는 setComplete()이라는 메서드를 호출하면 세션에서 삭제할 수 있습니다.

새로 알게된 용어

{템플릿 변수}
@RequestMapping 어노테이션 값으로 {템플릿변수} 를 사용합니다.

@PathVariable 어노테이션을 이용해서 {템플릿 변수} 와 동일한 이름을 갖는 파라미터를 추가하면 됩니다.


jQuery

mouseenter focusin

참조사이트
마우스 요소의 경계 외부에서 내부로 이동할 때 발생

형제(sibling) 요소의 선택

.siblings() 메서드
선택한 요소의 형제(sibling) 요소 중에서 지정한 선택자에 해당하는 요소를 모두 선택한다.
참조사이트

특정 선택자를 제외

.not(selector)

선택한 요소 중 특정 선택자를 제외한 요소를 선택합니다.
참조사이트

$("form id 또는 name").serialize()

jQuery에서 Ajax로 호출하기 전에 serialize를 해주면 form 안에 값들을 한 번에 전송이 가능한 data로 만들 수 있다.(즉, 많은 data를 전송할 때 유용)

serialize 사용할 경우

<script>
 
$.ajax({
  type: "",
  url  : 서버url,
  type : "POST",
  data : $("#food").serialize(),
  dataType: "json"
  success : function(){
    alert("사용하면 짧다");
  }
});
 
</script>

serialize 사용하지 않을 경우


<script>
 
$.ajax({
  type : "POST",
  url  : 서버url,
  data : {
    ramyun: 'good',
    pizza: 'nice',
    kimchi: 'good',
    dogfood: 'nope'
  },
  dataType: "json"
  success : function(){
    alert("사용하지 않으면 힘들다");
  }
});
 
</script>

참조사이트


SQL

페이징 공부를 위한 더미 데이터 생성을 위해 찾게 됨.
oracle과 LOOP문을 대신 MySQL은 프로시저를 생성해서 작동된다.
참고사이트
mysql 더미 데이터 생성, 같은 이름의 프로시저가 있으면 삭제 후 생성


DELIMITER $$
DROP PROCEDURE IF EXISTS loopInsert$$
 
CREATE PROCEDURE loopInsert()
BEGIN

	DECLARE i INT DEFAULT 5;

	WHILE i <= 20 DO

		INSERT INTO t_sample2 (SEQ, TITLE, CONT, RGST_ID )

          VALUES (i, concat('제목입니다',i), concat('내용입니다.',i),5);

		SET i = i + 1;

	END WHILE;
END$$
DELIMITER $$

사용은

CALL loopInsert;

[웹]View 컴파일 순서

웹페이지 리딩 순서:
Java -> Jstl -> Html -> Javascript


JSTL

<c:out>태그의 속성

excapeXml 속성 : 속성 값으로 true또는 false 값을 가진다. 생략시 기본값은 true이다.
true로 설정시 escapeXml속성은 값 중에 포함된 < > & ' " 문자들을 각각 < > & ' " 로 출력한다.


profile
비전공자가 백엔드 개발자 도전하는 블로그

0개의 댓글