โโEL(Expression Language)โโ
EL(Expression Language)์ ์๋ฐ ๋น์ ํ๋กํผํฐ, ๊ฐ์ JSP์ ํํ์ <%= %>์ด๋ ์ก์ ํ๊ทธ <jsp:useBean>๋ฅผ ์ฌ์ฉํ๋๊ฒ ๋ณด๋ค ์ฝ๊ณ ๊ฐ๊ฒฐํ๊ฒ ๊บผ๋ผ์ ์๊ฒ ํ๋ ๊ธฐ์ ์ด๋ค.
๋ํ static ๋ฉ์๋๋ฅผ ํธ์ถํ ์๋ ์๋๋ฐ JSP์์๋ ์ฃผ๋ก ์๋ธ๋ฆฟ ๋ณด๊ด์(JspContext, ServletRequest, HttpSession, ServletContext)์์ ๊ฐ์ ๊บผ๋ผ ๋ ์ฌ์ฉํ๋ค.
jsp์์๋ง ์ธ์ ์๋ ์ถ๋ ฅ์ธ์ด(ํ์ฅ์๊ฐ jsp๋ก ๋์ด ์๋ ๊ณณ์์๋ง ๊ฐ๋ฅ)
-๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒ์ ๊ฒ์ผ๋ก ํํํ๊ธฐ ์ํ ์ธ์ด(์ฆ ๋ณ์์ ๊ฐ์ ์ถ๋ ฅํ๋ค.)
scope ๊ฐ์ฒด ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํ์ํ๊ธฐ์ ์ ์ฉํ๋ค.
ex)
session.setAttribute("data","hello");
์ ์ฝ๋๋ฅผ ์ถ๋ ฅํ ๋ ค๋ฉด ๊ธฐ์กด ๋ฐฉ์์ผ๋ก๋
String data =(String)session.getAttribute("data");
<%=data%>
๋ผ๊ณ ํด์ผํ๋๋ฐ EL๋ฅผ ์ฐ๋ฉด
${data}
์ด๋ ๊ฒ๋ง ํด์ค๋ ๋๋ค.
์์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
pageContext.setAttribute("data1", "page scope data");
request.setAttribute("data2", "request scope data");
session.setAttribute("data3", "session scope data");
application.setAttribute("data4", "application scope data");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> </title>
</head>
<body>
<%
String data1 = (String)pageContext.getAttribute("data1");
out.println("data1:"+ data1);
%>
<p>
${data1}<br>
${data3}
</body>
</html>
|
cs |
์คํ๊ฒฐ๊ณผ:
โโEL์ค์ตโโ
boardDetailForm.jsp ํ์ด์ง์์ ํ๋ฉด ์ถ๋ ฅ์ฉ์ผ๋ก ์ฌ์ฉ๋ ํํ์<%= %>๋ค์ ๋ชจ๋ ELํํ์์ผ๋ก ๋ณํํด์ ๋ํ๋ด๊ธฐ
โโJSTL (JSP Standard Tag Library)โโ
pageContext.setAttribute("board", b);
์ด ์๋ฐ ์ฝ๋๋ jsp ํ๊ทธ๋ก ๋ณํ ๊ฐ๋ฅํ๋ค.
์ด๋ ์ฐ๋ ๊ฒ์ด JSTL (JSP Standard Tag Library)
์ด๋ JSTL๋ฅผ ๋ค์ด ๋ฐ์์ค์ผํ๋ค.
๋ค์ด๋งํฌ
https://mvnrepository.com/artifact/javax.servlet/jstl/1.2
์ ์ฅ ๋ฐ์ ํ์ผ์ [WEB-INF]-[lib]์ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐํ๋ค.
<%@ taglib %>์ฐ๋ ๋ฒ
jstl_test.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<%@page import="java.util.*"%>
<%@ page 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>JSTL ํ
์คํธ</title>
</head>
<body>
<%
String str = "๊ฐ์ Expression ์ฌ์ฉํ๊ธฐ";
%>
<p>
<c:set var="name" value="JSTL TEST" scope="page"/>
${name}
</p>
<P>
<c:set var="msg" value="<%=str%>"/>
${msg}
</p>
<%
List<String> list = new ArrayList<>();
list.add("์ํฅ๋ฏผ");
list.add("๊น๋ฏผ์ฌ");
list.add("ํฉ์ธ๋ฒ");
list.add("์ด๊ฐ์ธ");
%>
<c:set var="list" value="<%=list%>"/>
<%
for(int i=0;i<list.size();i++){
String s = list.get(i);
out.println(s+"<br>");
}
%>
<p>
<c:forEach var="item" items="${list}" varStatus="status">
<div>${status.index +1}. ${item}</div>
</c:forEach>
<p>
<ol>
<c:forEach var="item" items="${list}" varStatus="status">
<li>${item}</li>
</c:forEach>
</ol>
<%
Map<String,String> map = new HashMap<>();
map.put("ํ๋","์ฐจ๋ฒ๊ทผ");
map.put("๋","๋ฐ์ง์ฑ");
map.put("์
","์ํฅ๋ฏผ");
map.put("๋ท","๊น๋ฏผ์ฌ");
%>
<p>
<ol>
<c:forEach var="item" items="<%=map %>">
<li>${item.key } : ${item.value}</li>
</c:forEach>
</ol>
<c:set var="map" value="<%=map %>"/>
<p>
<ul>
<c:forEach var="item" items="${map }">
<li>${item.key } : ${map[item.key]}</li>
</c:forEach>
</ul>
</body>
</html>
|
cs |
์คํ๊ฒฐ๊ณผ :
Map์ ์์๋ ์ง์ผ์ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค์ผ๋ก ๋์จ๋ค. ์๋ ๊ฐ์ ๊ฒฝ์ฐ๋ Map์ Set์ผ๋ก ๋ฐ๊ฟ์ ์ดํฐ๋ ์ดํฐ๋ฅผ ์จ์ค์ผ ํ์ง๋ง JSTL๊ณผ EL์ ์ฐ๋ฉด ๊ทธ๋ด ํ์๊ฐ ์์ด์ง๋ค.
JSP ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ๋ชจ๋ธ 1๋ก ๋ง๋ ๊ฒ์ํ์ ์๋ธ๋ฆฟ์ ์ฌ์ฉํ ๋ชจ๋ธ 2๋ก ๋ณํํด ๋ณด๊ธฐ
ํนํ๋ ์คํ๋ง ํ๋ ์ ์ํฌ์ ๋น์ทํ ๊ธฐ๋ฅ์ ํ๋ ์๋ธ๋ฆฟ์ ๋ง๋ค์ด ๋ณด๊ธฐ
์๋ธ๋ฆฟ์์๋ ์ด๊ธฐ์ ์์ฒญ๋ง ๋ฐ์์ ์๋น์ค ์๋ฐํด๋์ค๋ก ๋ณด๋ด๊ณ ์๋น์ค ์๋ฐ ํด๋์ค์์ ์๋ธ๋ฆฟ์ ํตํด ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ์ง ์๊ณ ๋ฐ๋ก ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ
์คํ๋ง์ ์๋ธ๋ฆฟ์ ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ด ์ค๋ฉด ์ต์ด๋ก ๋ฐ์์ ์๋ฐ์ ์๋น์ค ํน์ ์ปจํธ๋กค๋ฌ ๋ ์ด์ด๋ก ๋๊ฒจ์ฃผ๋ ์ญํ ์ ํ๋ค.
BoardServlet.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/board")
public class BoardServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
request.setCharacterEncoding("utf-8");
String viewPath = new BoardService(request).exec();
if(viewPath!=null) {
getServletContext().getRequestDispatcher(viewPath).forward(request, response);
}
}
}
//์๋ธ๋ฆฟ์ ์ฝ๋๊ฐ ๋ง๋ค๋ฉด ์ฝ๋์ ์ฌํ์ฉ์ด ์ด๋ ค์์ง ์ฆ ์ ์ง๋ณด์๊ฐ ํ๋ค์ด์ง๋ค.
|
cs |
์๋ธ๋ฆฟ์์ cmd์ ๋ฐ๋ผ ํด๋น jsp๋ก ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ ๋ฐ์์จ ์์ฒญ์ BoardService ํด๋์ค์ ํ๋ผ๋ฏธํฐ๋ก ์ฃผ์ด์ ๋ชจ๋ ๋ก์ง์ ๋ณด๋์๋น์ค์์ ์ด๋ฃจ์ด์ง๊ฒ ๋ ํ๋ค.
BoardService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.ezen.web.hello.Board;
public class BoardService
{
private HttpServletRequest request;
private HttpSession session;
private String viewPath = "/WEB-INF/jsp/model2";
private String fpath = "D:/java_test/boardList.ser";
public BoardService() {}
public BoardService(HttpServletRequest request) {
this.request = request;
}
public String exec() {
// ์์ฒญ ์ฒ๋ฆฌ
String cmd = request.getParameter("cmd");
if(cmd==null || cmd.equals("list")) {
List<Board> list = getList();
request.setAttribute("list", list);
return viewPath+"/boardList.jsp";
}
// ๋ฐ์ดํฐ๋ฅผ request์ ์ ์ฅ
// ์๋ต์ฉ View ๋ฆฌํด
return null;
}
public List<Board> getList()
{
return deserialize();
}
public Board find(Board key)
{
List<Board> list = deserialize();
if(list.contains(key)) {
return list.get(list.indexOf(key));
}
return null;
}
public Board read(Board key)
{
String cmd = request.getParameter("cmd");
Board found = find(key);
if(cmd.equals("FIND")){
return found;
}
found.setHit(found.getHit()+1);
List<Board> list = deserialize();
list.get(list.indexOf(found)).setHit(found.getHit());
serialize(list);
return found;
}
public boolean update(Board newBoard) {
List<Board> list = deserialize();
if(list.contains(newBoard)) {
Board b = list.get(list.indexOf(newBoard));
b.setTitle(newBoard.getTitle());
b.setContents(newBoard.getContents());
return serialize(list);
}
return false;
}
public boolean deleteBoard(Board key)
{
List<Board> list = deserialize();
if(list.contains(key)) {
list.remove(list.indexOf(key));
return serialize(list);
}
return false;
}
private boolean serialize(List<Board> list)
{
File f = new File(fpath);
try {
ObjectOutputStream oout = new ObjectOutputStream(new FileOutputStream(f));
oout.writeObject(list);
oout.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private List<Board> deserialize()
{
File f = new File(fpath);
List<Board> list = null;
if(!f.exists()) {
list = new ArrayList<Board>();
}else {
try {
ObjectInputStream oin = new ObjectInputStream(new FileInputStream(f));
list = (List<Board>)oin.readObject();
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public HttpSession getSession() {
return session;
}
public void setSession(HttpSession session) {
this.session = session;
}
}
|
cs |
19ํ~25ํ : cmd์ ๋ฐ๋ผ์ ๋ณด๋ ์๋น์ค ํด๋์ค์์ ์๋ธ๋ฆฟ์ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ๋ทฐ๋ก ๋ฆฌํดํด์ค๋ค.
boardList.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
<%@page import="com.ezen.web.hello.*"%>
<%@page import="java.util.List"%>
<%@ page 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>๊ฒ์๊ธ ๋ชฉ๋ก</title>
<style type="text/css">
main { width:fit-content; margin:1em auto; }
main h3{ text-align: center; }
table { border:1px solid black; border-spacing:0; border-collapse: collapse;
padding:0.5em;
}
td,th { border-bottom:1px dashed black; padding:0.3em 1em;
border-right: 1px solid black;
}
th { background-color:rgb(210,210, 255);}
a {text-decoration: none;}
div.links { width:fit-content; margin:1em auto; }
</style>
</head>
<body>
<main>
<%@ include file="/WEB-INF/jsp/user_inc.jsp" %>
<h3>๊ฒ์๊ธ ๋ชฉ๋ก</h3>
<table>
<tr><th>๋ฒํธ</th><th>์ ๋ชฉ</th><th>์์ฑ์</th><th>์์ฑ์ผ</th><th>ํํธ์</th></tr>
<c:forEach var="b" items="${list}" >
<tr>
<td>${b.num}</td>
<td>
<a href="boardController.jsp?cmd=READ&num=${b.num}">
${b.title}</a>
</td>
<td>${b.author}</td>
<td>${b.regDate}</td>
<td>${b.contents}</td>
</tr>
</c:forEach>
</table>
<div class="links">
[<a href="boardController.jsp?cmd=ADD_FORM">๊ธ์ฐ๊ธฐ</a>]
</div>
</main>
</body>
</html>
|
cs |
JSTL ๊ณผ EL์ ์จ์ ๋ชจ๋ ์คํฌ๋ฆฝํธ๋ฆฟ ํ๊ทธ๋ฅผ ์จ์ ์ฝ๋ฉํ๋ ๋ชจ๋ ์๋ฐ ์ฝ๋๋ฅผ ์ง์ธ ์ ์๊ฒ ๋๋ค.
๋๊ธ