---------

### : 목차 구분 기호

--- : 목차 내에 항목 구분 기호
@@@ : 태그 용도
... : 같은 목차 내에 구분 기호
...................................
목차
1. 이론 및 정보
2. 설정 및 그 밖에
3. 소스코드 또는 실습
4. 과제
...................................
###################################
1. 이론 및 정보
-----------------------------------
* 스프링은 숙달
스프링은 이미 다 만들어져 있는 것이기 때문에
여러번 연습을 해봐야함

또한 여러각도에서 다양한 테스트가 필요
-----------------------------------
###################################
2. 설정 및 그 밖에
-----------------------------------
* 새로운 프로젝트 생성
Maven Project , WebApp 1.0
ArtifactId : SpringWebApp3, BoardApp
-----------------------------------
* SpringWebApp2에 준비 안된 라이브러리 추가했음
/SpringWebApp2/pom.xml
<dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>3.1.0</version>
</dependency>
-----------------------------------
###################################
3. 소스코드 또는 실습
-----------------------------------
3-1
어제까지의 내용

Workspace : ~\study\SpringWork 

/SpringWebApp2/src/main/java/controller/ForthController.java

핸들러
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
첫번째 부터 세번째 까지 기본 핸들러를 사용하였음

네번째 부터 어노테이션 핸들러 맵핑 사용
@RequestMapping("/forth.action")

세번째 실습까지는 기본값인 핸들러를 안쓰다가
네번째 실습부터는 어노테이션 핸들러 맵핑을 사용을 해서
기본 값 핸들러를 다시 적어주었음

그래서
/SpringWebApp2/src/main/webapp/WEB-INF/webapp2-servlet.xml
에서
<bean name="/forth.action" class="controller.ForthController"></bean>
<bean name="/fifth.action" class="controller.ForthController"></bean>
를 생략하면

기본값인 핸들러로 동작하기 때문에 문제가 없음

다른 핸들러 맵핑을 사용하면 기본 핸들러 맵핑이 동작하지 않으니
사용하고 싶으면 명시해주어야함

자바 생성자와 비슷한 개념

어노테이션의 단점은 가독성이 떨어진다.
어설프게 알고 있을때 사용하면 혼란스러움
-----------------------------------
3-2
Workspace : ~\study\SpringWork
여섯번째 요청 - sixth.action

코드
/SpringWebApp2/src/main/webapp/index.jsp
/SpringWebApp2/src/main/java/controller/ForthController.java
/SpringWebApp2/src/main/webapp/WEB-INF/webapp2-servlet.xml


// 어노테이션에 인자를 여러개 쓸 수 있음
// POST 방식만 허용
@RequestMapping(value="/sixth.action",method=RequestMethod.POST)
-----------------------------------
3-3
Workspace : ~\study\SpringWork
일곱번째 요청 - seventh.action
같은 이름의 요청을 파라미터로 구별하는 방식

/SpringWebApp2/src/main/webapp/index.jsp
/SpringWebApp2/src/main/java/controller/ForthController.java
의 메서드 리턴값이 void

요청은 디스패처 서블릿으로 가고 핸들러 맵핑에게 물어보고
해당 컨트롤러로 전달하고 결과를 디스패처 서블릿에 전달하고(View의 가상경로까지 전달)
결과를 누구에게 전달할지 뷰 리졸버한테 물어보고(가상경로를 실제 경로로) 결과를 받아서 view에게 전달


그런데 void로 하면 뷰 리졸버의 리턴값(가상경로)이 없으니
404에러

이런식으로 하는 이유는 별도 페이지로 이동하기 위해서 사용

파라미터에 구분방식은 아래와 같음
@RequestMapping(value="/seventh.action",params={"user=tom","id=tiger"})
이런 파라미터가 전달되면 아래 메서드를 호출하라!는 의미
-----------------------------------
3-4
Workspace : ~\study\SpringWork
여덟번째 요청 - eighth.action

