spring/spring

Step01_Basic

bono.html 2022. 8. 30. 20:59

학습 목록

1. 상대경로, 절대경로 작성법

2. forEach문 작성법

3. controller 작성법

 

 

/views/home.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/views/home.jsp</title>
</head>
<body>
   <div class="container">
      <h1>인덱스 페이지 입니다.</h1>
      <ul>
         <li><a href="study.do">공부하러가기</a></li>
         <li><a href="${pageContext.request.contextPath}/sub/play.do">놀러가기</a></li>
      </ul>
      <img src="${pageContext.request.contextPath}/images/kim1.png" />
      <img src="images/kim1.png" />
      <h2>공지사항</h2>
      <ul>
         <c:forEach var="tmp" items="${requestScope.noticeList }">
            <li>${tmp }</li>
         </c:forEach>
      </ul>
   </div>
</body>
</html>

 

 

 

HomeController

package com.gura.basic;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

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

@Controller
public class HomeController {
   
   // /home.do 요청이 왔을때 동작하는 컨트롤러 메소드 
   @RequestMapping("/home.do")
   public String home(HttpServletRequest request) {
      
      //DB 에서 읽어온 공지사항 이라고 가정하자 
      List<String> noticeList=new ArrayList<>();
      noticeList.add("Spring Framework 시작입니다.");
      noticeList.add("화이팅!");
      noticeList.add("어쩌구...");
      noticeList.add("저쩌꾸...");
      
      //view page 에 전달할 Model(data) 을  request 영역에 담기
      request.setAttribute("noticeList", noticeList);
      
      // /WEB-INF/views/home.jsp 페이지로 forward 이동해서 응답
      return "home";
   }
   
   /*
    *  어떤 요청에 대해서 동작을 할지 요청 경로를 명시한다.
    *  .do는 생략 가능하다
    *  메소드의 return type 은 String or ModelAndView 이다.
    *  메소드명은 마음대로 지울 수 있다.
    *  메소드에 필요한 인자는 필요시에 선언하면 해당 객체의 참조값이 알아서 전달된다.
    *  전달되는 type : HttpServletRequest, HttpServletResponse, HttpSession, ModelAndView
    *  등등
    *  
    *  String type을 리턴하는 경우 forward 이동할 경로 혹은 redirect 이동할 경로를 문자열로 구성해서
    *  리턴하면 된다.
    */
   @RequestMapping("/study.do")//반드시 슬래시로 시작해야한다.
   public String study() {
	   
	   // /WEB-INF/views/study.jsp 페이지로 forward 이동해서 응답
	   return "study"; //슬래시로 시작 하면 안된다
   }
   
   @RequestMapping("/sub/play")//반드시 슬래시로 시작해야한다.
   public String play() {
	   
	   // /WEB-INF/views/play.jsp 
	   return "sub/play"; //슬래시로 시작 하면 안된다
   }
   
}

 

/views/study.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/views/study.jsp</title>
</head>
<body>
<div class="container">
	<h1>공부 페이지입니다.</h1>
	<p>공부해요</p>
	<a href="home.do">인덱스로 가기</a>
	<a href="${pageContext.request.contextPath}/">인덱스로</a>
</div>
</body>
</html>

 

 

/views/sub/play.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/views/sub/play.jsp</title>
</head>
<body>
<div class="container">
	<h1>노는 페이지입니다.</h1>
	<p>신나게 놀아보아요</p>
	<a href="../home.do">인덱스로 가기</a>
	0<a href="${pageContext.request.contextPath}/">인덱스로</a>
	
	<img src="${pageContext.request.contextPath}/images/kim1.png" />
    <img src="../images/kim1.png" />
</div>
</body>
</html>