[프로젝트] 타일을 이용한 스프링 STS3 MVC 쇼핑몰 (1) 환경설정, 설치
스프링 버전
Spring Tool Suite™ 3 (STS 3) Download page
Use one of the links below to download an all-in-one distribution for your platform. Choose either a native installer or simple archive, they contain equivalent functionality
spring.io
톰캣 버전
Apache Tomcat® - Apache Tomcat 9 Software Downloads
Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. You must verify the integrity of the downloaded files
tomcat.apache.org
https://hyunah030.tistory.com/2 (맥에서 톰캣 설치하기)
데이터베이스 구조


테이블, 계정 생성
create user shop identified by 1234;
grant connect, dba, resource to shop;
--------------------------------------------------------
-- DDL for Table T_GOODS_DETAIL_IMAGE
--------------------------------------------------------
CREATE TABLE "T_GOODS_DETAIL_IMAGE"
( "IMAGE_ID" NUMBER(20,0) primary key,
"GOODS_ID" NUMBER(20,0),
"FILENAME" VARCHAR2(50 BYTE),
"REG_ID" VARCHAR2(20 BYTE),
"FILETYPE" VARCHAR2(40 BYTE),
"CREDATE" DATE DEFAULT sysdate
) ;
--------------------------------------------------------
-- DDL for Table T_SHOPPING_GOODS
--------------------------------------------------------
CREATE TABLE "T_SHOPPING_GOODS"
( "GOODS_ID" NUMBER(20,0) primary key,
"GOODS_SORT" VARCHAR2(50 BYTE),
"GOODS_TITLE" VARCHAR2(100 BYTE),
"GOODS_WRITER" VARCHAR2(50 BYTE),
"GOODS_PUBLISHER" VARCHAR2(50 BYTE),
"GOODS_PRICE" NUMBER(10,0),
"GOODS_SALES_PRICE" NUMBER(10,0),
"GOODS_POINT" NUMBER(10,0),
"GOODS_PUBLISHED_DATE" DATE,
"GOODS_TOTAL_PAGE" NUMBER(5,0),
"GOODS_ISBN" VARCHAR2(50 BYTE),
"GOODS_DELIVERY_PRICE" NUMBER(10,0),
"GOODS_DELIVERY_DATE" DATE,
"GOODS_STATUS" VARCHAR2(50 BYTE),
"GOODS_INTRO" VARCHAR2(2000 BYTE),
"GOODS_WRITER_INTRO" VARCHAR2(2000 BYTE),
"GOODS_PUBLISHER_COMMENT" VARCHAR2(2000 BYTE),
"GOODS_RECOMMENDATION" VARCHAR2(2000 BYTE),
"GOODS_CONTENTS_ORDER" CLOB,
"GOODS_CREDATE" DATE DEFAULT sysdate
) ;
--------------------------------------------------------
-- DDL for Table T_SHOPPING_MEMBER
--------------------------------------------------------
CREATE TABLE "T_SHOPPING_MEMBER"
( "MEMBER_ID" VARCHAR2(20 BYTE) primary key,
"MEMBER_PW" VARCHAR2(30 BYTE),
"MEMBER_NAME" VARCHAR2(50 BYTE),
"MEMBER_GENDER" VARCHAR2(10 BYTE),
"TEL1" VARCHAR2(20 BYTE),
"TEL2" VARCHAR2(20 BYTE),
"TEL3" VARCHAR2(20 BYTE),
"HP1" VARCHAR2(20 BYTE),
"HP2" VARCHAR2(20 BYTE),
"HP3" VARCHAR2(20 BYTE),
"SMSSTS_YN" VARCHAR2(20 BYTE),
"EMAIL1" VARCHAR2(20 BYTE),
"EMAIL2" VARCHAR2(20 BYTE),
"EMAILSTS_YN" VARCHAR2(20 BYTE),
"ZIPCODE" VARCHAR2(20 BYTE),
"ROADADDRESS" VARCHAR2(500 BYTE),
"JIBUNADDRESS" VARCHAR2(500 BYTE),
"NAMUJIADDRESS" VARCHAR2(500 BYTE),
"MEMBER_BIRTH_Y" VARCHAR2(20 BYTE),
"MEMBER_BIRTH_M" VARCHAR2(20 BYTE),
"MEMBER_BIRTH_D" VARCHAR2(20 BYTE),
"MEMBER_BIRTH_GN" VARCHAR2(20 BYTE),
"JOINDATE" DATE DEFAULT sysdate,
"DEL_YN" VARCHAR2(20 BYTE) DEFAULT 'N'
) ;
--------------------------------------------------------
-- DDL for Table T_SHOPPING_ORDER
--------------------------------------------------------
CREATE TABLE "T_SHOPPING_ORDER"
( "ORDER_SEQ_NUM" NUMBER(20,0) primary key,
"ORDER_ID" NUMBER(20,0),
"MEMBER_ID" VARCHAR2(20 BYTE),
"GOODS_ID" NUMBER(20,0),
"ORDERER_NAME" VARCHAR2(50 BYTE),
"GOODS_TITLE" VARCHAR2(100 BYTE),
"ORDER_GOODS_QTY" NUMBER(5,0),
"GOODS_SALES_PRICE" NUMBER(5,0),
"GOODS_FILENAME" VARCHAR2(60 BYTE),
"RECEIVER_NAME" VARCHAR2(50 BYTE),
"RECEIVER_HP1" VARCHAR2(20 BYTE),
"RECEIVER_HP2" VARCHAR2(20 BYTE),
"RECEIVER_HP3" VARCHAR2(20 BYTE),
"RECEIVER_TEL1" VARCHAR2(20 BYTE),
"RECEIVER_TEL2" VARCHAR2(20 BYTE),
"RECEIVER_TEL3" VARCHAR2(20 BYTE),
"DELIVERY_ADDRESS" VARCHAR2(500 BYTE),
"DELIVERY_METHOD" VARCHAR2(40 BYTE),
"DELIVERY_MESSAGE" VARCHAR2(300 BYTE),
"GIFT_WRAPPING" VARCHAR2(20 BYTE),
"PAY_METHOD" VARCHAR2(200 BYTE),
"CARD_COM_NAME" VARCHAR2(50 BYTE),
"CARD_PAY_MONTH" VARCHAR2(20 BYTE),
"PAY_ORDERER_HP_NUM" VARCHAR2(20 BYTE),
"DELIVERY_STATE" VARCHAR2(20 BYTE) DEFAULT 'delivery_prepared',
"PAY_ORDER_TIME" DATE DEFAULT sysdate,
"ORDERER_HP" VARCHAR2(50 BYTE)
) ;
--------------------------------------------------------
-- DDL for Table T_SHOPPING_CART
--------------------------------------------------------
CREATE TABLE "T_SHOPPING_CART"
( "CART_ID" NUMBER(10,0) primary key,
"GOODS_ID" NUMBER(20,0),
"MEMBER_ID" VARCHAR2(20 BYTE),
"DEL_YN" VARCHAR2(20 BYTE) DEFAULT 'N',
"CREDATE" DATE DEFAULT sysdate,
"CART_GOODS_QTY" NUMBER(4,0) DEFAULT 1
) ;
REM INSERTING into T_GOODS_DETAIL_IMAGE
SET DEFINE OFF;
Insert into T_GOODS_DETAIL_IMAGE (IMAGE_ID,GOODS_ID,FILENAME,REG_ID,FILETYPE,CREDATE) values (346,394,'test.jpg','admin','main_image',to_date('19/09/01','RR/MM/DD'));
drop sequence ORDER_SEQ_NUM;
drop sequence SEQ_GOODS_ID;
drop sequence SEQ_IMAGE_ID;
drop sequence SEQ_ORDER_ID;
--------------------------------------------------------
-- DDL for Sequence ORDER_SEQ_NUM
--------------------------------------------------------
CREATE SEQUENCE "ORDER_SEQ_NUM" MINVALUE 0 MAXVALUE 10000000 INCREMENT BY 1 START WITH 400 CACHE 20 NOORDER NOCYCLE ;
--------------------------------------------------------
-- DDL for Sequence SEQ_GOODS_ID
--------------------------------------------------------
CREATE SEQUENCE "SEQ_GOODS_ID" MINVALUE 100 MAXVALUE 1000000 INCREMENT BY 1 START WITH 400 CACHE 20 ORDER NOCYCLE ;
--------------------------------------------------------
-- DDL for Sequence SEQ_IMAGE_ID
--------------------------------------------------------
CREATE SEQUENCE "SEQ_IMAGE_ID" MINVALUE 1 MAXVALUE 11111111 INCREMENT BY 1 START WITH 400 NOCACHE NOORDER NOCYCLE ;
--------------------------------------------------------
-- DDL for Sequence SEQ_ORDER_ID
--------------------------------------------------------
CREATE SEQUENCE "SEQ_ORDER_ID" MINVALUE 0 MAXVALUE 10000000 INCREMENT BY 1 START WITH 400 NOCACHE ORDER NOCYCLE ;
jar파일 준비
- ojdbc6.jar
https://www.oracle.com/database/technologies/jdbcdriver-ucp-downloads.html
- lombok
https://projectlombok.org/download
프로젝트 환경설정
- Configure Build path 로 jar파일 연결
- 톰캣 서버 포트번호 이상 등 체크 (8080이 겹쳐서 8000으로 수정)
- xml 환경설정 : pom, app-servlet, root-context 설정
pom.xml
<?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.lje</groupId>
<artifactId>myshop</artifactId>
<name>myshop</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.1.9.RELEASE</org.springframework-version>
<org.aspectj-version>1.9.4</org.aspectj-version>
<org.slf4j-version>1.7.25</org.slf4j-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Servlet -->
<!-- <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency> -->
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<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>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.9.RELEASE</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-core -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>3.0.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-jsp -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-servlet -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>3.0.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.webjars.bower/jquery -->
<dependency>
<groupId>org.webjars.bower</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
<!-- json -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
</dependencies>
<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>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</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>
</project>
servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<beans:property name="definitions">
<beans:list>
<beans:value>classpath:tiles/tiles*.xml</beans:value>
</beans:list>
</beans:property>
<beans:property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory"/>
</beans:bean>
<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
<beans:property name="order" value="1" />
</beans:bean>
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
<beans:property name="order" value="2" />
</beans:bean>
<context:component-scan base-package="com.lje.myshop" />
<interceptors>
<interceptor>
<mapping path="/*/*.do"/>
<mapping path="/*/*/*.do"/>
<beans:bean class="com.lje.myshop.interceptor.ViewNameInterceptor" />
</interceptor>
</interceptors>
<beans:bean id="multipartResoulver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</beans:bean>
</beans:beans>
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"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
<property name="url" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE"/>
<property name="username" value="shop"></property>
<property name="password" value="1234"></property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:/models/modelConfig.xml" />
</bean>
<mybatis-spring:scan base-package="com.lje.myshop.mapper"/>
<context:component-scan base-package="com.lje.myshop"/>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets
and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- Processes application requests -->
<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>
<multipart-config>
<location>/Users/lee/Documents/java/spring/myshop/shop</location>
<max-file-size>20971520</max-file-size>
<max-request-size>41943040</max-request-size>
<file-size-threshold>20971520</file-size-threshold>
</multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
환경설정은 마쳤습니다. 이제 기능과 디자인을 구현해야겠죠.
다음 2편으로 이어집니다.