1번째 방법
/SpringWebApp2/src/main/webapp/index.jsp
/SpringWebApp2/src/main/java/controller/ForthController.java
@RequestMapping(value="/eighth.action")
public ModelAndView eighthHandler(HttpServletRequest req){
     System.out.println(req.getParameter("name"));
     ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
     mv.addObject("msg","여덟번째 요청에 대한 응답입니다.");
     return mv;
}


HttpServletRequest를 import 시킬 수 없어서
준비 안된 라이브러리 추가했음
/SpringWebApp2/pom.xml
<dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>3.1.0</version>
</dependency>
...................................
2번째 방법
/SpringWebApp2/src/main/java/controller/ForthController.java
@RequestMapping(value="/eighth.action")
public ModelAndView eighthHandler(@RequestParam("name") String name, @RequestParam("age") int age, @RequestParam("point") int point){
     System.out.println(name+", "+age+", "+point);
     ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
     mv.addObject("msg","여덟번째 요청에 대한 응답입니다.");
     return mv;
}
...................................
3번째 방법 - 두번째 방법에서 어노테이션 생략 방법, 파라미터 이름과 똑같이 쓰면 됨
/SpringWebApp2/src/main/java/controller/ForthController.java
@RequestMapping(value="/eighth.action")
public ModelAndView eighthHandler(HttpServletRequest req,String name, int age, int point) throws UnsupportedEncodingException{
     req.setCharacterEncoding("UTF-8");        
     System.out.println(name+", "+age+", "+point);
     ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
     mv.addObject("msg","여덟번째 요청에 대한 응답입니다.");
     return mv;
}
문제 있음 한글 깨짐
...................................
4번째 방법 - DTO의 이름과 같으면 자동 맵핑 되는 기능
@ModelAttribute 를 사용, 다양한 방법으로 사용되는 것이라 공부가 필요

@RequestMapping(value="/eighth.action")
public ModelAndView eighthHandler(@ModelAttribute UserDto dto){        
     System.out.println(dto.getName()+", "+dto.getAge()+", "+dto.getPoint());
     ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
     mv.addObject("msg","여덟번째 요청에 대한 응답입니다.");
     return mv;
}

