[JSP/Servlet] JSP νμμ±κ³Ό νΉμ§, ꡬμ±μμ (2023.05.15)
π JSP(JavaServer Pages) κ°μ
π JSPλ?
HTML μ½λμ JAVA μ½λλ₯Ό λ£μ΄ λμ μΉνμ΄μ§λ₯Ό μμ±νλ μΉμ΄ν리μΌμ΄μ λꡬ
Java μΈμ΄λ₯Ό κΈ°λ°μΌλ‘ νλ Server Side μ€ν¬λ¦½νΈ μΈμ΄
μΈμ΄μ μ’ λ₯
μ»΄νμΌ μΈμ΄
- ex. Java
- λ²μμ λλ
- μ½λλ₯Ό νλ²μ ν΄μν΄μ λμ€μλ μ€νλ§
- ν΄μμ μ€λ걸리μ§λ§ μ€νμ λΉ λ₯΄λ€
μΈν°νλ¦¬ν° μΈμ΄(Python)ν΅μ - ν μ€μ© ν΄μνκ³ μ€ννλμ νλ‘κ·Έλ¨μ λ§λλ λ° μ¬μ©μ€ν¬λ¦½νΈ μΈμ΄(JavaScript, JSP)μΈν°νλ¦¬ν° μΈμ΄μ μν¨ν μ€μ© ν΄μνκ³ μ€νλ§λ€μ΄μ§ νλ‘κ·Έλ¨μ μ μ΄ν λ μ¬μ©
π JSPκ° νμν μ΄μ
β Servletμ νΉμ§
ν ν΄λμ€ λ΄μ Business Logicκ³Ό Presentation Logicμ΄ κ°μ΄ μμ±λ¨
(Business Logic : λ°μ΄ν° λ°μμ κ°κ³΅ λ° μ²λ¦¬ μν)
π JSP vs Servlet
μΉνλ‘κ·Έλ¨μ λ§λ€λμλ Servletκ³Ό JSPλ₯Ό μμ΄μ μ¬μ©
λ‘μ§ κ΅¬ν > Servlet
νλ©΄ κ΅¬μ± > JSP
λλ μ μ¬μ©νλ κ²½μ°κ° λ λ§λ€.
π JSPμ νΉμ§
- .jspμ νμ₯μλ₯Ό κ°μ§
- λμ μΌλ‘ μλνμ¬ μλ΅μ HTMLμ μ΄μ©ν¨
- jsp >> μλΈλ¦Ώ(.java) >> ν΄λμ€(.class) >> htmlλ‘ λ³νλμ΄ μ€νλ¨
HTMLμ μλ° μ½λκ° μμΌλ―λ‘ λ¬΄μ‘°κ±΄ μ»΄νμΌ λμ΄μΌ ν¨
jsp νμΌ μμ²΄κ° ν΄λΌμ΄μΈνΈμκ² μλ΅λλκ² μλ. μ»΄νμΌ λ ν ν΄λΌμ΄μΈνΈμκ² μλ΅
jsp μ»΄νμΌλ μ μλλ‘ μλ°λ‘ λ³νμ΄ λμ΄μΌ νλλ° μ΄ μν μ WAS λ΄ Web Container (νλ‘κ·Έλ¨μ μ€νμμΌμ£Όλ μν ) κ° μμμ μ§νν΄μ€
μ°λ¦¬λ jspλ₯Ό μ°μ§λ§ web container μμμ μλμΌλ‘ μλ° νμΌλ‘ λ³ν (.java) > μ»΄νμΌν΄μ .class νμΌλ‘ λ³ν > μ€ννλ©΄ μ μ 리μμ€μΈ htmlλ‘ λ³ν > μ΄ μ μ htmlμ μλ΅ν΄μ£Όλ ꡬ쑰
π JSP μμ±νκΈ°
jsp νμΌμ webapp ν΄λ λ΄μ μμ±
π JSP ꡬμ±μμ
<%@ : μ§μμ
JSPμ λν μ€μ μ 보 λλ JSP νμ΄μ§μ λ€λ₯Έ λ¬Έμλ₯Ό ν¬ν¨μν¬ λ μ¬μ©
footer λ± λ§λ€μ΄μ§ νλμ λ¬Έμλ₯Ό κ°μ Έλ€κ° μ°κ³ μΆμ λ (λ©μλμ μ μ¬νκ²)
<%! : μ μΈλ¬Έ
JSP νμ΄μ§ λ΄λΆμ μλ° λ©μλ, λ³μλ₯Ό μ μΈνκΈ° μν΄ μ¬μ©
λ³μ μ μΈ, λ©μλ μ μΈ
<% : μ€ν¬λ¦½νΈλ¦Ώ
JSP νμ΄μ§ λ΄λΆμ μλ°(Java) μμ€μ½λλ₯Ό μ½μ νκΈ° μν΄ μ¬μ©
java Class λ΄μ μμ±λλ μ½λ κ·Έλλ‘ μμ±
(κ°μ₯ λ§μ΄ μ¬μ©)
λ³μ μ¬μ©. κ° μμ². μλ΅ λ±
μ°λ μμΉλ μ€μνμ§ μμ
<%= : ννμ
μΆλ ₯κ²°κ³Ό(HTML μμ λ΄)μ κ°μ λ£κΈ° μν΄ μ¬μ©
HTML μμ λ΄μ μΆλ ₯ κ²°κ³Όλ₯Ό λ£κΈ° μν΄ μ¬μ©.
ννμ μμ μλ κ°λ€μ μ¬μ©μ λμ 보μ. HTML λ¬Έμ λ΄μμ μΆλ ₯μ΄ λλ€λ λ§
β JSP νκ·Έ μ¬μ© μ€μ΅
<!-- μ§μμ(Directive) : JSP μ€μ μ 보 λ° λ€λ₯Έ λ¬Έμμ(λ₯Ό) ν¬ν¨ λ± -->
<!-- μ§μμμ μ’
λ₯ : page, include, taglib(tag library >> ex. JSTL) -->
<!-- contentType : μλ΅λ°μ΄ν°μ νμκ³Ό μΈμ½λ© λ°©μμ λΈλΌμ°μ (ν΄λΌμ΄μΈνΈ)μκ² μλ €μ£ΌκΈ° μν¨ -->
<!-- pageEncoding : JSP νμ΄μ§μ λν μΈμ½λ© μ§μ -->
<%@page import="java.util.Random"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<!-- charset : html λ¬Έμμ λν μΈμ½λ© μ§μ -->
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- μ€ν¬λ¦½νλ¦Ώ(Scriptlet : JSP νμ΄μ§ λ΄λΆμ μλ° μμ€ μ½λ μ½μ
) -->
<!-- μ€ν¬λ¦½νλ¦Ώ λ΄μ μμ±ν μ½λλ λͺ¨λ service() λ©μλ μμ μμ±λ¨ -->
<%
// JSP κ΅¬μ± μμ λ΄μμλ μλ° μ£Όμ μμ±
// μ€ν¬λ¦½νλ¦Ώ μμμλ 무쑰건 ; μμ±ν΄μΌ ν¨
System.out.print("Hello"); //μ΄ν΄λ¦½μ€ μ½μμ°½μ μΆλ ₯
int num = 10;
int num2 = 20;
Random rd = new Random();
int ran = rd.nextInt(10);
// out κ°μ²΄λ₯Ό μ μΈν μ μμ§λ§ jspμ½λκ° μλ° μ½λλ‘ λ³νλλ©΄μ WebContainerκ° μλμΌλ‘ out κ°μ²΄(λ΄μ₯κ°μ²΄)λ₯Ό μμ±ν¨
out.print(ran + "<br>");
// out.println - μ½λλ§ κ°ν(νλ©΄μ κ°νX) >> νλ©΄μ κ°ννλ €λ©΄ <br>
%>
<!-- ννμ(Expression : νλ©΄(μΉλΈλΌμ°μ μ)μ μΆλ ₯νκΈ° μν΄ μ¬μ©, ; μμ± X -->
<%=ran %><br>
<%="String" %><br>
<%="ν"+"μ€ν" %><br>
<!-- μ μΈλ¬Έ(Declaration) : μλ° λ©μλ, λ³μλ₯Ό μ μΈνκΈ° μν΄ μ¬μ© -->
<!-- μ μΈλ¬Έ μμ μμ±ν μ½λμ μμΉλ ν΄λμ€ μ΄λ¦ λ°λ‘ λ°, μ μ -->
<%! int num3 = 100; %>
<%!
public void print(){
System.out.println("print!");
}
%>
</body>
</html>
μ€μ΅ 2.
<%@ 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>
<table border=1>
<tr>
<%
for(int i = 1; i <= 10; i++){
out.print("<td>" + i + "</td>");
}
%>
</tr>
</table>
<table border=1>
<tr>
<%for(int i = 1; i <= 10; i++){%>
<td><%=i %></td>
<%}%>
</tr>
</table>
</body>
</html>
μ€μ΅ 3.
<HTML μ½λ>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Ex02Output.jsp" method="post">
<input type="text" name="data">
<input type="submit">
</form>
</body>
</html>
<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>
<%
request.setCharacterEncoding("UTF-8");
String data = request.getParameter("data");
out.print(data);
%>
<%=data %>
</body>
</html>
μ€μ΅ 4.
<html μ½λ>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Ex03Output.jsp" method="post">
<input type="number" name="num1">
<br>
<input type="number" name="num2">
<br>
<select name="ope">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="submit" value="κ³μ°">
</form>
</body>
</html>
<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>
<%
request.setCharacterEncoding("UTF-8");
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
String ope = request.getParameter("ope");
int result;
if(ope.equals("+")){
result = num1 + num2;
}else if(ope.equals("-")){
result = num1 - num2;
}else if(ope.equals("*")){
result = num1 * num2;
}else{
result = num1 / num2;
}
//μΆλ ₯λ°©λ² 1)
out.print(num1 + ope + num2 + "=" + result);
%>
<!-- μΆλ ₯λ°©λ² 2) -->
<%= num1 %>
<%= ope %>
<%= num2 %>
=
<%= result %>
<!-- μΆλ ₯λ°©λ² 3) -->
<%= num1+ope+num2+"="+result %>
</body>
</html>
JSPλ url mapping κ°λ₯