프로젝트 분석하기

Ruinak·2021년 12월 23일
0

Glossary

목록 보기
22/26

1. Maven Dependencies

  • Maven Dependencies는 Maven에서 자동적으로 받아오는 라이브러리들을 확인할 수 있는 곳입니다.
  • 프로젝트 내에서 태그를 이용해 간단하게 라이브러리를 추가할 수 있는데, 이 역할을 pom.xml이 담당합니다.

<properties>

  • <properties></properties> 태그는 변수의 개념으로 많이 사용되는 변수를 성넝해서 밑에서 편하게 쓰기 위해서 사용합니다.
    - 많이 사용되는 값을 변수로 지정하며, 수정의 용이함이 있기에 일일이 찾아서 수정할 필요가 없습니다.
  • 위 이미지에서와 같이 <egovframework.rte.version>3.1.0</egovframework.rte.version>처럼 변수 선언을 해놓으면 아래와 같이 중복되는 부분에서 ${egovframework.rte.version}로 사용할 수 있습니다.
    - 만약 버전이 바뀌면 선언한 곳의 버전만 수정해 주면 됩니다.

<repositories>

  • <repositories></repositories> 태그는 실제 라이브러리를 다운 받을 장소를 의미합니다.

<dependency>

  • <dependency></dependency> 태그는 하나의 라이브러리를 의미하며 알아둬야 할 중요한 태그입니다.

  • 이태그를 이용해서 라이브러리를 추가하거나 삭제할 수 있습니다.

  • 번거롭게 원하는 라이브러리를 직접 다운받아 폴더에 넣지 않아도 태그 하나로 라이브러리를 추가할 수 있습니다.

2. web.xml

  • web.xml은 tomcat(WAS)이 최초 구동될 때, WEB-INF 디렉토리에 존재하는 web.xml을 읽고, 그에 해당하는 웹 어플리케이션 설정을 구성합니다.

  • 서버가 구동되면 제일 먼저 인식하는 파일입니다.

스프링 context 설정

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>


출처: https://to-dy.tistory.com/14 [todyDev]
  • 스프링 context 설정 파일 목록을 불러오기 위한 곳입니다.

  • <param-value>에서 context 경로를 설정할 수 있습니다.

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/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>
  • <servlet> 태그를 이용해서 DispatcherServlet을 설정할 수 있습니다.

요청 URL

<servlet-mapping>
 	<servlet-name>appServlet</servlet-name>
 	<url-pattern>/</url-pattern>
</servlet-mapping>
  • 요청 URL 패턴을 설정합니다.

  • 서블릿에서 어떠한 요청을 할 때, 이 패턴을 통해서만 요청이 전달됩니다.

  • html 등의 직접적인 요청은 전달되지 않으며 보통 *.do를 사용

3. servlet-context.xml

  • 서블릿이란 자바에서 동적 웹 프로젝트를 개발할 때, 사용자의 요청과 응답을 처리해주는 역할을 합니다.

ViewResolver 설정

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>


출처: https://to-dy.tistory.com/14 [todyDev]
  • Controller에서 ModelAndView로 뷰이름을 설정하는데 이 뷰이름과 매칭되는 것을 찾기 위해 사용됩니다.

  • Controller에서 처리한 결과를 생성할 View를 결정합니다.

  • 서블릿 설정이 자동으로 prefix와 suffix를 붙이는 역할을 합니다.

Bean 설정

<context:component-scan base-package="com.tody.lovely" />

출처: https://to-dy.tistory.com/14 [todyDev]
  • 스프링에서 사용하는 Bean을 일일이 xml 선언하지 않고 필요한 것을 어노테이션을 자동으로 인식하게 해줍니다.

4. root-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!-- Root Context: defines shared resources visible to all other web components -->
        
</beans>
  • 스프링 관련 여러가지 설정 파일들을 등록하여 읽을 수 있는 곳입니다.

  • 구조를 재정의하면서 context-*.xml로 변경되어 여러 설정 파일들을 등록하게 됩니다.

5. Controller

@Controller

@Controller
public class HomeController {
  • Controller 애노테이션을 설정한 것입니다.

  • 웹 클라이언트에서 들어온 요청을 해당 비즈니스 로직으로 분기시켜주고, 수행 결과의 응답을 해주는 Dispatcher 역할을 합니다.

@RequestMapping

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
  • 웹 클라이언트에서 들어온 요청에 해당하는 비즈니스 로직을 찾아주는 역할을 합니다.

  • value에 적힌게 요청 url인데, jsp에서 주는 경로와 다르면 찾지를 못하기 때문에 오타나 url 주소에 주의해야 합니다.

  • method에 GET 방식인지 POST 방식인지 알 수 있습니다.

ModelAndView Model

model.addAttribute("serverTime", formattedDate );

return "home"
  • model.addAttribute("serverTime", formattedDate );는 비즈니스 로직을 수행한 결과를 화면에 보내주는 역할을 합니다.

  • serverTime이라는 이름으로 formattedDate를 전송함을 의미합니다.

  • return "home"은 수행 결과를 어디로 보내줄 지 명시합니다.

  • home은 home.jsp 파일을 의미하고 서블릿 설정에서 자동으로 prefix와 suffix를 붙여줍니다.

6. jsp(View)

ModelAndView View

  • model로 보내진 serverTime이 view에서 ${serverTime} 방식으로 사용됨을 볼 수 있습니다.

  • ${serverTime} 부분에서 서버에서 넘어온 결과(formattedDate)를 화면에 보여줍니다.

7. test 디렉토리

  • 삭제해도 된다.

8. log4j.xml

  • Log4j는 자바기반의 로깅 유틸리티로 Apache에서 만든 오픈소스 라이브러리입니다.

  • 개발을 할 때 콘솔에 내용을 찍어 보고 싶을 때 system.out.println(); 을 사용해 보았을 것인데, 그게 바로 로그입니다.

  • 스프링에서는 system.out.println();를 출력하게 되면 성능에 큰 영향을 미치므로 안씁니다.

  • 그러므로 성능에 영향을 주지 않는 Log4j를 주로 사용한다.

  • Log4j는 옵션 설정을 통해서 선택적으로 로그를 남기거나 특정 파일에 로그를 생성하는 등 다양한 이점을 가지고 있다.

출처 : https://to-dy.tistory.com/14

profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글