만약에
/SpringWebApp2/src/main/webapp/index.jsp
에서 dto로 받는 내용외에 다른 내용이 있으면 별도로 받아라
public ModelAndView eighthHandler(@ModelAttribute UserDto dto, String chk){
...................................
관리자 메뉴 - 새로운 폴더에 jsp 파일을 보관할 예정임
/SpringWebApp2/src/main/webapp/WEB-INF/admin 폴더 만듬
/SpringWebApp2/src/main/webapp/WEB-INF/admin/shoppingmall 폴더 만듬
/SpringWebApp2/src/main/webapp/WEB-INF/admin/shoppingmall/index.jsp
/SpringWebApp2/src/main/webapp/WEB-INF/views/shop_admin.jsp - 최종 종착지

/SpringWebApp2/src/main/java/controller/ShoppingController.java
...................................
항상 루트에서 시작페이지가 있을 수 있는 건 아니라는 점
/SpringWebApp2/src/main/webapp/shop 폴더 만듬
/SpringWebApp2/src/main/webapp/shop/index.jsp
이곳을 시작 위치로 옮겨 보겠음

이를 컨트롤러가 받을 수 있게 수정

/SpringWebApp2/src/main/java/controller/ShoppingController.java
//@RequestMapping("/shop/shop_admin.action")
@RequestMapping("/**/shop_admin.action")
public String shopHandler2() throws Exception {
     return "/WEB-INF/views/shop_admin.jsp";
}

<a href="../shop_admin.action">쇼핑몰 관리자</a>
로 수정해도 됨
-----------------------------------
3-5
Workspace : ~\study\SpringWork

새로운 프로젝트 - SpringWebApp3
핸들러 맵핑과 뷰 리졸버에 대해서 알아보는 시간

/SpringWebApp3/pom.xml 에 라이브러리 추가

/SpringWebApp3/src/main/webapp/index.jsp
/SpringWebApp3/src/main/webapp/WEB-INF/views/result.jsp
/SpringWebApp3/src/main/java/controller/FirstController.java
/SpringWebApp3/src/main/java/controller/SecondController.java
/SpringWebApp3/src/main/java/controller/ThirdController.java
/SpringWebApp3/src/main/webapp/WEB-INF/webapp3-servlet.xml

SimpleUrlHandlerMapping 를 사용할 예정
한번에 URL을 묶어서 관리하는 클래스

핸들러가 여러개 있을 때에는 핸들러마다
작성된 순서대로 한번씩 실행을 하면서 맵핑된 내용을 찾음
이러한 순서 때문에 핸들러의 우선순위를 정해야하는 경우가 생김
그래서 아래와 같은 프로퍼티를 핸들러 안에 넣어준다
<property name="order" value="1"></property>
값(value)이 낮을 수록 우선순위가 높음


ViewResolover
기본 뷰 리졸버는 InternalResourceView
/SpringWebApp3/src/main/java/controller/ViewController.java
/SpringWebApp3/src/main/webapp/WEB-INF/webapp3-servlet.xml

첫번째 ~ 세번째 컨트롤러는 InternalResourceView가 안되는 문제가 생김
이유는 첫번째 ~ 세번째 컨트롤러는 InternalResourceView에서 설정한 프로퍼티 대로
가상경로를 설정하지 않았다
이러한 경우 기존 가상경로를 그대로 쓰고 싶으면 다른 뷰 리졸버를 쓰면 된다

ResourceBundleViewResolver를 사용할 것임
이 리졸버는 별로로 파일을 저장해서 읽어 들임, 경로를 따로 지정
.properties로 저장하면 읽기 좋음
위 파일을 /SpringWebApp3/src/main/resources 폴더에 파일을 넣어놓으면
/WEB-INF/classes 폴더 안에 알아서 나중에 들어감

/SpringWebApp3/src/main/resources/bundleView.properties
를 생성

InternalResourceView는 자신이 찾다가 없으면 null을 리턴해서 끝내버림
그래서 여러 리졸버가 있을 때에는 우선순위를 맨 마지막으로 해야함

/SpringWebApp3/src/main/webapp/WEB-INF/webapp3-servlet.xml
namespace에 P 추가
p:basename="bundleView" p:order="1"
-----------------------------------
3-6
Workspace : ~\study\SpringWork

새로운 프로젝트 - 스프링으로 게시판 만들기
maven project - webapp

/BoardApp/pom.xml

Oracle 드라이버 준비

라이브러리를 pom.xml로 다운 받은게 아니라
Spring으로 넣은 방식이 아닌 예전 /WEB-INF/lib/ 폴더 안에 라이브러리를 넣음
그리고 해당 라이브러리를 프로젝트 프로퍼티에서 Build Path 설정하였음



/BoardApp/src/main/webapp/WEB-INF/web.xml
에서 여러 접미사를 가진 요청을 받기 위해서
<url-pattern>/</url-pattern>
와 같이 만든다
-----------------------------------
3-7
Workspace : ~\study\SpringWork
/SpringWebApp2/src/main/webapp/index.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<a href="first.action">첫번째 요청</a>
<br/><br/>
<a href="second.action?param1=food&param2=fruit">두번째 요청</a>
<br/><br/>
<form action="third.action" method="post">
     <input type="text" name="name"/><br/><br/>
     <input type="submit" value="세번째 요청"/>
</form>
<br/><br/>
<a href="forth.action">네번째 요청</a>
<br/><br/>
<a href="fifth.action">다섯번째 요청</a>
<br/><br/>
<form action="sixth.action" method="post">
     <input type="submit" value="여섯번째 요청(post)"/>
</form>
<br/><br/>
<a href="seventh.action">일곱번째 요청</a>
<br/><br/>
<a href="seventh.action?user=tom&id=tiger">일곱번째 요청(파라미터)</a>
<br/><br/>
<a href="seventh.action?user=tom">일곱번째 요청(id 없는 파라미터)</a>
<br/><br/>
<form action="eighth.action" method="post">
     이름 : <input type="text" name="name"/><br/><br/>
     나이 : <input type="text" name="age"/><br/><br/>
     점수 : <input type="text" name="point"/><br/><br/>
     <input type="checkbox" name="chk" value="test"/><br/><br/>
     <input type="submit" value="여덟번째 요청"/>
</form>
<br/><br/>
<a href="admin.action">관리자</a>
</body>
</html>
-----------------------------------
3-8
Workspace : ~\study\SpringWork
/SpringWebApp2/pom.xml

<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 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.study.myproject</groupId>
     <artifactId>SpringWebApp2</artifactId>
     <packaging>war</packaging>
     <version>0.0.1-SNAPSHOT</version>
     <name>SpringWebApp2 Maven Webapp</name>
     <url>http://maven.apache.org</url>
     <dependencies>
          <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>3.8.1</version>
               <scope>test</scope>
          </dependency>
          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-webmvc</artifactId>
               <version>4.1.7.RELEASE</version>
          </dependency>
          <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>jstl</artifactId>
               <version>1.2</version>
          </dependency>
          <dependency>
               <groupId>taglibs</groupId>
               <artifactId>standard</artifactId>
               <version>1.1.2</version>
          </dependency>
          <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>javax.servlet-api</artifactId>
               <version>3.1.0</version>
          </dependency>
     </dependencies>
     <build>
          <finalName>SpringWebApp2</finalName>
     </build>
</project>
-----------------------------------
3-9
Workspace : ~\study\SpringWork
/SpringWebApp2/src/main/java/controller/ForthController.java

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import dto.UserDto;

@Controller
public class ForthController {
     @RequestMapping("/forth.action")
     public String handler() throws Exception {
          return "/WEB-INF/views/forthResult.jsp";
     }
     @RequestMapping("/fifth.action")
     public ModelAndView fifthHandler(){
          ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
          mv.addObject("msg","다섯번째 요청에 대한 응답입니다.");
          return mv;
     }
     // POST 방식만 허용하겠다
     @RequestMapping(value="/sixth.action",method=RequestMethod.POST)
     public ModelAndView sixthHandler(){
          ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
          mv.addObject("msg","여섯번째 요청에 대한 응답입니다.");
          return mv;
     }
     @RequestMapping(value="/seventh.action")
     public void seventhHandler(){
          System.out.println("일곱번째 요청 성공");
     }
     @RequestMapping(value="/seventh.action",params={"user=tom","id=tiger"})
     public void seventhHandler2(){
          System.out.println("일곱번째 요청 성공(파라미터)");
     }
//     @RequestMapping(value="/seventh.action",params={"user=tom"})
     @RequestMapping(value="/seventh.action",params={"user=tom","!id"})
     public void seventhHandler3(){
          System.out.println("일곱번째 요청 성공(id 없는 파라미터)");
     }
     // 첫번째 방법
//     @RequestMapping(value="/eighth.action")
//     public ModelAndView eighthHandler(HttpServletRequest req){
//          System.out.println(req.getParameter("name"));
//          ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
//          mv.addObject("msg","여덟번째 요청에 대한 응답입니다.");
//          return mv;
//     }
     // 두번째 방법
//     @RequestMapping(value="/eighth.action")
//     public ModelAndView eighthHandler(@RequestParam("name") String ㅜ, @RequestParam("age") int ㅁ, @RequestParam("point") int ㅔ){
//          System.out.println(n+", "+a+", "+p);
//          ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
//          mv.addObject("msg","여덟번째 요청에 대한 응답입니다.");
//          return mv;
//     }
     // 세번째 방법 - 두번째 방법에서 어노테이션 생략 방법, 파라미터 이름과 똑같이 쓰면 됨
//     @RequestMapping(value="/eighth.action")
//     public ModelAndView eighthHandler(HttpServletRequest req,String name, int age, int point) throws UnsupportedEncodingException{
//          req.setCharacterEncoding("UTF-8");         
//          System.out.println(name+", "+age+", "+point);
//          ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
//          mv.addObject("msg","여덟번째 요청에 대한 응답입니다.");
//          return mv;
//     }
     // 네번째 방법
     @RequestMapping(value="/eighth.action")
     public ModelAndView eighthHandler(@ModelAttribute UserDto dto, String chk){         
          System.out.println(dto.getName()+", "+dto.getAge()+", "+dto.getPoint()+", "+chk);
          ModelAndView mv = new ModelAndView("/WEB-INF/views/forthResult.jsp");
          mv.addObject("msg","여덟번째 요청에 대한 응답입니다.");
          return mv;
     }
}
-----------------------------------
3-10
Workspace : ~\study\SpringWork
/SpringWebApp2/src/main/webapp/WEB-INF/webapp2-servlet.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:context="http://www.springframework.org/schema/context"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
     <context:component-scan base-package="controller"></context:component-scan>
    
<!--      @RequestMapping("/forth.action") 을 쓰면서 다른 anno 명시에 따른 문제를 아래 코드로 해결-->
<!--      <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> -->
    
     <bean name="/first.action" class="controller.FirstController"></bean>
     <bean name="/second.action" class="controller.SecondController"></bean>
     <bean name="/third.action" class="controller.ThirdController">
<!--           어노테이션으로 변경 -->
<!--           <property name="userDao" ref="userDao"></property> -->         
          <property name="supportedMethods" value="POST"></property>
     </bean>
     <bean id="userDao" class="dao.UserDao"></bean>
    
<!--      @RequestMapping("/forth.action") 을 써서 삭제 -->
<!--      <bean name="/forth.action" class="controller.ForthController"></bean> -->

<!--      <bean name="/forth.action" class="controller.ForthController"></bean> -->
<!--      <bean name="/fifth.action" class="controller.ForthController"></bean> -->
<!--      <bean name="/sixth.action" class="controller.ForthController"></bean> -->
</beans>
 
-----------------------------------
3-11
Workspace : ~\study\SpringWork
/SpringWebApp2/src/main/webapp/WEB-INF/admin/shoppingmall/index.jsp
/SpringWebApp2/src/main/webapp/shop/index.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<a href="shop_admin.action">쇼핑몰 관리자</a>
</body>
</html>
-----------------------------------
3-12
Workspace : ~\study\SpringWork
/SpringWebApp3/pom.xml

<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 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.study.myproject</groupId>
     <artifactId>SpringWebApp3</artifactId>
     <packaging>war</packaging>
     <version>0.0.1-SNAPSHOT</version>
     <name>SpringWebApp3 Maven Webapp</name>
     <url>http://maven.apache.org</url>
     <dependencies>
          <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>3.8.1</version>
               <scope>test</scope>
          </dependency>
          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-webmvc</artifactId>
               <version>4.1.7.RELEASE</version>
          </dependency>
          <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>jstl</artifactId>
               <version>1.2</version>
          </dependency>
          <dependency>
               <groupId>taglibs</groupId>
               <artifactId>standard</artifactId>
               <version>1.1.2</version>
          </dependency>
          <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>javax.servlet-api</artifactId>
               <version>3.1.0</version>
          </dependency>
     </dependencies>
     <build>
          <finalName>SpringWebApp3</finalName>
     </build>
</project>
-----------------------------------
3-13
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/webapp/index.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<h2>HandlerMapping!</h2>
<a href="first.do">첫번째 요청</a><br/><br/>
<a href="second.do">두번째 요청</a><br/><br/>
<a href="third.do">세번째 요청</a><br/><br/>
<hr/>
<h2>ViewResolover!</h2>
<a href="forth.do">네번째 요청</a><br/><br/>
<a href="fifth.do">다섯번째 요청</a><br/><br/>
</body>
</html>
-----------------------------------
3-14
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/webapp/WEB-INF/web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
       <servlet>
          <servlet-name>webapp3</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     </servlet>
     <servlet-mapping>
          <servlet-name>webapp3</servlet-name>
          <url-pattern>*.do</url-pattern>
     </servlet-mapping>
</web-app>
-----------------------------------
3-15
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/webapp/WEB-INF/webapp3-servlet.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:context="http://www.springframework.org/schema/context"
     xmlns:p="http://www.springframework.org/schema/p"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
     <context:component-scan base-package="controller"></context:component-scan>
<!--      <bean name="/first.do" class="controller.FirstController"></bean> -->
<!--      <bean name="/second.do" class="controller.SecondController"></bean> -->
<!--      <bean name="/third.do" class="controller.ThirdController"></bean> -->
     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
          <property name="order" value="2"></property>
     </bean>
     <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
          <property name="order" value="1"></property>
          <property name="mappings">
               <props>
<!--                     <prop key="/first.do">firstController</prop> -->
                    <prop key="/third.do">thirdController</prop>    
                    <prop key="/forth.do">viewController</prop>
                    <prop key="/fifth.do">viewController</prop>                        
               </props>
          </property>
     </bean>
<!--      <bean id="firstController" class="controller.FirstController"></bean> -->
     <bean name="/first.do" class="controller.FirstController"></bean>
     <bean name="/second.do" class="controller.SecondController"></bean>
     <bean id="thirdController" class="controller.ThirdController"></bean>
     <bean id="viewController" class="controller.ViewController"></bean>
    
<!--      기본 view resolver -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="viewClass">
               <value>org.springframework.web.servlet.view.JstlView</value>
          </property>
          <property name="prefix">
               <value>/WEB-INF/views/</value>
          </property>
          <property name="suffix">
               <value>.jsp</value>
          </property>         
          <property name="order">
               <value>2</value>
          </property>
     </bean>
    
     <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver" p:basename="bundleView" p:order="1"/>
    
</beans>
-----------------------------------
3-16
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/webapp/WEB-INF/views/result.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
<html>
<body>
<h2>first,second,third 요청에 대한 응답</h2>
${msg}
</body>
</html>
-----------------------------------
3-17
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/java/controller/FirstController.java

package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class FirstController  {

     @RequestMapping("/first.do")
     public ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
          arg0.setCharacterEncoding("UTF-8");
          //ModelAndView mv = new ModelAndView("/WEB-INF/views/result.jsp");
          ModelAndView mv = new ModelAndView("first");
          mv.addObject("msg", "FirstController");
          return mv;
     }

}
-----------------------------------
3-18
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/java/controller/SecondController.java

