Dev/Spring

Spring3.0 MVC 예제(1)

창문닦이 2019. 4. 15. 16:43

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