61일차

김윤정·2024년 9월 10일

코딩

목록 보기
50/60
post-thumbnail

1. (Spring) pom.xml 에 대하여 설명하시오.

pom.xml은 Maven의 빌드 정보를 담고 있는 파일로, POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정하는 부분입니다.

이것은 다른 프로젝트에도 복사-붙여넣기하면 되기 때문에 범용성이 좋고, 협업할때에 버전을 통일하기에 편리합니다.

2. maven 이란?

자바 프로젝트를 관리하는 툴로, 미리 작성된 xml 파일을 이용하여 라이브러리를 자동으로 다운로드하거나 프로젝트를 빌드해줍니다.
자바 소스를 컴파일하고 패키지해서 deploy까지 자동화 해준다는 것입니다.

3. maven repository 에 대하여 설명하시오.

Maven에서는 프로젝트를 빌드하거나 라이브러리를 다운로드할 때 의존성을 확인하기 위해 repository를 사용하는데, 이 때 repository는 3 종류가 있습니다.

1. Local Repository: Maven은 dependency(의존성) 및 packaging한 프로젝트 결과물을 local의 특정 위치에 저장한다.
2. Repository: 의존성을 다운로드 받을 위치의 repository
3. Plugin Repository: 다운로드 받을 수 있는 저장소의 위치

4. (Spring) 아래를 설명하시오.

@RequestMapping

Spring 개발 시 특정 URL로 요청(Request)을 보내면 Controller에서 어떠한 방식으로 처리할지 정의합니다.
이때 들어온 요청을 특정 method와 매핑하기 위해 사용하는 어노테이션이 바로 @RequestMapping입니다.

  • @RequestMapping은 Controller단에서 사용되는데, DispatcherServlet이 Controller 파일을 찾고, 논리적 주소가 매핑된 Method를 찾기 위해서는 @Controller와 @RequesetMapping이 작성되어야 합니다.
  • URL와 Controller의 method 매핑을 설정하는 어노테이션
  • URL 이외에도 다양한 속성을 지정 가능
  • URL 템플릿 기능을 이용하면 URL속의 값을 쉽게 얻을 수 있음

@Controller

사용자의 요청을 처리하고 난 후 정해진 뷰에 객체를 넘겨주는 역할을 합니다.
대규모 서비스일수록 처리해야 할 서비스들이 많아지면서 중간 제어자 역할을 할 Controller 이 생기게 됐습니다.

Model 객체

@RequestMapping을 통해 매핑을 한 메서드의 파라미터로 Model 객체를 전달합니다.
model.addAttribute("key", value)를 통해 model에 값을 저장합니다.

5. command 객체에 대하여 설명하시오.

HttpServletRequest 를 통해 들어온 요청 파라미터들을 setter 메서드를 이용하여 객체에 정의되어있는 속성에 바인딩이 되는 객체를 의미합니다.

6.아래를 프로그래밍 하시오.

-국영수 입력 받아 출력 합계 평균 수우미양가 출력
<조건>
-커맨드 객체 사용 할것
-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>

7.아래를 참고 하여, 프로그래밍 하시오.

  • 입력값을 하나 받아 별석탑 만들기
    <조건>
    -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>

8.area.jsp 에 아래를 추가후 원의 넓이가 나오도록 하시오.

<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>

0개의 댓글