본문 바로가기

JSP

[JSP] JSP

BMI 구하는 프로그램을 

JavaScript와 Java의 Servlet을 사용해서 만들고 있는데

Java에서 Js를 표현하려면 코드를 비효율적으로 짤 수 밖에 없다.

 

out.print("<html>");

out.print("<head><title>BMI Result</title>");

out.print("<meta charset = 'UTF-8'></head>");

out.print("<body>");

out.print("<h1>BMI 결과 </h1>");

out.printf("이름 : %s<p>",name);

out.printf("키 : %.1f<p>",height * 100);

out.printf("몸무게 : %.1f<p>",weight);

out.printf("BMI : %.2f<p>",bmi);

out.printf("<h2>당신은 %s입니다</h2><p>", result);

out.printf("<img src = 'img/%s' style = 'max-width:400px;'>", image);

out.print("</body>");

out.print("</html>");

 

이런식으로 out.print안에 JS코드를 일일이 넣어줘야한다.

이런 번거로움을 해결할 수 있는 것이 JSP이다.

JSP는 Java Server Page의 약자이다.

 

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

 

</body>

</html>

 

JSP파일을 만들면 

위와 같이 베이직 코드가 짜져있는데

기본적인 구조는 JS와 똑같고

 body 태그 안에

<%   %>  

태그를 만들어서 태그 안에 자바 코드를 넣으면 된다.

 

<%

response.setCharacterEncoding("UTF-8");

String path = request.getServletContext().getRealPath("img");

System.out.println(path);

MultipartRequest mr = new MultipartRequest(request, path, 30 * 1024 * 1024, "UTF-8", new DefaultFileRenamePolicy());

String name = mr.getParameter("name");

double height = Double.parseDouble(mr.getParameter("height"));

double weight = Double.parseDouble(mr.getParameter("weight"));

height /= 100;

double bmi = weight / (height * height);

String result = "저체중";

if(bmi >= 40) {

result = "고도비만";

} else if(bmi >= 35) {

result = "중증도비만";

} else if(bmi >= 30) {

result = "경도비만";

} else if (bmi >= 25) {

result = "과체중";

 

} else if (bmi >= 18.5) {

result = "정상";

}

 

//BMI 수치 => 소수점 둘째자리까지만 (HTML쪽에서는 안되니 여기서 해결)

String bmi2 = String.format("%.2f", bmi);

String image = mr.getFilesystemName("photo");

image = URLEncoder.encode(image, "UTF-8");

image = image.replace("+", " ");

//자바의 영역

%>

 

이런 식으로 자바 서버의 로직 코드를 넣고

 

<div class = 'title'>

<h1>BMI결과</h1>

</div>

<div class = 'result-section'>

<img src = 'img/<%=image%>' style = 'max-width:400px;'>

<div class = 'text'>

이름 : <%=name %>

</div><!--값을 불러옴 -->

<div class = 'text'>

키 : <%=height %> </div>

<div class = 'text'>

체중 : <%=weight %> </div>

<div class = 'text'>

BMI : <%=bmi2 %> </div>

<div class = 'text'>

당신은 <%=result %> 입니다.

</div>

 

그 밑에 body태그에 들어갈 내용인

UI 부분을 구현하면된다.

물론 CSS도 link태그를 사용해서 불러올 수 있다.

 

<link rel = "stylesheet" href = "css/BMI.css">

 

 

인풋페이지

 

 

디자인이 난해하지만

기능 실습은 성공적이다.

 

'JSP' 카테고리의 다른 글

[JSP] EL  (0) 2025.01.22
[JSP] Redirect  (1) 2025.01.21
[JSP] 기본 문법  (0) 2025.01.20