Spring MVC 실습을 위해 서버 셋팅
1. create a new server
2. Define a New Server
① 톰캣 7.0.92 버전을 설치했으므로 맞추어 생성한다
② browse하여 아파치 톰캣 서버 파일을 설치해놓은 폴더로 설정 후 생성
③ Finish
3. 프로젝트 생성 (Spring Legacy Project - 템플릿 Spring MVC Project)
자바 패키지명 설정
참고 : 라이브러리 설치가 제대로 안될경우 메이븐 이용
프로젝트 마우스 우클릭 > Maven > Update Project
Spring MVC 프로젝트 구성
기존 자바로 다이나믹 웹 프로젝트를 만들 때 WebContent > WEB-INF 디렉토리가 존재 (WebContent는 일반사용자 접근가능)
WEB-INF에는 환경설정파일인 web.xml과 라이브러리파일이 존재했음. (WEB-INF는 일반사용자 접근불가)
스프링은 보안성을 높였다. (프로젝트 구성을 보게되면 resources까지만 일반사용자가 접근가능)
① views폴더 : jsp를 저장하는 디렉토리
② servlet-context.xml : application-context.xml과 동일한 역할을 한다. (스프링 빈 설정파일)
③ resources : CSS와 JavaScript를 저장
1. 서버 시작시 web.xml을 읽으라고 호출(context.xml)
2. web.xml 실행
3. servlet-context.xml (Front Controller)
MVC 예제1
home.jsp와 HomeController는 한쌍. 뷰와 컨트롤러.
1. home.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!-- JSTL이 디폴트로 들어감 --> <%@ page session="false" pageEncoding="UTF-8"%> <html> <head> <title>Home</title> </head> <body> <h1> Hello world! </h1> <P> The time on the server is ${serverTime}. </P> </body> </html> |
2. HomeController 클래스
package com.exe.springmvc; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HomeController { //콘솔로그 //private static final Logger logger = LoggerFactory.getLogger(HomeController.class); @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { //logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); String formattedDate = dateFormat.format(date); model.addAttribute("serverTime", formattedDate );
return "home";//home.jsp } } |
★ 참고 : 주소를 입력할경우 프로젝트명으로 항상 시작하던것을 바꿀 수 있다.
프로젝트 마우스우클릭 > Properties > Web Project Settings > Context Root
3. 출력 페이지
MVC 예제2
새로운 페이지를 생성해서 매핑이 되는지 컨트롤러와 뷰를 작성해보자
1. View 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> <h2>여기는 hello.jsp페이지</h2> </body> </html> |
2. Controller 작성
package com.exe.springmvc; import java.text.DateFormat; import java.util.Date; import java.util.Locale; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home(Locale locale, Model model) { Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); String formattedDate = dateFormat.format(date); model.addAttribute("serverTime", formattedDate ); return "home";//home.jsp } @RequestMapping(value="/hello.action") public String getHello() { return "hello"; } } |
3. 출력 페이지
MVC 예제3
1. 컨트롤러 클래스 생성
package com.exe.springmvc; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller("test.controller") public class TestController {
//get방식 @RequestMapping(value="/test/param.action", method = RequestMethod.GET) public String processGetRequest() { System.out.println("GET방식 Request"); return "paramResult"; } //post방식 @RequestMapping(value="/test/param.action", method = RequestMethod.POST) public String processPostRequest() { System.out.println("POST방식 Request"); return "paramResult"; } } |
2. View JSP 페이지 생성 - 출력페이지
<%@ page contentType="text/html; charset=UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath();
String name = request.getParameter("name"); String phone = request.getParameter("phone"); String email = request.getParameter("email"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>paramResult</title> </head> <body> <h2>paramResult</h2> 이름: <%=name %> 전화: <%=phone %> 이메일: <%=email %> </body> </html> |
3. View JSP 페이지 생성 - 입력페이지(home.jsp)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!-- JSTL이 디폴트로 들어감 --> <%@ page session="false" pageEncoding="UTF-8"%> <html> <head> <title>Home</title> </head> <body> <h1> Hello world! </h1> <P> The time on the server is ${serverTime}. </P> <h3><a href="hello.action">Spring 환영 메세지</a></h3> <h3><a href="test/param.action?name=suzi&phone=010-1234-1234&email=suzi@naver.com"> 1. GET방식 테스트</a></h3> <h3>2. POST방식 테스트</h3> <form action="test/param.action" method="post"> 이름:<input type="text" name="name"/><br> 전화:<input type="text" name="phone"/><br> 메일:<input type="text" name="email"/><br> <input type="submit" value="전송"/><br> </form> </body> </html> |
4. 출력 페이지
① home페이지
② post방식 테스트 진행시
③ get방식 테스트 진행시
④ 콘솔 출력 화면
5. 컨트롤러의 매핑 메소드를 POST와 GET 함께 사용 가능
package com.exe.springmvc; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller("test.controller") public class TestController { @RequestMapping(value="/test/param.action", method = {RequestMethod.GET,RequestMethod.POST}) public String processPostRequest(String name, HttpServletRequest request) { System.out.println("GET/POST방식 Request"); System.out.println(name); System.out.println(request.getParameter("email")); return "paramResult"; } } |
① post방식 테스트 진행시
② 콘솔 출력 화면
'Dev > Spring' 카테고리의 다른 글
Spring3.0 - DAO(JDBC) (0) | 2019.04.16 |
---|---|
Spring3.0 MVC 예제(2) (0) | 2019.04.16 |
Spring3.0 - 제어의역전,의존성주입 복습 (0) | 2019.04.15 |
Spring 3.0 셋팅 (0) | 2019.04.15 |
Spring2.5 - tiles (0) | 2019.04.09 |