1024 spring

yunha·2023년 10월 24일
0

JSP/Spring

목록 보기
19/36

스프링 MVC 애플리케이션 프로젝트 구조

서블릿 관련 폴더

: src/main/Java 폴더 내 패키지
: +개발자가 만든 예외 클래스나 기타 유틸 클래스 파일 등

  • 자바 파일
  • 라이브러리 파일

웹 관련 폴더

: src/main/webapp 폴더 내 패키지
: 웹과 관련된 JSP, 리소스, 스프링 MVC 환경 설정 파일, 웹 프로젝트 환경 설정 파일

  • resources : 웹 관련 이미지, 자바스크립트, CSS 등 정적 리소스 파일 관리
  • 스프링 MVC 환경 설정 파일
    -- spring 폴더 : 빈(Bean) 객체들을 등록하는 서블릿 설정 파일인 스프링 MVC 설정 파일(기본형 : 서블릿 이름-servlet.xml)을 관리. 스프링 시큐리티 설정 파일 같은 스프링 관련 설정 파일들이 저장됨
  • JSP 파일
    : views 폴더 - 웹 페이지인 JSP 파일 관리
  • 웹 프로젝트 환경 설정 파일
    : web.xml - 웹 프로젝트 설정 파일. 여기에 리스너, 서블릿 필터 등 설정. 반드시 src/main/wenapp/WEB-INF 폴더에 위치해야 함
  • Maven 관련 환경 설정 파일
    : pom.xml - 메이븐 관련 환경 설정 파일. 필요한 라이브러리를 추가해 사용할 수 있게 함

환경 설정 파일

web.xml

: 스프링 웹 프로젝트가 실행되면 가장 먼저 읽어 들임
: 웹 프로젝트의 배포 설명자.배치 기술서(deployment descriptor)
: 웹 프로젝트가 배포되는 데 이용되는 XML 형식의 자바 웹 애플리케이션 환경 설정 부분을 담당

  • 네임 스페이스, 스키마 선언(정의)
    : xml 문서 작성 시 요소 중복 방지
    : 네임 스페이스-코드에서 이름 같지만 내용이 전혀 다른 요소 구별되도록 함
    : 스키마-코드 구조와 요소, 속성 관계를 정의해 다양한 자료형을 사용할 수 있도록 정의된 문서 구조-틀-을 의미)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee"
    	--> 기본 XML 스키마 네임 스페이스 명시, 속성 값은 모든 스키마 갖고 있음
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	--> 인스턴스 네임 스페이스 URI 지정. 속성 값 대부분 XML 스키마 표준인 W3C XML 스키마 나타냄
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    	--> 참고하고자 하는 인스턴스 문서의 URL 지정. 속성 값 두 개는 공백으로 구분
        	(사용할 네임 스페이스(보통 기본 네임 스페이스와 동일) 참조할 스키마 파일 이름)
  • 루트 컨텍스트 설정root-context
    : 모든 서블릿과 필터가 공유할 수 있는 루트 스프링 컨테이너 설정, 공통 빈(Service, Repository(DAO), DB, Log 등)을 설정
    : 주로 View 지원을 제외한 bean 설정
