๐ ๋ชฉํ
์ค๊ฐ ํ๋ก์ ํธ ๋ ์งํํ๋ ์นด๋ฉ๋ผ ์ปค๋ฎค๋ํฐ ์ฌ์ดํธ๋ฅผ Spring์ผ๋ก ์ด๊ดํ๋ ๊ฒ
์ค๋ฌด์์ ์ด๋ค ๋ฒ์ ์ ์ฌ์ฉํ ์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋ฒ์ ์ ์ฐ์ต
์์์ ์ผ๋ SpringMVC2์ ๋ํ ์ค๋ช ์ด ์๊ฐ๋ณด๋ค ์ดํดํ๊ธฐ ํ๋ ๊ฒ ๊ฐ์ Refresh!!
๐ DispatcherServlet
๋ฒ์ 1์์๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ฑํ DispatcherServlet์ ์ฌ์ฉํ๋ค.
ํ์ง๋ง ๋ฒ์ 2์์๋ Spring์์ ์ ๊ณตํ๋ DispatcherServlet์ ์ฌ์ฉํ๋ค.
์์กด ์ฃผ์ ์ ํ๊ธฐ ์ํด์๋ .xml ์ฆ, ์ค์ ํ์ผ์ด ํ์ํ๋ค.
๐ก org.springframework.web.servlet.DispatcherServlet
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<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>*.do</url-pattern>
</filter-mapping>
</web-app>
๐ Controller
๋ฒ์ 1์์๋ ์ง์ ์์ฑํ Controller ํด๋์ค ํ์ผ์ ์์ ๋ฐ์์ ์ฌ์ฉํ์ง๋ง
๋ฒ์ 2์์๋ Spring์์ ์ ๊ณตํ๋ Controller๋ฅผ ์์ ๋ฐ์์ ์ฌ์ฉํ๋ค.
๊ธฐ์กด ๋ฒ์ ์ request ๊ฐ์ฒด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ง๋ง (NOT POJO)
๋ฒ์ 2์์๋ ModelAndView ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค. (POJO)
LogoutAction.java
package com.spring.controller.member;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
// Controller ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ LogoutAction ํด๋์ค
public class LogoutAction implements Controller {
// handleRequest ๋ฉ์๋๋ฅผ ๊ตฌํ
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// ModelAndView ๊ฐ์ฒด ์์ฑ
ModelAndView mav = new ModelAndView();
// HttpSession ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ด
HttpSession session = request.getSession();
// ํ์ฌ ์ธ์
์ ๋ฌดํจํํ์ฌ ๋ก๊ทธ์์ ์ฒ๋ฆฌ
session.invalidate();
// ๋ฆฌ๋ค์ด๋ ํธํ ๋ทฐ ์ด๋ฆ ์ค์
mav.setViewName("redirect:main.do");
// ModelAndView ๊ฐ์ฒด ๋ฐํ
return mav;
}
}
dispatcher-servlet.xml (bean)
๋น(bean)์ผ๋ก ๋ฑ๋ก๋๋ ์ฌ๋ฌ ๊ฐ์ ์ปจํธ๋กค๋ฌ ํด๋์ค๋ฅผ ๋ํ๋ธ๋ค.
๊ฐ๊ฐ์ ๋น์ ํด๋นํ๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์ ๋ฑ๋กํ๋ค.
์ด๋ฌํ ๋น๋ค์ ์คํ๋ง MVC ํ๋ ์์ํฌ์์ ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ ์ ํ ์๋ต์ ๋ฐํํ๋ ์ญํ ์ ํ๋ค.
<bean id="loginAction" class="com.spring.controller.member.LoginAction" />
<bean id="loginPageAction" class="com.spring.controller.member.LoginPageAction" />
<bean id="logoutAction" class="com.spring.controller.member.LogoutPageAction" />
<bean id="joinPageAction" class="com.spring.controller.member.JoinPageAction" />
<bean id="joinAction" class="com.spring.controller.member.JoinAction" />
<bean id="mainPageAction" class="com.spring.controller.member.MainPageAction" />
๐ HandlerMapping
ํธ๋ค๋ฌ๋งตํ ์ญ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ค์๋ HandlerMapping์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋
Spring์์ ์ ๊ณตํ๋ HandlerMapping์ ์ฌ์ฉํ๋ค. ์์กด ์ฃผ์ ๋ฐฉ์์ setter ์ฃผ์ ์ ์ฌ์ฉํ๊ณ
์ฌ์ฉํ๋ ๊ฐ์ฒด๋ map์ด๋ค.
HandlerMapping.java
package com.spring.controller.common;
import java.util.HashMap;
import java.util.Map;
public class HandlerMapping {
private Map<String, Controller> mappings;
public HandlerMapping() {
mappings = new HashMap<String, Controller>();
}
public Controller getController(String commend) {
return mappings.get(commend);
}
}
dispatcher-Servlet.xml
URL๊ณผ ์ปจํธ๋กค๋ฌ ๊ฐ์ ๋งคํ์ ์ค์ ํ๋๋ฐ ์ฌ์ฉ๋๋ SimpleUrlHandlerMapping ๋น์ ์ ์ํ๋ค. ์ด ๋น์ URL ํจํด๊ณผ ํด๋นํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ๋งคํํ์ฌ ์์ฒญ์ ์ ์ ํ ํธ๋ค๋ฌ๋ก ๋ผ์ฐํ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๐ก org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/loginAction.do">loginAction</prop>
<prop key="/loginPageAction.do">loginPageAction</prop>
<prop key="/logoutAction.do">logoutAction</prop>
<prop key="/joinPageAction.do">joinPageAction</prop>
<prop key="/joinAction.do">joinAction</prop>
<prop key="/mainPageAction.do">mainPageAction</prop>
</props>
</property>
</bean>
๐ ViewResolver
ViewResolver ์ญ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋ฒ์ 1๊ณผ๋ ๋ฌ๋ฆฌ
Spring์์ ์ ๊ณตํ๋ ViewResolver๋ฅผ ์ฌ์ฉํ๋ค.
๋ฒ์ 1๊ณผ ๊ฐ์ ์ ์ ์์กด ์ฃผ์ ๋ฐฉ์์ผ๋ก setter ์ฃผ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
ํน์ ํ์ด์ง์ url์ ์๋ฉด, ๋ณ๋์ ๊ถํ์ด ์์ด๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Controller์์ ๋ณ๋์ ์ ๊ทผ ๊ถํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ตฌํํ๋ค.
Spring์์๋ ํ์ด์ง๋ฅผ WEB-INFํด๋์ ์๋ํ์ฌ ์ ์ฅํ๊ธฐ ๋๋ฌธ์
ViewResolver ํตํด์๋ง WEB-INF ํด๋์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ ์ ์ด์ฉํ ๊ฒ์ด๋ค.
dispatcher-Servlet.xml
<bean id="viewResolver" class="org.springframework.web.servlet.view.InteralResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
๐ก ๊ฒฐ๋ก
ํฌ์คํ ์ ์๋ ๋ฒ์ 1๊ณผ ๋ฒ์ 2๊ฐ ๊ต์ฅํ ํท๊ฐ๋ ธ์ง๋ง
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ์ 2๋ bean ์์ฑ์ ๋ง์ด ํ๋ค๋ ๊ฒ๊ณผ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋๋ ๋ฒ์ 1๊ณผ๋ ๋ฌ๋ฆฌ
๋ฒ์ 2๋ Spring์์ ์ ๊ณตํ๋ ์๋ธ๋ฆฟ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ด ๋ช ํํ๊ฒ ๊ตฌ๋ถ์ด ๋๋ค.
'JAVA > Practice' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Spring] JPA๋ฅผ ํ์ฉํ ํ์ ์ ๋ณด ๊ด๋ฆฌ ์์คํ ๊ตฌํํ๊ธฐ (0) | 2024.04.02 |
|---|---|
| [Spring] Command ๊ฐ์ฒด๋ฅผ ์ด์ฉํ Controller (0) | 2024.03.14 |
| [MAVEN] SpringMVC2 ๋ฒ์ 1 ์ฐ์ต (Controller) (0) | 2024.03.06 |
| [Spring] .xml (์ค์ ํ์ผ)์ ๊ตฌ์กฐ (0) | 2024.02.29 |
| ์๋ฐ(Java)์์ ResultSet ํด๋์ค (0) | 2023.12.20 |
๋๊ธ