원지의 개발
article thumbnail
728x90

Tomcat 서버 다운 및 기본 setting

더보기

분리된 spring project  생성

  • Spring Legacy Project : Spring 의 기본 프로젝트
  • Spring Starter Project : Spring-Boot의 기본 프로젝트
MVC Project 생성 - 첫 생성시 다운로드 필요
com.simple.controller로 패키지 선언
  • Finish 누르고 좀 기다리기 (모듈 다운로드 기다려야함)

Tomcat 설치

spring 폴더에 압축 해제
new server로 연결
톰캣 기본 setting

1 project 1 server

연결 안되서 facets - build path 확인

apatche tomcat v9.0 체크
servlet-context.xml에서 mvc 체크

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으로 변경

pom.xml
tomcat server의 모듈에서 바꿔주기


오늘 하루

더보기

기억에 남는 부분

 

어려운 부분

 

문제 해결 부분

 

728x90
profile

원지의 개발

@원지다

250x250