package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class SecondController extends AbstractController {

     @Override
     protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
          arg0.setCharacterEncoding("UTF-8");
          ModelAndView mv = new ModelAndView("/WEB-INF/views/result.jsp");
          mv.addObject("msg", "SecondController");
          return mv;
     }

}
-----------------------------------
3-19
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/java/controller/ThirdController.java

package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class ThirdController extends AbstractController {

     @Override
     protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
          arg0.setCharacterEncoding("UTF-8");
          ModelAndView mv = new ModelAndView("/WEB-INF/views/result.jsp");
          mv.addObject("msg", "ThirdController");
          return mv;
     }

}
-----------------------------------
3-20
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/java/controller/ViewController.java

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ViewController {
     @RequestMapping("/forth.do")
     public ModelAndView forthCall() {
          ModelAndView mv = new ModelAndView("result");
          mv.addObject("msg","네번째 요청입니다.");
          return mv;
     }
     @RequestMapping("/fifth.do")
     public ModelAndView fifthCall() {
          ModelAndView mv = new ModelAndView("result");
          mv.addObject("msg","다섯번째 요청입니다.");
          return mv;
     }
}
-----------------------------------
3-21
Workspace : ~\study\SpringWork
/SpringWebApp3/src/main/resources/bundleView.properties

