jdk 버전, 스프링 버전 수정

 

<!-- pom.xml -->
<properties>
	<java-version>1.8</java-version>
	<org.springframework-version>4.3.8.RELEASE</org.springframework-version>
	<org.aspectj-version>1.6.10</org.aspectj-version>
	<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

 

 

프로젝트 우클릭 -> properties -> Project Facets

 

java version 수정

 

 

pom.xml에 데이터 관련 라이브러리 추가

 

<!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.18</version>
</dependency>

<!-- MyBatis -->
<dependency>
	<groupId>org.mybatis</groupId>				
    <artifactId>mybatis</artifactId>
	<version>3.4.1</version>
</dependency>
		
<!-- MyBatis-Spring -->
	<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>1.3.0</version>
</dependency>
		
<!-- spring-jdbc -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>${org.springframework-version}</version>
</dependency>

<!-- spring-test -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>${org.springframework-version}</version>
</dependency>

 

- mysql-connector-java 버전은 자신의 버전에 맞게 작성해야 합니다!

 

 

TDD 방식 사용을 위한 JUnit 버전과 Servlet 버전 변경

 

<!-- servlet -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
</dependency>

<!-- Test -->
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<scope>test</scope>
</dependency>

 

project 우클릭 -> properties -> Java Build Path -> Libraries -> Add Library -> JUnit -> next -> JUnit4 -> finish

 

 

 

JRE System Library 버전 번경

 

 

 

그 다음 controller, domain, persistence, service, mapper 패키지 생성

 

 

window -> preferences -> web -> css, html등 UTF8 설정

 

 

tomcat 루트 경로 변경 

 

 

이제 크롬에서 http://localhost:8081 을 입력하면 

다음과 같이 접속이 됩니다.

'JAVA > blog' 카테고리의 다른 글

비즈니스 계층(service)  (0) 2020.07.08
persistence 계층(영속 계층)  (0) 2020.07.08
프로젝트 생성 후 character encoding setting  (0) 2020.07.06
게시판 목록페이지와 정보 유지  (0) 2020.02.20
페이징 구현시 정렬  (0) 2020.02.20

프로젝트를 생성 후 서버를 작동하면 한글이 깨지는 현상이 발생합니다.

제대로 한글이 표시가 되게 하기 위해서 

web.xml에 다음의 코드를 작성하면 정상적으로 작동합니다.

<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>

		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>

</filter>

<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
</filter-mapping>

 

 

'JAVA > blog' 카테고리의 다른 글

persistence 계층(영속 계층)  (0) 2020.07.08
게시판 project 초기설정  (0) 2020.07.08
게시판 목록페이지와 정보 유지  (0) 2020.02.20
페이징 구현시 정렬  (0) 2020.02.20
페이징 순서  (0) 2020.02.20

스프링 MVC를 이용하는 경우 작성되는 Controller는 다음과 같은 특징이 있습니다.

-  HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현

다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능

-  GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능

-  상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능

 

1. @Controller, @RequestMapping

 

테스트를 위한 controller class 작성

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/sample/*")
public class TestController {

}

 TestController의 클래스 선언부에는 @Controller라는 스프링 MVC에서 사용하는 어노테이션을 적용하고 있습니다.

작성된 TestController 클래스는 위와 같이 자동으로 스프링의 객체(Bean)로 등록되는데 servlet-context.xml에 그 이유가 있습니다.

 

servlet-context.xml의 일부

<context:component-scan base-package="kr.co.web.controller" />

- 프로젝트를 생성하면 자동으로 생성됩니다.

 

servlet-context.xml에는 <context:component-scan>이라는 태그를 이용해서 지정된 패키지를 조사(스캔)하도록 설정되어 있습니다.

해당 패키지에 선언된 클래스들을 조사하면서 스프링에서 객체(Bean) 설정에 사용되는 어노테이션들을 가진 클래스들을 파악하고 필요하다면 이를 객체로 생성해서 관리하게 됩니다.

TestController 클래스가 스프링에서 관리되면 화면상에는 클래스 옆에 작게 's'모양의 아이콘이 추가됩니다.

클래스 선언부에는 @Controller와 함께 @RequestMapping을 많이 사용합니다.

@RequestMapping은 현재 클래스의 모든 메서드들의 기본적인 URL 경로가 됩니다.

예를 들어, TestController 클래스를 다음과 같이 '/sample/*' 이라는 경로로 지정했다면 다음과 같은 URL은 모두 TestController에서 처리됩니다.

더보기

- /sample/aaa

- /sample/bbb

@RequestMapping 어노테이션은 클래스의 선언과 메서드 선언에 사용할 수 있습니다.

 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/sample/*")
public class TestController {
	
	private static final Logger logger = LoggerFactory.getLogger(BoardController.class);
	
	@RequestMapping("")
	public void basic() {
		logger.info("basic.........");
	}
}

 

프로젝트를 WAS에서 실행해보면 스프링이 인식할 수 있는 정보가 출력되는 것을 볼 수 있는데, 위와 같은 경우에는 아래와 같이 로그가 보입니다.

INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/sample/*]}" onto public void kr.co.web.controller.TestController.basic()

현재 프로젝트의 경우 '/'와 'sample/*'는 호출이 가능한 경로라는 것을 확인할 수 있습니다.

 

 

2. @RequestMapping의 변화

 

@Controller 어노테이션은 추가적인 속성을 지정할 수 없지만, @RequestMapping의 경우 몇 가지의 속성을 추가할 수 있습니다.

이 중에서도 가장 많이 사용하는 속성이 method 속성입니다.

method 속성은 흔히 GET방식, POST 방식을 구분해서 사용할 때 이용합니다.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/sample/*")
public class TestController {
	
	private static final Logger logger = LoggerFactory.getLogger(BoardController.class);
		
	@RequestMapping(value="/basic", method = RequestMethod.GET)
	public void basicGet() {
		logger.info("basic get..........");
	}
	
	@RequestMapping(value="/basic", method = RequestMethod.POST)
	public void basicPost() {
		logger.info("basic post..........");
	}
}

'JAVA > spring 이론' 카테고리의 다른 글

모델 2와 스프링 MVC  (0) 2020.07.03
프로젝트 로딩 구조  (0) 2020.07.02
스프링 MVC 프로젝트 내부 구조  (0) 2020.07.02

+ Recent posts