Spring-Maven(Setting)

김덕근·2023년 4월 21일
0

Spring

목록 보기
2/19

initFilter = Logger 객체 생성(log4j.xml setting), contextPath
Handler Mapping = web.xml
Controller = MemberController.java
View Resolver = ServletContext.xml
Pom.xml = 라이브러리

Maven
버전 정보 및 라이브러리 정보들을 통합하여 관리하는 도구
프로젝트 관리, 버전정보, 라이브러리

+빌드 도구
+배포 도구

src/main/resources/log4j.xml
프로젝트 설정 자원(xml)

WEB-INF -> Spring(중요)폴더를 src/main/resources 자바쪽으로 이동


web.xml(배포 서술자)

  • WAS(Web Application Server) : 동적 웹(요청에 따라 응답페이지 생성)에서 사용하는 서버

WAS가 실행(배포 시작)될 때 가장 처음으로 읽어들이는 문서

  • 서버 실행 시 초기 설정 내용 또는 설정 내용이 작성된 파일을 읽고 수행하도록 함.

Web.xml(version 4.0 변경)
JAVA 대문자로 변경
classpath: 작성하기
filter 추가
classpath:spring/spring-security.xml 추가

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://JAVA.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_4_0.xsd">
    
<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
          classpath:spring/root-context.xml
          classpath:spring/spring-security.xml
        </param-value>
</context-param>

<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring/appServlet/servlet-context.xml</param-value>
</init-param>


<!-- 한글 깨짐 방지를 위한 Filter 추가 -->
<!-- 별도의 filter 클래스를 만들지 않고 스프링에서 제공하는 filter를 사용 -->
	<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>
	
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

pom.xml 라이브러리 적용

		<!-- lombok 라이브러리 -->
		<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
		<dependency>
		    <groupId>org.projectlombok</groupId>
		    <artifactId>lombok</artifactId>
		    <version>1.18.24</version>
		    <scope>provided</scope>
		</dependency>

라이브러리 태그 추가

WEB-INF -> lib 만들어서 taglibs 3개 라이브러리 추가

HomeController.java
home.jsp 삭제

webapp안에 community 적용해보기
자바 패키지명 edu.kh.comm.common.filter
클래스명 initFilter
슈퍼클래스 HttpFilter(위에)


initFilter.java

Logger 객체 생성 (해당 클래스에 대한 log를 출력하는 객체)

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Logger logger = LoggerFactory.getLogger(initFilter.class);

package edu.kh.comm.common.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


@WebFilter(filterName="initFilter", urlPatterns="/*")
public class initFilter extends HttpFilter implements Filter {
       
	// print 구문 사용하다 걸리면 바보
	// -> Logger 사용
	
	// Logger 객체 생성 (해당 클래스에 대한 log를 출력하는 객체)
	private Logger logger = LoggerFactory.getLogger(initFilter.class);
	
	// 필터가 생성될 때 실행
	public void init(FilterConfig fConfig) throws ServletException {
		// logger를 이용해서 출력하는 방법
		// trace - debug - info - warn - error
		
		// debug : 개발의 흐름 파악 (이게 실행이 되었는지, 파라미터가 현재 무엇인지 확인할 때)
		// info : 메소드 실행 파악

		// 이필터가 생성이 되었다 라는 정보를 출력하고 싶다! info 가 제일 적절함.
		logger.info("초기화 필터 생성");
	}
	
	// 필터가 파괴될 때 실행(서버는 켜져있는데 백엔드 코드가 수정되었을 때)
	public void destroy() {
		logger.info("초기화 필터 파괴");
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		// application 내장 객체 얻어오기
		ServletContext application = request.getServletContext();
		
		// 최상위 주소 얻어오기
		String contextPath =  ( (HttpServletRequest)request ).getContextPath();
									// 다운캐스팅
		// 세팅
		application.setAttribute("contextPath", contextPath);
		
		chain.doFilter(request, response);
	}




}

src/main/resources 안에

log4j.xml

파일에서
두번째 줄 주석처리
해당 부분때문에 에러가 날수도 있음 -> 기본으로 내장되어있는 log4j를 sts가 인식할수 없어서
원격에서 가지고 오겠다해서 원격 경로를 작성한 구문으로 수정!

<!-- <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> -->

아래 작성

<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

기존 appender 부분을 아래로 대체

<!-- Appenders -->
	<appender name="console"
		class="org.apache.log4j.ConsoleAppender">
		<param name="Target" value="System.out" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n" />
		</layout>
	</appender>

	<!-- sql 로그 출력용 패턴 지정 -->
	<appender name="sql-console" class="org.apache.log4j.ConsoleAppender">
		<param name="Target" value="System.out" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%m%n" />
		</layout>
	</appender>
	
	
	<!-- 날짜별 로그 파일 생성용 appender -->
	<appender name="dailyRollingFile"  class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File"  value="C:\\workspace\\7_Framework\\comm\\logs\\runtime-log.log" />
		<param name="encoding" value="UTF-8" />
		<param name="Append" value="true" />
		<param name="DatePattern" value="'.'yyyy-MM-dd"/>
		
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n" />
		</layout>
	</appender>
    
    
    
    
<!-- Application Loggers -->
<!-- 이 패키지 이하에서 출력되는 로그들을 출력하겠다.
		trace < debug < info < warn < error < fatal
-->
	<logger name="edu.kh.comm">
		<level value="debug" />
	</logger>
    
    <!-- info -> debug -->
    
    
    <!-- SQL 로그 출력 -->
	<logger name="java.sql.Connection">
		<level value="debug" />
		<appender-ref ref="sql-console" />
	</logger>

	<logger name="java.sql.Statement">
		<level value="debug" />
		<appender-ref ref="sql-console" />
	</logger>

	<logger name="java.sql.PreparedStatement">
		<level value="debug" />
		<appender-ref ref="sql-console" />
	</logger>

	<logger name="java.sql.ResultSet">
		<level value="debug" />
		<appender-ref ref="sql-console" />
	</logger>

	<logger name="jdbc.sqlonly" additivity="false">
		<level value="INFO" />
		<appender-ref ref="sql-console" />
	</logger>

	<logger name="jdbc.resultsettable" additivity="false">
		<level value="INFO" />
		<appender-ref ref="sql-console" />
	</logger>

    
    
    
profile
안녕하세요!

0개의 댓글