Spring 개발환경 세팅(2)

Jieun·2023년 4월 21일
0

📝 Spring 환경설정 및 커뮤니티 로그인, 회원가입 기능 공부
#230421


✔️ 프로젝트 구조변경하기

1. src/main/webapp/WEB-INF/spring스프링 프로젝트 설정파일 모아둔 거,
파란색 박스(src/main/resources)있는 곳으로 드래그 해서 옮기기


2. 점세개 버튼 눌러서 정렬 Hierarchical로 바꾸면 위에 바꾼 후와 같이 변경됨.


✔️ web.xml 파일 설정하기

3. web.xml파일 안에 빨간박스 부분 수정하기
(2.5 👉 4.0 / java 👉 JAVA 로 바꾸기)


4. 위에 빨간박스 부분 아래와 같이 수정하기
(파일위치가 변경되었으니 위치에 맞게 수정하기!)

첫번째 부분 
<param-value>classpath:spring/root-context.xml</param-value>
  
두번째 부분 
<param-value>classpath:spring/appServlet/servlet-context.xml</param-value>

수정하면 아래처럼 변경완료!




5. 파일 제일 끝에 filter내용 추가
이 코드를 xml에 쓰면 기존에 controller단에서 쓰던거 필요 없이 한글 인코딩됨.

	<!-- 한글 깨짐 방지를 위한 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>

💻 dispatcher 메모추가


✔️ pom.xml 에서 설정할거

6. pom.xml 파일 열어서 기존내용 모두 삭제하고,
아래위치에 있는 내용 모두 복붙하기

(위치)
[구글드라이브] - [7.Framework] - [spring관련모음] - [1_pom.xml 초기설정.txt의 사본] 파일내용 모두 복사해서 붙여넣기

❗ 1행이 이렇게 시작해야 맞는거임

<packaging>war</packaging> 스프링에서 자동설정하는 배포형식 

💻 properties 메모추가
💻 dependencies 메모추가 ( : JSTL 라이브러리 모아둔거임 )


✔️ 라이브러리 추가 및 필요없는 클래스 삭제

7. WEB-INF안에 lib폴더 만들어서,
기존에 사용하던 tag라이브러리3개 (impl, jstl, spec) 모두 넣기


  1. homeController / home/jsp 삭제하기

9.src/main/webapp에, 기존에 다운받은 [스프링 수업용 webapp] 폴더 3개 옮기기

ok / overwriteAll 하면 기존에 쓰던 커뮤니티 파일 열림


✔️ Filter 작업

  1. src/main/java 안에 filter 만들기
👉 아무거나 선택하고 ok

👉 설정할 Java package , Class name 적기

👉Superclass 지정 안되있으면 Browse... 버튼 클릭해서 설정해주기


  1. filter 만들고 나서, 필요없는 주석 삭제하기(아래 처럼)

  1. 필요한 내용 적기
    이렇게 적고 서버 돌리면 이미지 파일 다 나옴.

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); // Logger 
       
	// 필터가 생성될 때 실행
	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 {
		
		ServletContext application = request.getServletContext();
		
		// 최상위 주소 얻어오기
		String contextPath = ((HttpServletRequest)request).getContextPath();
		
		// 세팅
		application.setAttribute("contextPath", contextPath);
		// header.jsp 파일 연결경로 contextPath 로 변경하기 

		
		chain.doFilter(request, response);
	}


}

✔️ log4j.xml 작업

13. src/main/webapp/resources 안에 log4j.xml 열기

💻 log4j.xml : 로그설정과 관련된 파일


14. 빨간색박스 안 내용 주석처리하고, 아래 새로운 구문 추가

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

변경 하면 아래와 같이 설정 완료


15. 기존 Appenders 구문 삭제하고, 새로운 Appenders 3개 추가

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

16. Application Loggers 안에 level value="info"에서 "debug"로 수정

여기까지 기초적인 세팅 끝 🫠🫠🫠


profile
👩‍💼👩‍💼➡️➡️➡️👩‍💻👩‍💻 생산자의 삶을 살기 위해 개발공부중

1개의 댓글

comment-user-thumbnail
2023년 8월 28일

진도 빠를텐데 정리 잘하셨네요 강사인줄..

답글 달기