본문 바로가기
수업내용

20230622 수업내용🤦‍♂️🤦‍♂️🤦‍♂️

by titlejjk 2023. 6. 23.

첫 수업시작은 vue

여지껏 서버에서는 서버사이드랜더링을 많이했지만 vue나 react를 통해 클라이언트사이드 랜더링을 배워보겠다.

기본적으로 출력할 데이터는 서버에있는데 페이지 전환없이 데이터를 출력하는 방법중 하나로 fetch를 배워보겠다.

xml형식이나 json형식으로 주는 방법도 있는데 이중에 json을 활용해 보겠다.

JSONWriter.valueToString을 사용하여 list에 데이터를 담아주고 json 참조값에 담아준다.

Vue의 created메소드를 사용해서 웹브라우저에 페이지 전환없이 출력

2교시는 Spring시간

위에는 모두 다 Bean이다.

SqlSession 은 DB와 연동되어있는 bean이다./SqlSession 은 mapper를 로딩해준다.

Service는 Controller에서 사용하는 util이라 생각하면 좋다.

위 처럼 반복되는 코드는 configuration에서 관리가 가능하다.

 

오후시간에는 Interceptor에 대해서 배우나보다..

새로운 프로젝트를 만들어주면서 새롭게 xml을 설정해 주었다.

<!-- MyInterceptor 가 bean이 되도록 한다. -->
	<beans:bean id = "myInterceptor" class="com.gura.spring03.interceptor.MyInterceptor"/>
	
	<!-- 인터셉터 목록 등록 -->
	<interceptors>
		<!-- myInterceptor 가 /play 요청에 대해 끼어 들도록 설정한다. -->
		<interceptor>
			<mapping path="/paly"/>
			<beans:ref bean="myInterceptor"/>
		</interceptor>
	</interceptors>
 @Override
	   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
	         throws Exception {
	      //세션 객체의 참조값을 얻어와서 
	      HttpSession session=request.getSession();
	      String id=(String)session.getAttribute("id");
	      //만일 로그인을 하지 않았다면
	      if(id == null) {
	         //로그인 페이지로 리다일렉트 이동 시키고 false 를 리턴한다.

	         //원래 가려던 url 정보 읽어오기
	         String url=request.getRequestURI();
	         //GET 방식 전송 파라미터를 query 문자열로 읽어오기 ( a=xxx&b=xxx&c=xxx )
	         String query=request.getQueryString();
	         //특수 문자는 인코딩을 해야한다.
	         String encodedUrl=null;
	         if(query==null) {//전송 파라미터가 없다면 
	            encodedUrl=URLEncoder.encode(url);
	         }else {
	            // 원래 목적지가 /test/xxx.jsp 라고 가정하면 아래와 같은 형식의 문자열을 만든다.
	            // "/test/xxx.jsp?a=xxx&b=xxx ..."
	            encodedUrl=URLEncoder.encode(url+"?"+query);
	         }
	         
	         //3. 로그인을 하지 않았다면  /users/loginform.do 페이지로 리다일렉트 이동 시킨다. (HttpServletResponse)
	         String cPath=request.getContextPath();
	         response.sendRedirect(cPath+"/users/loginform?url="+encodedUrl);
	         return false;
	      }
          //로그인을 했다면 흐름을 이어간다.
          return true;
         }

preHandle 러 안에 session영역에 담긴 id가 입력한 id랑 맞지 않으면 if문을 실행해서 false를 반환한다.

이 기능이 filter보다 좋은점이 뭐냐면 핸들러 인터셉터는 조금더 세밀하게 설정이 가능하다.

 

위 코드를 동작하게 하려면 servletContext에 들어가서 인터셉터를 추가해준다.

Spring에서 mvc파일업로드처리

pom.xml 에 commons-io, commons-fileupload 처리를 위한 라이브러리가 필요하다(SmartEditor에서도 필요하다)

댓글