// SimpleUrlController 이용해 스프링 MVC 실습하기
1. action-servlet.xml : 빈 설정
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
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-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
// id가 simpleUrlController 인 빈을 생성
<bean id="simpleUrlController" class="com.spring.ex01.SimpleUrlController"/>
// SimpleUrlHandlerMapping클래스를 이용해 /test/index.do로 요청시 simpleUrlcontroller 호출하도록 매핑
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/test/index.do">simpleUrlController</prop>
</props>
</property>
</bean>
</beans>
2. web.xml : *.do로 요청시 스프링의 DispatcherServlet 클래스가 요청을 받을수 있게 서블릿 매핑을 함.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>// 값이 1이상 : 톰캣 실행시 DispatcherServlet을 미리 메모리에 로드함.(미설정이거나 음수 : 브라우저에서 요청시 메모리에 로드)
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
3. SimpleUrlController.java : 컨트롤러
package com.spring.ex01;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class SimpleUrlController implements Controller{ // 스프링에서 제공하는 Controller 인터페이스 반드시 구현
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception{
return new ModelAndView("index.jsp");
}
}
4. index.jsp : 브라우저로 전송
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>spring test</title>
</head>
<body>
<h1>index.jsp파일이다</h1>
<p>hi spring!</p>
</body>
</html>
// MultiActionController이용해 스프링 MVC 실습하기
1. action-servlet.xml
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
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-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="simpleUrlController" class="com.spring.ex01.SimpleUrlController"/>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/test/index.do">simpleUrlController</prop>
</props>
</property>
</bean>
// 컨트롤러에서 ModelAndView 인자로 뷰이름이 반환되면 InternalResourceViewResolver의 프로퍼티
// prefix 속성에 지정된 폴더에서 뷰이름에 해당하는 jsp를 선택해 DispatcherServlet으로 보냄.
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/test/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="userUrlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/test/*.do">userController</prop>
</props>
</property>
</bean>
// methodNameResolver 프로퍼티에 userMethodNameResolver를 주입해서 지정한 요청명에 대해
// 직접 메소드를 호출하게 됨.
<bean id="userController" class="com.spring.ex02.UserController">
<property name="methodNameResolver">
<ref local="userMethodNameResolver" />
</property>
</bean>
// PropertiesMethodNameResolver를 이용해 /test/login.do 로 요청하면 userController의 login 메소드를 호출.
<bean id="userMethodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/test/login.do">login</prop>
<prop key="/test/memberInfo.do">memberInfo</prop>
</props>
</property>
</bean>
</beans>
2. UserController.java
package com.spring.ex02;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class UserController extends MultiActionController{ // userMethodNameResolver 프로퍼티 사용하려면 반드시 MultiActionController를 상속받아야함.
public ModelAndView login(HttpServletRequest request, HttpServletResponse response) throws Exception{
String userID;
String passwd;
ModelAndView mav = new ModelAndView();
request.setCharacterEncoding("utf-8");
userID = request.getParameter("userID");
passwd = request.getParameter("passwd");
// ModelAndView에 로그인 정보 바인딩
mav.addObject("userID", userID);
mav.addObject("passwd", passwd);
mav.setViewName("result"); // ModelAndView객체에 포워딩할 jsp이름 설정
return mav;
}
}
3. loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}" />
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
</head>
<body>
<form name="frmLogin" method="post" action="${contextPath}/test/login.do">
<table border="1" width="80%" align="center" >
<tr align="center">
<td>아이디</td>
<td>비밀번호</td>
</tr>
<tr align="center">
<td>
<input type="text" name="userID" value="" size="20">
</td>
<td>
<input type="password" name="passwd" value="" size="20">
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="로그인" >
<input type="reset" value="다시입력" >
</td>
</tr>
</table>
</form>
</body>
</html>
4. result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
<table border="1" width="50%" align="center" >
<tr align="center">
<td>아이디</td>
<td>비밀번호</td>
</tr>
<tr align="center">
<td>${userID}</td>
<td>${passwd}</td>
</tr>
</table>
</body>
</html>