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>