๐ก ํ์ต ๋ชฉํ
- JSP ํ์ด์ง์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ์ด ๋ฌธ๋ฒ์ ์ตํ๋ค.
- ๋ค์ํ JSP ํ๊ทธ์ ํํ์์ ์ดํดํ๋ค.
- ๊ฐ๋จํ JSP ํ์ด์ง๋ฅผ ์์ฑํ์ฌ ๋์ ์ธ ์น ์ฝํ
์ธ ๋ฅผ ์์ฑํ ์ ์๋ค.
JSP๋ ๊ธฐ๋ณธ์ ์ผ๋ก HTML ๋ฌธ์ ์์ ์๋ฐ ์ธ์ด๋ฅผ ์ฝ์ ํด ์ฌ์ฉํ ์ ์๋๋ก ์ค๊ณ ๋์ด ์์ต๋๋ค.
๊ทธ๋์ ์ค์ ๋ก ๋๋ถ๋ถ์ ๋ณ์ ์ ์ธ, ๋ฉ์๋ ์ ์ธ, ๋ก์ง ๋ฑ์ ์๋ฐ ์ธ์ด๋ก ์์ฑํ ์ ์์ต๋๋ค.
ํ์ง๋ง HTML ์ฌ์ด์ ์๋ฐ ์ฝ๋๋ฅผ ๋ผ์ ๋ฃ์ ๋ ํ์ํ ๋ฌธ๋ฒ์ด ๋ช๊ฐ์ง ์์ต๋๋ค.
๐ก JSP ๊ธฐ์ด ๋ฌธ๋ฒ์ ์ข
๋ฅ
- JSP ์ง์์ด, Directive
- ์คํฌ๋ฆฝํธ๋ฆฟ(Scriptlet)
- ์ ์ธ๋ถ(Declaration)
- ํํ๋ถ(Expession)
- JSP ์ก์
ํ๊ทธ
JSP ์ง์์ด, Directive
<%@ xxxx…. %> JSP ๋๋ ํฐ๋ธ๋ JSP ํ์ด์ง์ ์ ๋ฐ์ ์ธ ์์ฑ์ ์ค์ ํฉ๋๋ค.
์ฃผ๋ก ํ์ด์ง ์์ฑ, import ๋ฑ์ ์ง์ ํฉ๋๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.lang.Math" %>
์คํฌ๋ฆฝํธ๋ฆฟ(Scriptlet)
Java ์ฝ๋๋ฅผ HTML ์ค๊ฐ์ ์ฝ์ ํ ๋ ์ฌ์ฉํ๋ค.
<% ... %> ํ๊ทธ ์ฌ์ด์ Java ์ฝ๋๋ฅผ ์์ฑํ๋ค (์ฝ๋ ์คํ ์์ญ์ ํด๋น)
<%
String greeting = "Hello, JSP!";
out.println(greeting);
%>
์ ์ธ๋ถ(Declaration)
JSP ํ์ด์ง์์ ๋ณ์๋ฅผ ์ ์ธํ๊ฑฐ๋ ๋ฉ์๋๋ฅผ ์ ์ํ ๋ ์ฌ์ฉํ๋ค.
<%! ... %> ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค.
<%!
private String greeting = "Hello, JSP!";
public String getGreeting() {
return greeting;
}
%>
ํํ์(Expression)
๊ฐ์ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ๋ฉฐ, Java ํํ์์ ํ๊ฐํ ๊ฒฐ๊ณผ๋ฅผ HTML๋ก ์ถ๋ ฅํ๋ค.
<%= ... %> ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค.
<%
String greeting = "Hello, ๊ธธ๋!";
%>
<p>Greeting: <%= greeting %></p>
JSP ์ก์ ํ๊ทธ(Action Tags)
JSP ํ์ด์ง์์ ์๋ฐ๋น์ฆ(Beans)๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ค๋ฅธ JSP ํ์ด์ง๋ฅผ ํฌํจ์ํค๋ ๋ฑ์ ์์ ์ ์ํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
// ์๋ฐ๋น์ฆ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฐพ์ ๋ ์ฌ์ฉํฉ๋๋ค.
<jsp:useBean id="myBean" class="com.example.MyBean" scope="session" />
// ์๋ฐ๋น์ฆ์ ์์ฑ ๊ฐ์ ์ค์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
<jsp:setProperty name="myBean" property="username" value="JohnDoe" />
// ์๋ฐ๋น์ฆ์ ์์ฑ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉํฉ๋๋ค.
<p>Username: <jsp:getProperty name="myBean" property="username" /></p>
// ๋ค๋ฅธ JSP ํ์ด์ง๋ฅผ ํฌํจ์ํฌ ๋ ์ฌ์ฉํฉ๋๋ค.
<jsp:include page="header.jsp" />
// ๋ค๋ฅธ JSP ํ์ด์ง๋ก ์์ฒญ์ ํฌ์๋ํ ๋ ์ฌ์ฉํฉ๋๋ค.
<jsp:forward page="nextPage.jsp" />
... ๋ฑ
๐ก ์๋ฐ๋น์ฆ(JavaBeans)๋?
- ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฒด
์๋ฐ๋น์ฆ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋ Java ๊ฐ์ฒด์ ๋๋ค. - ํน์ ๊ท์ฝ์ด ์ ์ฉ๋ ๊ฐ์ฒด
์๋ฐ๋น์ฆ๋ ์บก์ํ, ๊ธฐ๋ณธ ์์ฑ์, ์ง๋ ฌํ ๋ฑ์ ๊ท์ฝ์ ๋ฐ๋ฆ ๋๋ค.- ์บก์ํ(Encapsulation)
ํ๋๋ private์ผ๋ก ์ ์ธํ๊ณ , ์ ๊ทผ์ ๋ฉ์๋(getter)์ ์ค์ ์ ๋ฉ์๋(setter)๋ฅผ ํตํด ์ ๊ทผํฉ๋๋ค. - ๊ธฐ๋ณธ ์์ฑ์(Default Constructor)
์๋ฐ๋น์ฆ ํด๋์ค๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ฐ๋์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. - ์ง๋ ฌํ(Serialization)
์๋ฐ๋น์ฆ๋ Serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ์ง๋ ฌํํ ์ ์์ต๋๋ค.
- ์บก์ํ(Encapsulation)
- ๋ฐ์ดํฐ ์ ์ฅ, ์ฐ์ฐ ๋ฐ ์ ์ก
์๋ฐ๋น์ฆ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ฐ์ฐ์ ์ํํ๋ฉฐ,
๋ค๋ฅธ ์ปดํฌ๋ํธ๋ ์์คํ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
์ ๋ฆฌ
๋์ผํ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ณณ์์ ์ธ์คํด์คํ ํด์ ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ ์ค์ฝํ(scope) ๋ด์์ ์ฌ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ธ์
์ค์ฝํ(scope)์์ ์์ฑ๋ ์๋ฐ๋น์ฆ ๊ฐ์ฒด๋ ์ธ์
๋ด๋ด ๋์ผํ ๊ฐ์ฒด๋ก ์ ์ง๋ ์ ์์ต๋๋ค.
์๋ฐ๋น์ฆ์ ์ค์ฝํ
- page: ํ์ฌ ํ์ด์ง์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ (๊ธฐ๋ณธ๊ฐ)
- request: ํ๋์ ์์ฒญ ๋์ ์ฌ์ฉ ๊ฐ๋ฅ
- session: ์ธ์ ๋์ ์ฌ์ฉ ๊ฐ๋ฅ
- application: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ฌ์ฉ ๊ฐ๋ฅ </aside>
์ฝ๋ ์ค์ต 1 - ์ธ์ฌ๋ง ์์ฑ๊ธฐ
class_jsp_v01 ํด๋
views ํด๋ -- greet2.jsp ์์ฑ
webapp ํด๋ -- example.jsp ์์ฑ, greet_from_page.html ์์ฑ, greet.jsp ์์ฑ
1. HTML ํผ ๋ง๋ค๊ธฐ
2. greet.jsp ์์ฑํ๊ธฐ
3. ๊ฒฐ๊ณผ ๋ฐ ํ ์คํธ
greet_from_page.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>์ธ์ฌ๋ง ์์ฑ๊ธฐ</h1>
<!-- ์ ๋ ๊ฒฝ๋ก : / -->
<!-- ์๋ ๊ฒฝ๋ก : views/greet2.jsp --> <!-- ๋ด ๊ธฐ์ค์์ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ -->
<form action="greet.jsp" method="POST">
<label for="name">๋น์ ์ ์ด๋ฆ์ ์
๋ ฅํ์ธ์: </label>
<input type="text" id="name" name="name" required="required">
<!-- required="required" : null ๊ฐ ๋ฐฉ์งํ๋ ค๊ณ -->
<!-- name="name" : ํค - ๊ฐ -->
<button type="submit">์๋ฒ๋ก ์ ์ถ</button>
</form>
</body>
</html>
greet.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSP ํ์ด์ง์ ์ค์ ์ ์ ์ํ๋ JSP ์ง์์ -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>์ธ์ฌ๋ง์ ์์ฑ ํ์์ต๋๋ค.</h1>
<%
// ์๋ฐ ์คํ ์ฝ๋
// request ๊ฐ์ฒด์์ ๊ฐ ์ถ์ถํ๊ธฐ
String name = request.getParameter("name");
if(name == null || name.trim().isEmpty()){
out.println("<p> ์! ๋น์ ์ ์ด๋ฆ์ ๋จผ์ ์
๋ ฅํด์ฃผ์ธ์ </p>");
} else {
out.println("<p> ๋ฐ๊ฐ์," +name +"! ๋์ JSP Site ์ ์์ด ํ์~~" +"</p>");
}
%>
<!-- ๋ค์ ์ด์ ํ์ด์ง๋ก ๋๋ (ํน์ ํ์ด์ง๋ก ์ด๋)์ฒ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด -->
<a href="greet_from_page.html">Back</a>
</body>
</html>


์ฝ๋ ์ค์ต 2 - ๊ฐ๋จํ ๊ณ์ฐ๊ธฐ
1. HTML ํผ ๋ง๋ค๊ธฐ
2. calculate.jsp ์์ฑํ๊ธฐ
3. ๊ฒฐ๊ณผ ๋ฐ ํ ์คํธ
class_jsp_v01 ํด๋
calculator_form.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
body{
display: flex;
height: 100vh;
justify-content: center;
align-items: center;
margin: 0;
background-color: #f0f0f0;
}
.container{
width: 300px;
background-color: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
form{
display: flex;
flex-direction: column;
}
label{
margin-bottom: 10px;
}
input[type="number"] {
height: 30px;
border: 1px solid #bababa;
border-radius: 5px;
margin-bottom: 20px;
}
input[type="submit"] {
height: 40px;
border-radius: 5px;
border: 0;
background-color: #45a049;
color: #fff;
}
input[type="submit"]:hover{
background-color: #1c5a1f;
}
</style>
</head>
<body>
<div class="container">
<h1>๊ฐ๋จํ ๊ณ์ฐ๊ธฐ</h1>
<form action="calculate.jsp" method="POST">
<label for="num1">์ฒซ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์</label>
<input type="number" id="num1" name = "num1" required="required" value="10">
<label for="num2">๋๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์</label>
<input type="number" id="num2" name = "num2" required="required" value="20">
<input type="submit" value="๊ณ์ฐ ์์ฒญํ๊ธฐ">
</form>
</div>
</body>
</html>
calculate.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>๊ณ์ฐ ๊ฒฐ๊ณผ</title>
</head>
<body>
<h1>๊ณ์ฐ ๊ฒฐ๊ณผ</h1>
<!-- HTML ์ฃผ์ ์
๋๋ค. -->
<%-- JSP ์ฃผ์ ์
๋๋ค. --%>
<%
// form์์ ๋ฐ์ดํฐ ์ถ์ถ
String num1Str = request.getParameter("num1");
String num2Str = request.getParameter("num2");
// ๋ฐฉ์ด์ ์ฝ๋ ์์ฑ
if( num1Str != null && num2Str != null ){
try{
int num1 = Integer.parseInt(num1Str);
int num2 = Integer.parseInt(num2Str);
int result = num1+ num2;
out.println("<p> " +num1 + "์" +num2 +"์ ํฉ์" +result +"</p>");
out.println("<p> ๋ ์์ ํฉ์ : "+result +" </p>");
} catch(NumberFormatException e) {
out.print("<p>๋ค์ ์
๋ ฅํด ์ฃผ์ธ์.</p>");
}
} else {
out.println("๋ ์ซ์๋ฅผ ๋ชจ๋ ์
๋ ฅํด์ฃผ์ธ์.");
}
// ๊ณ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์คํธ๋ฆผ์ ํตํด ๋ด๋ ค์ฃผ๊ธฐ
%>
<a href="calculator_form.html">๋์๊ฐ๊ธฐ</a>
</body>
</html>

