728x90
Tomcat 서버 다운 및 기본 setting
더보기
분리된 spring project 생성
- Spring Legacy Project : Spring 의 기본 프로젝트
- Spring Starter Project : Spring-Boot의 기본 프로젝트
- Finish 누르고 좀 기다리기 (모듈 다운로드 기다려야함)
Tomcat 설치
1 project 1 server
연결 안되서 facets - build path 확인
Spring 프로젝트 연결
pom.xml - 모듈 다운로드
spring version, java version 변경
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.simple</groupId>
<artifactId>basic</artifactId>
<name>SpringBasic</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<!-- 컨택스트 패스 변경 - artifactId를 변경, 톰캣의 module에서 변경 -->
<!-- pom.xml에서 사용할 변수들 -->
<!-- 자바버전 11, 스프링버전 변경 -->
<properties>
<java-version>11</java-version>
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
- 나중에 회사가면 해야함, 프로젝트에서 바로 사용할 수 있게 해주는 플랫폼
- java-version, springframework-version 변경 ▶ Maven이 자동으로 다운로드를 실행
Maven version 변경
<!-- 3. 메이븐 설정 - 메이븐 컴파일 버전 3.8.1 변경, 컴파일 자바 레벨 11 -->
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- 요기!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
- Maven version 설정
- source, target은 컴파일 자바 레벨
- 이후 update project를 실행
Servlet - 최소 3.1 이상으로 변경 *높이기
<dependencies>
<!-- Servlet -->
<!-- 서블릿 버전 최소 3.1이상으로 변경 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- 테스트 환경 - spring-test모듈 and junit 기능 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
<scope>test</scope>
</dependency>
</dependencies>
필요한 모듈 다운
오라클 커넥터mysql 커넥터스프링 jdbc 모듈히카리 커넥션 풀테스트 환경: spring-test, junitMyBatisMyBatis-spring
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!-- 오라클커넥터 -->
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.1.0.0</version>
</dependency>
<!-- mysql커넥터 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<!-- 스프링 jdbc 모듈 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<!-- 히카리 커넥션 풀 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.3.1</version>
</dependency>
<!-- 테스트환경 - spring-test 모듈 and junit기능 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
<scope>test</scope>
</dependency>
<!-- Test 버전은 최소 4.12 이상 (호환) -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 마이바티스 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- 마이바티스-스프링 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
web.xml
한글처리
<!-- 한글 처리 필터 코드, requestSetCharacter 필요없이 해줌 -->
<!-- 스프링에서 지공하는 인코딩필터 등록 -->
<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>
<!-- 위에 지정한 encodingFilter이름을 모든 패턴에 적용 -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
dispatcherServlet 등록
<!-- 디스패쳐 서블릿 등록 -->
<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/config/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>
spring 전역 파일 설정
<!-- 스프링 전역 설정파일 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
HomeController.java
package com.simple.controller;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
//로그 출력기능 - 패키지별로 등록을 해줘야 하는데 log4j.xml에 등록
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
}
- RequestMapping한 http://localhost:8282/basic/ 으로 들어가면 get 방식으로 보내짐
- return으로 view - home.js 열림
error
405 - 클라이언트측에서 잘못했다 거절, 허용되지 않는 메서드
404 - 경로 잘못줌, 찾을 수 없음
context
- Spring Context는 이러한 공통 부분을 서블릿에서 총 2가지의 Context로 분리시킴
1. ROOT-CONTEXT (공통 부분)
모든 서블릿이 공유할 수 있는 Bean들이 모인 공간.
DB와 관련된 Repository, Service 등이 있음
2. SERLVET-CONTEXT (개별 부분)
서블릿 각자의 Bean들이 모인 공간.
웹, 앱 마다 한 개씩 존재하므로 웹 앱 그자체를 의미하기도 함
이 Context 내에서의 Bean들은 서로 공유될 수 없음
MVC의 Controller가 이에 해당
contextPath 바꾸기
- 톰캣이 프로젝트를 구분할 때 사용하는 contextPath가 여기서는 controller가 됨
- controller를 basic으로 바꾸려면 pom.xml의 <artifactId> 태그 바꾸기
- 서버(톰캣)의 modules에서 /path 이름을 /basic으로 변경
오늘 하루
더보기
기억에 남는 부분
-
-
어려운 부분
-
-
문제 해결 부분
-
-
728x90