본문 바로가기

안녕하세요!

프로그래밍 언어/JSP

JSP_22-11-04

[ pom.xml ]

<!-- 한글 설정 시작 -->
   <filter>
      <filter-name>encodingFilter</filter-name>
      <filter-class>
         org.springframework.web.filter.CharacterEncodingFilter
      </filter-class>
      <init-param>
         <param-name>encoding</param-name>
         <param-value>UTF-8</param-value>
      </init-param>
      <init-param>
         <param-name>forceEncoding</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>
   <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
   <!-- 한글 설정 끝 -->

[ BMICalculator.java ]

package com.edu.di.bmi;

//-------------------------------------------------------------------
// BMI(Body Mass Index : 체질량 지수) 계산기
// 비만도 측정(BMI 지수)
// BMI를 이용한 비만도 계산 : 자신의 몸무게를 키의 제곱으로 나눈 것으로 공식은 kg/㎡
// BMI가 18.5 이하 : 저체중 / 18.5 ~ 22.9 : 정상 / 23.0 ~ 24.9 과체중 / 25.0 이상 : 비만
// Ex) 키 170cm, 몸무게 73kg => 73 / (1.7x1.7) = 25.6 => 과체중
//-------------------------------------------------------------------
public class BMICalculator {

	// 체질량 계산에 기준이 되는 변수들
	private double	lowWeight;		// 저체중
	private double	normalWeight;	// 정상
	private double	overWeight;		// 과체중
	private double	obesity;		// 비만
	
	//---------------------------------------------------------------
	// 비만도를 계산하는 메서드
	//---------------------------------------------------------------
	
	public void bmiCalculator(double weight, double height) {
		double h		= height * 0.01;
		double result	= weight / (h*h);
		
		System.out.println("BMI 지수 : " + (int)result);
		
		// 큰 수부터 비교하여야지만 충돌이 일어나지 않음
		if(result > obesity) {
			System.out.println("비만입니다. 살 빼세요!");
		} else if(result > overWeight) {
			System.out.println("과체중입니다. 건강 유의하시기 바랍니다.");
		} else if(result > normalWeight) {
			System.out.println("정상입니다.");
		} else {
			System.out.println("저체중입니다. 건강 관리하세요.");
		}
	} // End - public void bmiCalculator(double weight, double height)
	
	public double getLowWeight() {
		return lowWeight;
	}



	public void setLowWeight(double lowWeight) {
		this.lowWeight = lowWeight;
	}



	public double getNormalWeight() {
		return normalWeight;
	}



	public void setNormalWeight(double normalWeight) {
		this.normalWeight = normalWeight;
	}



	public double getOverWeight() {
		return overWeight;
	}



	public void setOverWeight(double overWeight) {
		this.overWeight = overWeight;
	}



	public double getObesity() {
		return obesity;
	}



	public void setObesity(double obesity) {
		this.obesity = obesity;
	}
	
	@Override
	public String toString() {
		return "BMICalulator [lowWeight=" + lowWeight + ", normalWeight=" + normalWeight + ", overWeight=" + overWeight
				+ ", obesity=" + obesity + "]";
	}
	
} // End - public class BMICalulator

 

[ BMIMain.java ]

package com.edu.di.bmi;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

//-------------------------------------------------------------------------
// public class BMIMain
//-------------------------------------------------------------------------
public class BMIMain {

	//-------------------------------------------------------------------------
	// public static void main(String[] args)
	//-------------------------------------------------------------------------
	public static void main(String[] args) {
		
		// classpate => src/main/resources를 가르킨다.
		String	conf	= "classpath.ApplicationContext.xml";
		
		// 스프링 컨테이가 형성된다.
		ApplicationContext ctx = new GenericXmlApplicationContext(conf);
		
		// 스프링 컨테이너에서 컴포넌트를 가져온다.
		MyInfo myInfo = ctx.getBean("myInfo", MyInfo.class);
		myInfo.getInfo();
		
		((AbstractApplicationContext) ctx).close();

	} // End - public static void main(String[] args)

} // End - public class BMIMain

 

[ applicationContexts.xml ]

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
   
   <!-- BMICalculator bmiCalc = new BMICalculator(); -->
   <bean id="bmiCalc" class="com.edu.di.bmi.BMICalculator">
   		<property name="lowWeight">
   			<value>18.5</value>
   		</property>
   		<property name="normal">
   			<value>23</value>
   		</property>
   		<property name="overWeight" value="25"></property>
   		<property name="obesity" 	value="33"></property>
   </bean>
   
   <!-- MyInfo myInfo = new MyInfo(); -->
   <bean id="myInfo" class="com.edu.di.bmi.MyInfo">
   		<property name="name" 	value="홍길동"></property>
   		<property name="height" value="178"></property>
   		<property name="weight" value="78"></property>
		<property name="hobby">
			<list>
				<value>무술 연마</value>
				<value>등산</value>
				<value>음악 감상</value>
				<value>남의 집 방문하기</value>
				<value>신천 유람</value>
			</list>
		</property>
		<property name="bmiCalculator">
			<ref bean="bmiCalc"/>
		</property>
   </bean>
   
</beans>

 

[ MyInfo.java ]

package com.edu.di.bmi;

import java.util.ArrayList;

