📌 Maven

  • Maven 프로젝트
    - java app, dynamic web project, spring mvc project 를 만들 수 있다.

  • 특징
    - pom.xml 문서가 존재한다.
    - pom.xml 에는 프로젝트의 설정, 주로 의존 라이브러리의 목록이 들어 있다.
    - 필요한 의존 라이브러리가 있다면 pom.xml 에 dependency 설정을 추가하는 것만으로 자동 다운로드되고 사용할 준비가 된다.
    - Maven 프로젝트를 사용하기 위해서는 다운로드 받아야 한다.

  • Dependency 설정하기
    - MvnRepository 에서 Dependency 라이브러리를 찾아 복사해서 pom.xml의 Dependencies 태그 안에 붙여 넣는다.


📌 Tomcat Server

  • Tomcat Server
    - web.xml 에서 서버의 동작 방식을 설정한다.


📌 Spring 내부 Servlet

  • Servlet
    - WEB-INF 폴더 내에 web.xml 파일
    - servlet 태그 존재
    - DispatcherServlet을 사용할 수 있도록 Servlet 설정
    - servlet-mapping 태그의 url-pattern에서 루트 요청을 맵핑을 한다.

    DispatcherServlet이 Spring을 동작할 수 있도록 하는 핵심 요소이다.

<servlet>
	<servlet-name>appServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
	<servlet-name>appServlet</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>


📌 DispatcherServlet

  • DispatcherServlet
    - servlet-context.xml 에서 DispatcherServlet 동작 방식을 설정


📌 DispatcherServlet 동작 설정 방법

  • DispatcherServlet 동작
    - servlet-context.xml 파일에서 동작 설정 가능
    Spring Framework가 동작하는 방식을 설정하는 파일이다.

  • 서버 동작 방식
    1. 클라이언트 요청
    2. Web Server로 요청이 이동
    3. DispatcherServlet이 요청을 처음으로 받아 Controller에게 전달
    4. Controller에서 데이터(Model)를 처리
    5. Request에 데이터(Model)을 담아 jsp 페이지(View)forward
    6. jsp 페이지(View)데이터(Model)을 클라이언트에게 응답한다.


📌 MVC 모델

  • MVC
    - M : Model, 데이터 (Request에 담겨지는 데이터)
    - V : View (클라이언트에게 응답되어지는 페이지)
    - C : Controller (요청을 받아 데이터를 처리하는 @Controller 객체)


📌 Spring Framework 사용 이유

  • 특징
    - 유지보수 용이성 : 객체들간의 의존관계가 느슨해져서 용의하다.

  • 의존관계를 느슨하게 하는 방법
    - 필요한 핵심 의존 객체의 생성관리를 프레임워크에게 맡긴다.
    - interface type을 적극 활용한다.


📌 Spring MVC 프로젝트 설정

1. pom.xml 파일 수정

		<!-- 추가 의존 라이브러리 -->
		<!-- MyBatis 라이브러리 -->
	  	<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>
	  	<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.0</version>
		</dependency>
		<!-- Spring JDBC 라이브러리 -->
	  	<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<!-- 파일업로드 처리를 위한 라이브러리 (SmartEditor 에서도 필요함)-->
	  	<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.4</version>
		</dependency>
	  	<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>						
		<!--  json, xml 응답을 편하게 할수 있도록 도와 주는 라이브러리 -->
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-databind</artifactId>
		    <version>2.6.0</version>
		</dependency>
		<!-- Aop 용 라이브러리 -->
	  	<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
	  	<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.0</version>
		</dependency>
	  	<!-- Spring Security 관련 라이브러리 -->
	  	<dependency>
		    <groupId>org.springframework.security</groupId>
		    <artifactId>spring-security-web</artifactId>
		    <version>4.0.0.RELEASE</version>
		</dependency>
		<!-- 트렌젝션 처리를 위한 라이브러리 -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-tx</artifactId>
		    <version>4.0.0.RELEASE</version>
		</dependency>
                       <!-- 오라클 라이브러리 -->
		<dependency>
		    <groupId>com.oracle.database.jdbc</groupId>
		    <artifactId>ojdbc8</artifactId>
		    <version>21.1.0.0</version>
		</dependency>







2. web.xml 파일 수정

<!-- post 방식 전송될때  한글 깨지지 않도록 Spring 인코딩 필터 정의하기  -->
<filter>
   <filter-name>EncodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
   </init-param>
</filter>
<!-- Spring 인코딩 필터 맵핑하기 -->
<filter-mapping>
   <filter-name>EncodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>


3. HomeController.java 파일 수정





4. web.xml 파일 수정
- Controller에서 /home.do로만 요청 맵핑했기 때문에 루트 경로에 접근해도 아무런 페이지가 뜨지 않는다.
- web.xml 파일에 welcome-file-list를 추가한다.



📌 Controller 메소드

  • RequestMapping 메소드
    - 반환값은 String으로 반환할 수 있다.
    - 요청으로 온 파라미터의 이름과 동일하게 메소드의 인자값으로 받을 수 있다.(req 사용 X)
@RequestMapping("/send.do")
public String send(HttpServletRequest req) {
	String msg = req.getParameter("msg");
	req.setAttribute("msg", msg);
	return "result";
}

@RequestMapping("/send2.do")
public String send2(HttpServletRequest req, String msg) {
	req.setAttribute("msg", msg);
	return "result";
}


profile
데이터 사이언티스트를 목표로 하는 개발자

0개의 댓글