first.(class)=org.springframework.web.servlet.view.JstlView
first.url=/WEB-INF/views/result.jsp
-----------------------------------
3-22
Workspace : ~\study\SpringWork
/BoardApp/pom.xml

<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 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.study.myproject</groupId>
     <artifactId>BoardApp</artifactId>
     <packaging>war</packaging>
     <version>0.0.1-SNAPSHOT</version>
     <name>BoardApp Maven Webapp</name>
     <url>http://maven.apache.org</url>
     <dependencies>
          <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>3.8.1</version>
               <scope>test</scope>
          </dependency>
          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-webmvc</artifactId>
               <version>4.1.7.RELEASE</version>
          </dependency>
          <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>jstl</artifactId>
               <version>1.2</version>
          </dependency>
          <dependency>
               <groupId>taglibs</groupId>
               <artifactId>standard</artifactId>
               <version>1.1.2</version>
          </dependency>
          <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>javax.servlet-api</artifactId>
               <version>3.1.0</version>
          </dependency>
     </dependencies>
     <build>
          <finalName>BoardApp</finalName>
     </build>
</project>
-----------------------------------
3-23
Workspace : ~\study\SpringWork
/BoardApp/src/main/webapp/WEB-INF/web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
     <display-name>Archetype Created Web Application</display-name>
     <servlet>
          <servlet-name>board</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     </servlet>
     <servlet-mapping>
          <servlet-name>board</servlet-name>
          <url-pattern>/</url-pattern>
     </servlet-mapping>
