성장 일기/쌍용교육센터 / / 2023. 5. 10. 17:47

0510/include, session, cookie, fileUpLoad

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/sangyongSpring에 올려두었습니다.


include

  - 중복 디자인이나 코드를 줄일 목적으로 사용
  - JSP를 include 할 수 있다.

  - <%@include %> : 중복 코드를 처리할 때
  - <jsp:include/> : 중복 디자인을 처리할 때 ( URI만 가능 )
  - <c:import /> : 중복디자인을 처리할 때 ( URI, URL 모두 가능 )

* jsp include

  - webapp 폴더 하위 jsp가 존재하는 경우

<!-- 처리된 데이터를 보여주지 않는 JSP -->
<jsp:include page="/경로/jsp명"/>

  - WEB-INF/views 폴더 jsp가 존재하는 경우  

<!-- 처리된 데이터를 보여주는 JSP -->
<jsp:include page="/WEB-INF/views/jsp명"/> 
<!-- 직접 include 하는 것 보다는 do를 include하는 것이 좋다. -->
<!-- 외부에서 직접 요청을 할 수 없지만 include 가능 -->


* do include

  - 액션 태그, JSTL 가능 - 코드의 병합은 안됨( <%@ include %> 같은 코드 안됨 )

<!-- jjsp 사용 -->
<jsp:include file="요청.do"/>
 <!-- jstl 사용 -->
 <c:import url="요청.do"/>

  - include되는 jsp에서는 외부 JSP에 요청된 web parameter를 받을 수 있다.

 

관계 유지

 -session, cookie

 

* session

  - 접속자 브라우저에 id를 부여하고, 접속자의 정보를 서버 측 메모리에 저장하는 기술
  - HttpServletRequest, HttpSession, @SessionAttributes를 사용할 수 있다.

 

* HttpServletRequest 사용

// 1. 요청 처리 method의 매개변수를 HttpServletRequest로 선언한다.
public String method(HttpServletRequet request){
// 2. 세션 얻기
HttpSession session=request.getSession();
}

 

* HttpSession 사용

// 1.요청처리 method의 매개변수를 HttpSession으로 선언한다.
public String method(HttpSession session){
// 세션 값 설정
session.setAttribute("이름",값);
// 세션 값 얻기
session.getAttribute("이름");
// 세션 생존 시간 설정 : DD 설정
session.setMaxInactiveInterval( 초 );
// 세션 값 삭제
session.removeAttribute("이름");
// 세션무효화
session.invalidate();
}

 

* @SessionAttributes

  - class 위에 선언한다. 
  - Model에 같은 이름으로 값을 설정하면 세션에 값이 할당 된다.
  - 값 설정

// 1. SessionAttributes 선언
@SessionAttributes({"이름", ...})
@Controller
public class Test{   
// 2. method에서 Model을 매개변수로 선언
public String method( Model model ){
// 3. SessionAttributes에 존재하는 이름과 동일한 이름으로 값을 설정
model.addAttribute("이름",값); //request scope과 session scope에 값이 들어간다.
}
}

  - 값 얻기 : Spring 5.2부터는 Model.getAttribute  method가  추가되었다.

    Controller 얻기( HttpSession 사용 )

public String method( HttpSession session ){
session.getAttribute("이름");
}

     JSP얻기

<!-- 스크립트릿 사용 -->
<%= session.getAttribute("이름") %>
<!-- EL 사용 -->
${ sessionScope.이름 }

  - 세션 삭제

    org.springframework.web.bind.support.SessionStatus interface사용

    HttpSession으로는 세션 삭제가 되지 않는다.

// 1. SessionStatus를 매개변수로 선언
public String method( SessionStatus ss ){
// 2. 세션 모든 값 삭제
ss.setComplete();
}

 

 

Cookie

  - 값을 설정하는 코드는 이전의 코드를 그대로 사용
  - @CookieValue를 사용하여 값을 손쉽게 얻을 수 있다.
   - 쿠키 값 설정

  1. 쿠키를 심기위해 HttpServletResponse를 입력받는다.
  public String method( HttpServletResponse response){
   
  2. 쿠키 생성.
    Cookie cookie=new Cookie(“이름”, “값”);
  3. 생존시간 설정. –설정하지 않으면 브라우저가 열려있는 동안만 유지
   cookie.setMaxAge(생존시간);
  4. 쿠키심기
    response.addCookie( cookie );

  - 쿠키 값 얻기( 매개변수로 쿠키에 설정된 값을 얻는다. )

    @CookieValue(value="쿠키이름",defaultValue="쿠키가 없을 때 설정될 값")

public String method(@CookieValue( value="쿠키이름",defaultValue="쿠키가 없을 때 설정될 값" )데이터형 변수명, ... ){
return "링크페이지";
}


FileUpload

  - Parameter  전송방식이 아닌 파일 전송방식으로 요청을 처리

  - 요청 처리 method에 매개변수로 VO를 넣는다고 입력값이 들오지 않는다.

// 1. 매개변수에 HttpServletRequest를 선언
public String method( HttpServletRequest request ){
// 2. pom.xml에 <dependencies>노드 하위에 cos.jar에 관한 아래 노드를 정의하고
// 파일 업로드 컴포넌트에 요청 처리 객체를 넘겨준다.
// MultipartRequest ( cos.jar에 있는 메서드 )
MultipartRequest mr=new MultipartRequest( request ,... );
// 3. 파일업로드 컴포넌트를 통해 파라메터를 받는다. 
mr.getFileSystemName("이름")
mr.getParameter("이름")
mr.getParameterValues("이름");




'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0512/Spring, 강결합, 약결합  (1) 2023.05.15
0511/AJAX  (0) 2023.05.15
0509/Controller에서 View로 데이터 전송  (0) 2023.05.09
0508/Spring MVC  (0) 2023.05.08
0504/Spring 흐름  (0) 2023.05.04
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유