//-------------------------------------------------------------------
// 개인 정보
//-------------------------------------------------------------------
public class MyInfo {

	private String				name; 		// 이름
	private double				height; 	// 키
	private double				weight;		// 몸무게
	private ArrayList<String>	hobby; 		// 취미
	
	private BMICalculator		bmiCalculator;
	
	public void bmiCalculate() {
		bmiCalculator.bmiCalculator(weight, height);
	}
	
	public void getInfo() {
		System.out.println("이  름 : " + name);
		System.out.println("키    : " + height);
		System.out.println("몸무게 : " + weight);
		System.out.println("취  미 : " + hobby);
		
		// BMI 지수를 계산해 결과를 보여준다.
		bmiCalculate();
	}

	// getter setter
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getHeight() {
		return height;
	}

	public void setHeight(double height) {
		this.height = height;
	}

	public double getWeight() {
		return weight;
	}

	public void setWeight(double weight) {
		this.weight = weight;
	}

	public ArrayList<String> getHobby() {
		return hobby;
	}

	public void setHobby(ArrayList<String> hobby) {
		this.hobby = hobby;
	}

	public BMICalculator getBmiCalculator() {
		return bmiCalculator;
	}

	public void setBmiCalculator(BMICalculator bmiCalculator) {
		this.bmiCalculator = bmiCalculator;
	}

	// toString
	@Override
	public String toString() {
		return "MyInfo [name=" + name + ", height=" + height + ", weight=" + weight + ", hobby=" + hobby
				+ ", bmiCalculator=" + bmiCalculator + "]";
	}
	
	
	
} // End - public class MyInfo

[ ExamController1 ]

package com.edu.exam;

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

//-------------------------------------------------------------------------
// public class ExamController1
// @Container : ExamController1 클래스를 컨트롤러로 설정하는 어노테이션이다.
// @Controller : ExamController1 클래스를 컨트롤러로 설정하는 어노테이션이다.
// @RequestMapping("/exam01") : /exam01로 접근하는 URL을 처리하겠는가를 기술하는 것이다.
//-------------------------------------------------------------------------
@Controller
@RequestMapping("/exam01")
public class ExamController1 {
	
		//-------------------------------------------------------------------------
		// public doA() : void 타입 => return 타입이 없는 경우
		// localhost:8099/exam01/doA
		//-------------------------------------------------------------------------
		@RequestMapping("/doA")
		public void doA() {
			System.out.println("doA가 실행되었습니다......");
		}
	
		//-------------------------------------------------------------------------
		// public void doB()
		//-------------------------------------------------------------------------
		@RequestMapping("/doB")
		public void doB() {
			System.out.println("doB가 실행되었습니다......");
		}
		
	
} // End - public class ExamController1

 

[ doA ]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>doA.jsp</title>
</head>
<body>
	<h1>doA.jsp</h1>
	<h2>저는 doA.jsp 파일입니다.</h2>
</body>
</html>

 

[doB]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>doB.jsp</title>
</head>
<body>
	<h1>doB.jsp</h1>
	<h2>doB.jsp가 불려왔습니다.</h2>
</body>
</html>

[ ExamController2 ]

package com.edu.exam2;

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

//-------------------------------------------------------------------------
// public class ExamController2
// @Container : ExamController2 클래스를 컨트롤러로 설정하는 어노테이션이다.
// @Controller : ExamController2 클래스를 컨트롤러로 설정하는 어노테이션이다.
// @RequestMapping("/exam02") : /exam02로 접근하는 URL을 처리하겠는가를 기술하는 것이다.
//-------------------------------------------------------------------------
@Controller
@RequestMapping("/exam02")
public class ExamController2 {
	
		//-------------------------------------------------------------------------
		// return 타입이 String인 경우
		// @ModelAttribute("msg")는 주소창에서 msg라는 파라미터의 값을 가져온다.
		// http://localhost:8099/exam02/doC?msg=hello
		// 이렇게 주소창에 파라미터가 적혀있는 경우에 자동적으로 msg의 값인 hello를 가져오게 된다.
		//		request.getParameter("msg")를 사용하지 않아도 된다.
		//-------------------------------------------------------------------------
		@RequestMapping("/doC")
		public String doC(@ModelAttribute("msg") String msg) {
			
			System.out.println("doC가 실행되었습니다 msg => " + msg);
			
			// return에 문자열이 사용될 경우에는 문자열.jsp파일을 찾아서 실행하게 된다.
			// void 타입과는 다르게 return타입이 string인 경우에는
			// return 하는 문자열이 View의 이름이 된다.
			
			return "exam02/doC";
		}
	
} // End - public class ExamController2

 

[ doC ]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>doC.jsp</title>
</head>
<body>
	<h1>doC 실행 화면</h1>
	<h1>ModelAttribute에 담겨져 오는 메시지 받기</h1>
	<hr/>
	<h1>메시지 : ${msg}</h1>
</body>
</html>

 

 

728x90
반응형

'프로그래밍 언어 > JSP' 카테고리의 다른 글

JSP_22-11-08  (0) 2022.11.08
쇼핑몰 만들기(1)  (0) 2022.11.07
JSP_22-11-02  (0) 2022.11.02
JSP_22-11-01  (0) 2022.11.01

loading