</web-app>
-----------------------------------
3-24
Workspace : ~\study\SpringWork
/BoardApp/src/main/webapp/WEB-INF/board-servlet.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:context="http://www.springframework.org/schema/context"
     xmlns:p="http://www.springframework.org/schema/p"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
     <context:component-scan base-package="board.controller"></context:component-scan>
     <bean id="listController" class="board.controller.ListController"></bean>
     <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
          <property name="mappings">
               <props>
                    <prop key="/board_list.board">listController</prop>                        
               </props>
          </property>
     </bean>

     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="viewClass">
               <value>org.springframework.web.servlet.view.JstlView</value>
          </property>
          <property name="prefix">
               <value>/WEB-INF/views/board/</value>
          </property>
          <property name="suffix">
               <value>.jsp</value>
          </property>
     </bean>
</beans>
-----------------------------------
3-25
Workspace : ~\study\SpringWork
/BoardApp/board.sql

CREATE TABLE tblSpringBoard(
     b_seq          number          primary key,
     b_title          varchar2(50),
     b_content     varchar2(4000),
     b_writer     varchar2(50),
     b_regdate     varchar2(50),
     b_hitcount     number,
     b_password     varchar2(10)
);

CREATE SEQUENCE seq_board;

CREATE TABLE tblSpringMember(
     u_seq          number               primary key,
     u_id          varchar2(20)     unique,
     u_pw          varchar2(10),
     u_email          varchar2(50)
);

