pom.xml은 Maven의 빌드 정보를 담고 있는 파일로, POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정하는 부분입니다.
이것은 다른 프로젝트에도 복사-붙여넣기하면 되기 때문에 범용성이 좋고, 협업할때에 버전을 통일하기에 편리합니다.
자바 프로젝트를 관리하는 툴로, 미리 작성된 xml 파일을 이용하여 라이브러리를 자동으로 다운로드하거나 프로젝트를 빌드해줍니다.
자바 소스를 컴파일하고 패키지해서 deploy까지 자동화 해준다는 것입니다.
Maven에서는 프로젝트를 빌드하거나 라이브러리를 다운로드할 때 의존성을 확인하기 위해 repository를 사용하는데, 이 때 repository는 3 종류가 있습니다.
1. Local Repository: Maven은 dependency(의존성) 및 packaging한 프로젝트 결과물을 local의 특정 위치에 저장한다.
2. Repository: 의존성을 다운로드 받을 위치의 repository
3. Plugin Repository: 다운로드 받을 수 있는 저장소의 위치
@RequestMapping
Spring 개발 시 특정 URL로 요청(Request)을 보내면 Controller에서 어떠한 방식으로 처리할지 정의합니다.
이때 들어온 요청을 특정 method와 매핑하기 위해 사용하는 어노테이션이 바로 @RequestMapping입니다.
@Controller
사용자의 요청을 처리하고 난 후 정해진 뷰에 객체를 넘겨주는 역할을 합니다.
대규모 서비스일수록 처리해야 할 서비스들이 많아지면서 중간 제어자 역할을 할 Controller 이 생기게 됐습니다.
Model 객체
@RequestMapping을 통해 매핑을 한 메서드의 파라미터로 Model 객체를 전달합니다.
model.addAttribute("key", value)를 통해 model에 값을 저장합니다.
HttpServletRequest 를 통해 들어온 요청 파라미터들을 setter 메서드를 이용하여 객체에 정의되어있는 속성에 바인딩이 되는 객체를 의미합니다.
-국영수 입력 받아 출력 합계 평균 수우미양가 출력
<조건>
-커맨드 객체 사용 할것
-view폴더 /grade
-GradeController로 받기
grade/input - /grade/input.jsp
grade/result - /grade/result.jsp
-lombok.jar 사용 할것
GradeController2
package edu.ict.ex.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import edu.ict.ex.vo.GradeVO2;
@Controller
@RequestMapping("/grade2")
public class GradeController2 {
@GetMapping("/input")
public String input(GradeVO2 gradeVO2) {
return "grade/input";
}
@PostMapping("/result")
public String result(GradeVO2 gradeVO2) {
System.out.println("=================");
return "grade/result";
}
}
GradeVO2
package edu.ict.ex.vo;
public class GradeVO2 {
private int kor, eng, math;
public GradeVO2() {}
public GradeVO2( int kor, int eng, int math) {
this.kor = kor;
this.eng = eng;
this.math = math;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public char getGrade() {
char grade = '가';
double avg = (kor + eng + math) / 3.0;
if (avg >= 90) {
grade = '수';
} else if (avg >= 80) {
grade = '우';
} else {
grade = '가';
}
return grade;
}
public double getAvg() {
return (kor + eng + math) / 3.0;
}
}
input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>성적표</h1>
<form action="/grade2/result" method="post">
국어: <input type="text" name="kor"><br>
영어: <input type="text" name="eng"><br>
수학: <input type="text" name="math"><br>
<input type="submit" value="제출"><br>
</form>
</body>
</html>
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>성적표</h1>
국어: ${gradeVO2.kor}<br>
영어: ${gradeVO2.eng}<br>
수학: ${gradeVO2.math}<br>
평균: ${gradeVO2.getAvg()}<br>
등급: ${gradeVO2.getGrade()}<br>
</body>
</html>
- 입력값을 하나 받아 별석탑 만들기
<조건>
-view폴더 /star- StarController
star/input - /star/input.jsp // 입력값 받기
star/result - /star/star.jsp // 석탑 출력
StarController
package edu.ict.ex.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import edu.ict.ex.vo.CircleVO;
import edu.ict.ex.vo.RectangleVO;
import edu.ict.ex.vo.StarVO;
import edu.ict.ex.vo.TriangleVO;
@Controller
@RequestMapping("/star")
public class StarController {
@GetMapping("/input")
public String Input( ) {
return "star/input";
}
@PostMapping("/result") //(HttpServletRequest req, Model model, UserVO user)
public String Result(StarVO starVO ) {
System.out.println("====="+starVO.getNum());
return "star/star";
}
}
StarVO
package edu.ict.ex.vo;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class StarVO {
private int num;
}
input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>별쌓기</h1>
<form action="/star/result" method="post">
<input type="text" name="num"><br>
<input type="submit" value="제출"><br>
</form>
</body>
</html>
star.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
for(int i=1;i < 5;i++){
}
%>
<c:forEach var="i" begin="1" end="${starVO.num}" >
<c:forEach begin="1" end="${i}" >*</c:forEach>
<br>
</c:forEach>
</body>
</html>
<h1> 원 넓이 </h1> <form action="/shape/circlArea" method="post"> <input type="text" name="radius"><br> <input type="submit" value="전송"> </form>
shapeController
package edu.ict.ex.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import edu.ict.ex.vo.CircleVO;
import edu.ict.ex.vo.RectangleVO;
import edu.ict.ex.vo.TriangleVO;
@Controller
@RequestMapping("/shape")
public class ShapeController {
@GetMapping("/form")
public String form() {
return "shape/area";
}
@PostMapping("/recArea") //(HttpServletRequest req, Model model, UserVO user)
public String recarea( RectangleVO rectangleVO ) {
return "shape/recArea";
}
@PostMapping("/triArea") //(HttpServletRequest req, Model model, UserVO user)
public String triarea( TriangleVO triangleVO ) {
return "shape/triArea";
}
@PostMapping("/circleArea") //(HttpServletRequest req, Model model, UserVO user)
public String circlearea( CircleVO circleVO ) {
return "shape/circleArea";
}
}
area.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>사각형 넓이</h1>
<form action="/shape/recArea" method="post">
가로: <input type="text" name="width"><br>
세로: <input type="text" name="height"><br>
<input type="submit" value="전송"><br>
</form>
<hr>
<h1>삼각형 넓이</h1>
<form action="/shape/triArea" method="post">
가로: <input type="text" name="width"><br>
세로: <input type="text" name="height"><br>
<input type="submit" value="전송"><br>
</form>
<hr>
<h1>원 넓이</h1>
<form action="/shape/circleArea" method="post">
<input type="text" name="radius"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
circleArea.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>원 넓이 </h1>
가로: ${circleVO.radius}<br>
넓이: ${circleVO.area}
</body>
</html>