<!--기본 설정 파일 외 사용자가 직접 제어하는 XML 파일 목록 지정-->
	<context-param> 
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/**root-context.xml**</param-value>
          --> 모든 서블릿과 필터에서 사용되는 루트 스프링 컨테이너(애플리케이션 컨텍스트, ioc 컨테이너) 설정
	</context-param>
	
	<!-- 루트 컨텍스트에 설정된 정보들을 모든 서블릿과 필터에 공유 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
  • 서블릿 컨텍스트 설정ServletContext
    : 서블릿 하나가 서블릿 컨테이너와 통신할 때 사용하는 메서드들을 가지고 있는 클래스
    : 디스패처 서블릿이 모든 요청을 받고 요청 URL을 처리하는 컨트롤러에 매핑할 수 있도록 해 웹 애플리케이션 안에 있는 모든 서블릿을 관리하며 정보를 공유할 수 있게 도움
<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name> --> 서블릿 이름
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        										--> DispatcherServlet 클래스 설정
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param> --> <context-param> 요소 역할과 동일
		<load-on-startup>1</load-on-startup> --> 로딩 순서 설정(서블릿 다수)
	</servlet>
		
	<servlet-mapping>
    	--> 웹 브라우저에서 요청되는 URL에 대한 디스패처 서블릿이 서블릿에 매핑하는 역할
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern> --> 서블릿 매핑을 위한 URL 패턴 설정
	</servlet-mapping>

스프링 MVC 환경 설정 파일

  • servlet-context.xml
    : 웹 요청을 직접 처리할 컨트롤러의 매핑을 설정(HandlerMapping)하거나 뷰를 어떻게 처리할지 설정(ViewResolver)할 수 있음
    : 여기 등록된 빈들은 서블릿 컨텍스트에서만 사용됨
    : view(jsp 웹 페이지)와 관련 있는 빈 객체 설정 - 컨트롤러, MultipartResolver, Interceptor, URI와 관련 설정을 담는 클래스를 설정


  • root-context.xml
    : 다른 뤱 컴포넌트들과 공유하는 자원들을 선언하는 용도로 사용
    : 여기 등록된 빈들은 모든 컨텍스트에서 공유되어 사용됨
    : view(jsp 웹 페이지) 제외 스프링 자체 설정 - Service, Repository(DAO), DB, 로그 등 웹 애플리케이션의 비즈니스 로직을 위한 컨텍스트를 설정+객체 정의
servlet-context 설정
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- servlet-context.xml : 스프링 웹(view) 설정 파일
   뷰(JSP 웹 페이지)와 관련 있는 빈 객체를 설정함. 즉, 컨트롤러, MultipartResolver, Interceptor, URI와 관련 설정을 담는 클래스를 설정함
 -->
	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model
	   @Controller, @RequestMapping 같은 애너테이션을 사용 시 필요한 빈 객체들을 자동으로 등록함
	   핸들러 어댑터의 빈 객체도 대신 등록함
    -->
	<annotation-driven /> => 컨트롤러 매핑 설정

<!-- 정적 리소스 설정 -->
	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<!-- static folder설정(정적 폴더 설정)=>css, images, upload, js 
	   서버에서 앞서 처리될 필요가 없는 정적 리소스 파일을 처리하는 역할 수행
	   웹 애플리케이션의 물리적 경로 이름을 설정하고 이 경로에 정적 리소스 파일들을 저장하면
	   소스 코드나 웹 브라우저의 주소창에서 해당 리소스의 경로를 사용하여 직접 접속할 수 있음
	   정적 리소스란 클라이언트에서 요청이 들어왔을 때 요청 리소스가 아미 만들어져 있어 그대로 응답하는 것
	   mapping : 웹 요청 경로 패턴을 설정. 컨텍스트 경로를 제외한 나머지 부분의 경로와 매핑
	   location : 웹 애플리케이션 내에서 실제 요청 경로의 패턴에 해당하는 자원 위치를 설정. 위치가 여러 곳이면 각 위치를 쉼표로 구분
   -->
	<resources mapping="/resources/**" location="/resources/" />
<!-- 뷰 매핑 설정 -->
	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<!-- kr.or.ddit 패키지를 컴포넌트 스캔 대상으로 함 
	   자바 클래스를 생성할 때 빈 객체를 자동으로 등록
	   component-scan : 스프링 MVC에서 사용할 빈 객체를 일일이 XML에 등록하지 않아도 필요한 애너테이션을 자동으로 인식할 수 있게 함
	   component-scan 요소를 사용하지 않으면 골뱅이Controller가 선언된 컨트롤러를 빈 객체로 등록해야 함. 또한, 의존관계가 있는 자바 클래스가 있다면
	   <bean> 요소를 이용하여 빈 객체를 일일이 등록해야 함
	   beans:bean class="...Controller"...
	   
	   component-scan 요소가 자동으로 인식하는 애너테이션
	   @Component : 특별히 역할 구분 없이 컴포넌트라고 알려 주는 역할
	   @Repository(DB 작업 관련), Service(서비스 관련), controller(MVC 컨트롤러 컴포넌트).
       : 어떤 종류의 컴포넌트인지 알려 주는 역할을 함
	   @Required : 필수 프로퍼티임을 명시
	   @Autowired : 의존 관계를 자동 설정 시 사용. 타입을 이용하여 의존하는 객체를 삽입
	   @Inject : 특정 프레임워크에 종속되지 않는 애플리케이션을 구성하는 데 사용함
   	-->
	<context:component-scan base-package="kr.or.ddit" /> --> 자바 클래스의 빈 객체 설정
</beans:beans>

맞춰서 설정(폴더,파일 생성)

value="classpath:/sqlmap/**/*_SQL.xml" />
		      <property name="configLocation"
		       value="/WEB-INF/mybatisAlias/mybatisAlias.xml" />
		   </bean>

jre : java runtime environment(실행 환경)
jdk : java development kit(개발 도구)

PL/SQL(Procedual Language / Structed Query Language)

/
Package
User Function
Stored Procedure
Trigger
Anonymous Block
/

자동 선언 변수형 정수

--10분 전의 데이터 확인
SELECT * FROM BOOK
AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' MINUTE);

profile
기록

0개의 댓글