CREATE SEQUENCE seq_user;

INSERT INTO TBLSPRINGMEMBER values(seq_user.nextVal, 'aaa', 'aaa', 'aaa@aaa.net');
INSERT INTO TBLSPRINGMEMBER values(seq_user.nextVal, 'bbb', 'bbb', 'bbb@bbb.net');
-----------------------------------
3-26
Workspace : ~\study\SpringWork
/BoardApp/src/main/webapp/index.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
<html>
<body>
     <h1>Main Page</h1>
     <ul>
          <li><a href="login.member">로그인</a><br /></li>
          <li><a href="board_list.board">게시판</a><br /></li>
     </ul>
</body>
</html>
-----------------------------------
3-27
Workspace : ~\study\SpringWork
/BoardApp/src/main/webapp/WEB-INF/views/board/list.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
     <h1>리스트 페이지</h1>
     <a href="">글쓰기</a>
     <br/><br/>
     <table border="1">
          <tr>
               <th>번호</th><th>제목</th><th>등록자</th><th>등록일</th><th>조회수</th>
          </tr>
     </table>
</body>
</html>
-----------------------------------
3-28
Workspace : ~\study\SpringWork
/BoardApp/src/main/java/board/controller/ListController.java

package board.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ListController {
     @RequestMapping("/board_list.board")
     public ModelAndView handleRequest() {
          ModelAndView mv = new ModelAndView("list");         
          return mv;
     }
}
-----------------------------------
###################################

'OpenFrameWork' 카테고리의 다른 글

오픈프레임워크_Day90  (0) 2015.07.21
오픈프레임워크_Day89  (0) 2015.07.20
오픈프레임워크_Day87  (0) 2015.07.16
오픈프레임워크_Day86  (0) 2015.07.16
오픈프레임워크_Day85  (0) 2015.07.14
,