<form> ํ๊ทธ ์์ ๊ณผ์ผ ์ด๋ฆ ๋ชฉ๋ก์ด <checkbox>์ ํจ๊ป ์ ์๋์ด์๊ณ ํน์ ๊ณผ์ผ ์ด๋ฆ์ ์ฐ๊ฒฐ๋ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ฒดํฌํ๊ณ ํผ ์์ ์ญ์ ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ฒ์ธก์์ ํด๋น ๊ณผ์ผ์ด ์ญ์ ๋๊ณ ์๋ฒ์ธก์์ ์ ์์ ์ผ๋ก ์ญ์ ๋๋ฉด ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ฑ๊ณต ๋ฉ์์ง๊ฐ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ ๋ฌ๋๋๋ก ํ์์ค.
form_proc.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
|
<%@page import="org.json.simple.JSONObject"%>
<%@page import="java.util.*"%>
<%@ page contentType="application/json; charset=utf-8" pageEncoding="utf-8"%>
<%
/*
String hobby = request.getParameter("hobby");
String[] hobbies= request.getParameterValues("hobby");
*/
List<String> cart = new ArrayList<>();
cart.add("Apple");
cart.add("Orange");
cart.add("Pineapple");
cart.add("Kiwi");
String[] fr = request.getParameterValues("fruits");
int cnt = 0;
for(int i=0;i<fr.length;i++)
{
for(int j=(cart.size()-1)/*์์์ ๋์์ ๋ถํฐ ์ญ์ */;j>=0;j--)
{
if(cart.get(j).equals(fr[i])){
cart.remove(j);
cnt++;
}
}
}
boolean removed = cnt==fr.length ? true : false;
JSONObject jsobj = new JSONObject();
jsobj.put("removed" , removed);
out.print(jsobj.toString());
out.flush();
%>
|
cs |
form_test.html
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
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ํผ ํ๊ทธ ๋ค๋ฃจ๊ธฐ</title>
</head>
<body>
<hr>
<style>
li { display:inline; }
</style>
<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ="
crossorigin="anonymous"></script>
<script>
function remove(){
var ser = $('#remform').serialize();
$.ajax({
url:'form_proc.jsp',
method:'post',
data: ser,
cache: false,
dataType: 'json',
success: function(res){
alert(res.removed);
},
error : function(xhr, status, err){
alert(err);
}
});
return false;
}
</script>
<div >
<form id="remform"onsubmit="return remove();">
<ul>
<div id="Apple">
<input type="checkbox" name="fruits" value="Apple">
<li>Apple</li>
</div>
<div id="Orange">
<input type="checkbox" name="fruits" value="Orange">
<li>Orange</li>
</div>
<div id="Pineapple">
<input type="checkbox" name="fruits" value="Pineapple">
<li>Pineapple</li>
</div>
<div id="Kiwi">
<input type="checkbox" name="fruits" value="Kiwi">
<li>Kiwi</li>
</div>
</ul>
<div><button type="submit">์ญ์ </button></div>
</form>
</div>
<div><button type="button" onclick="rem();">ํ
์คํธ</button></div>
</body>
</html>
|
cs |
์คํ ๊ฒฐ๊ณผ:
์๋ธ๋ฆฟ๊ณผ JSP์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ?
์๋ธ๋ฆฟ์ ์น๋ธ๋ผ์ฐ์ ์ ์์ฒญ์ ๋ฐ์๋ค์ธ๋ค. ์ฆ ์์ฒญ์ ๋ฐ์์ ์ฒ๋ฆฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ต์ ํ ๋ html๋ก ํ ์ ์๋ค.
jsp๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๊ณ , ์๋ต์ ํ ๋ html๋ก ํ ์ ์์๋ค. ํ์ง๋ง ์ฐจ์ด์ ์ด๋ผ๋ฉด ์๋ธ๋ฆฟ์ ์ ์์ ์ธ ์๋ฐ ํด๋์ค๋ค. ์๋ฐ ํด๋์ค์ด๋ฉด์ ๋์์ http ์์ฒญ ์ฒ๋ฆฌ์ ํนํ๋ ํด๋์ค์ด๋ค. ์ด์ฉ์์ผ์ด ์์ฒญ์ ๋ฐ์ ์๋น์ค() ํธ์ถ์์ผ์ค๋ค. jsp๋ ์๋ฐ ํด๋์ค๋ ์๋์ง๋ง, jsp๋ฅผ ์์ฑํ๋ฉด ํฐ์บฃ์ด ์๋ฐํด๋์ค(์๋ธ๋ฆฟ)๋ก ๋ณํ(์ปดํ์ผ)์์ผ์ค๋ค. ์ปดํ์ผ ๋ ํ ์คํ๋๋ฉด ๊ทธ ์์ ์๋น์ค ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋์๊ฐ๊ฒ ๋๋ค.
์ผ๋ฐ์ ์ธ java ํด๋์ค (Plain Old Java Object) ํฌ์กฐ ํด๋์ค
Java ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก Model1: ์๋ธ๋ฆฟ ์ ์ธ (jsp(์ปจํธ๋กค๋ฌ์ view์ญํ ์ ํจ), ํฌ์กฐ ์๋ฐ ํด๋์ค(์๋น์ค ๋ก์ง ํด๋์ค, ๋ฐ์ดํฐ ํด๋์ค)๋ง ์ฌ์ฉ)
Java ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก Model2: MVC
Java ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ๋ชจ๋ธ 1์ ์ฌ์ฉํ์ฌ ๊ฐ๋ตํ ๊ตฌ๊ตฌ๋จ ๋ณด๊ธฐ ์น ๋ง๋ค๊ธฐ
gugu.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<%@page import="com.ezen.web.hello.GuguService"%>
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
GuguService gs = new GuguService(); //์๋น์ค๋ฅผ ๋ถ๋ฌ์ ์์
์ํค๊ธฐ
String gString = gs.createGugu(request);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>๊ตฌ๊ตฌ๋จ ํ์ต๊ธฐ</title>
</head>
<body>
<h3>
๊ตฌ๊ตฌ๋จ ๋ณด๊ธฐ
</h3>
<%= gString %> <!--์์ฒญ๋ฐ์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ -->
</body>
</html>
|
cs |
view์ ๊ธฐ๋ฅ์ ์ฐ๊ธฐ ์ํด์๋ผ๋ ํ ์คํธ๋ html์ ์จ์ผํ๋ค.
java ํด๋์ค
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package com.ezen.web.hello;
import javax.servlet.http.HttpServletRequest;
public class GuguService
{
public String createGugu(HttpServletRequest request) {
String sDan = request.getParameter("dan");
int dan = sDan==null? 2 : Integer.parseInt(sDan);
String data = "";
for(int i =1;i<10;i++) {
data += String.format("%d * %d = %d<br>", dan, i ,dan*i);
}
return data;
}
}
|
cs |
์คํ ๊ฒฐ๊ณผ:
ํ ์คํธ ๋ฒํผ์ ๋ง๋ค์ด ์ฌ์ฉ์๊ฐ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ฒดํฌ ํ๋ค ํ ์คํธ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ๋ก ํธ์๋์์๋ ์ฌ๋ผ์ง๊ฒ ๋ง๋ค๊ธฐ
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
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ํผ ํ๊ทธ ๋ค๋ฃจ๊ธฐ</title>
</head>
<body>
<hr>
<style>
li { display:inline; }
</style>
<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ="
crossorigin="anonymous"></script>
<script>
function remove(){
var ser = $('#remform').serialize();
$.ajax({
url:'form_proc.jsp',
method:'post',
data: ser,
cache: false,
dataType: 'json',
success: function(res){
alert(res.removed);
},
error : function(xhr, status, err){
alert(err);
}
});
return false;
}
function rem(){
$('input[type=checkbox]'/*์ ํ์๋ฅผ ๋๋ ๊ณณ*/).each(function(index, item){
//console.log(item.checked);
if($(item).is(':checked')){
$('div#'+$(item).val()).remove();
}
});
}
</script>
<div >
<form id="remform"onsubmit="return remove();">
<ul>
<div id="Apple">
<input type="checkbox" name="fruits" value="Apple">
<li>Apple</li>
</div>
<div id="Orange">
<input type="checkbox" name="fruits" value="Orange">
<li>Orange</li>
</div>
<div id="Pineapple">
<input type="checkbox" name="fruits" value="Pineapple">
<li>Pineapple</li>
</div>
<div id="Kiwi">
<input type="checkbox" name="fruits" value="Kiwi">
<li>Kiwi</li>
</div>
</ul>
<div><button type="submit">์ญ์ </button></div>
</form>
</div>
<div><button type="button" onclick="rem();">ํ
์คํธ</button></div>
</body>
</html>
|
cs |
์คํ๊ฒฐ๊ณผ:
Apple ๊ณผ Orange ์ฒดํฌ๋ฐ์ค๋ฅผ ์ฒดํฌํ๊ณ ํ ์คํธ ๋ฒํผ์ ๋๋ฅด๋ ๋ค์ ๊ฐ์ด ์ฌ๋ผ์ก๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ ์ญ์ ๋ฒํผ์ ๋๋ ์ ๋ ํ์ธ ๋ฌธ๊ตฌ๊ฐ ๋จ๋ฉด์ ํ๋ก ํธ์๋์์๋ ํญ๋ชฉ ์ญ์ ๋๊ฒ ๋ง๋ค๊ธฐ
form_test.html
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
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ํผ ํ๊ทธ ๋ค๋ฃจ๊ธฐ</title>
</head>
<body>
<hr>
<style>
li { display:inline; }
</style>
<script src="https://code.jquery.com/jquery-3.6.1.min.js"
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ="
crossorigin="anonymous"></script>
<script>
function remove(){
var ser = $('#remform').serialize();
$.ajax({
url:'form_proc.jsp',
method:'post',
data: ser,
cache: false,
dataType: 'json',
success: function(res){
if(res.removed){
alert('์ญ์ ์ฑ๊ณต!');
$('input[type=checkbox]'/*์ ํ์๋ฅผ ๋๋ ๊ณณ*/).each(function(index, item){
if($(item).is(':checked')){
$('div#'+$(item).val()).remove();
}
});
}else{
alert('์ญ์ ์คํจ');
}
},
error : function(xhr, status, err){
alert(err);
}
});
return false;
}
</script>
<div >
<form id="remform"onsubmit="return remove();">
<ul>
<div id="Apple">
<input type="checkbox" name="fruits" value="Apple">
<li>Apple</li>
</div>
<div id="Orange">
<input type="checkbox" name="fruits" value="Orange">
<li>Orange</li>
</div>
<div id="Pineapple">
<input type="checkbox" name="fruits" value="Pineapple">
<li>Pineapple</li>
</div>
<div id="Kiwi">
<input type="checkbox" name="fruits" value="Kiwi">
<li>Kiwi</li>
</div>
</ul>
<div><button type="submit">์ญ์ </button></div>
</form>
</div>
</body>
</html>
|
cs |
์คํ๊ฒฐ๊ณผ:
๋ผ๋์ค ๋ฐ์ค๋ฅผ ๋ง๋ค์ด Java, JSP, Python, Spring ๋ชฉ๋ก์ ์ ์ํ๊ณ ์ด์ฉ์๊ฐ 1๊ฐ๋ง ์ ํํ ์ ์๋๋กํ๋ค.
ํ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ ํ๋ ํญ๋ชฉ 1๊ฐ๋ง ๋จ๊ธฐ๊ณ ๋๋จธ์ง ํญ๋ชฉ์ ๋ชจ๋ ์ญ์ ๋๋๋ก ํ๋ผ
subject.html
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
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>๊ณผ๋ชฉ ๊ณ ๋ฅด๊ธฐ</title>
<script src="https://code.jquery.com/jquery-3.6.1.min.js"
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ="
crossorigin="anonymous"></script>
<script type ="text/javascript;">
$(function(){
$('#sampleform button').click(function(){
$('input:radio').each(function(index, item){
if(!item.checked){
$('div#'+$(item).val()).remove();
}
});
});
})
</script>
</head>
<body>
<div >
<form id="sampleform">
<div id="Java">
<input type="radio" id="Java" name="subject" value="Java">
<label>Java</label>
</div>
<div id="JSP">
<input type="radio" id="JSP" name="subject" value="JSP">
<label>JSP</label>
</div>
<div id="Python">
<input type="radio" id="Python" name="subject" value="Python">
<label>Python</label>
</div>
<div id="Spring">
<input type="radio" id="Spring" name="subject" value="Spring">
<label>Spring</label>
</div>
<button type="button">[ํ์ธ]</button>
</form>
</div>
</body>
</html>
|
cs |
์คํ ๊ฒฐ๊ณผ:
jsp:useBean์ ์ด์ฉํ์ฌ ์๋ฐ ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ๋ชจ๋ธ1 ํด๋ณด๊ธฐ
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
|
<%@page import="org.json.simple.JSONObject"%>
<%@page import="com.ezen.web.hello.GuguService"%>
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<jsp:useBean id="svc" class= "com.ezen.web.hello.GuguService" scope="page"></jsp:useBean>
<%
String gString = svc.createGugu(request);
%>
<%--
GuguService gs = new GuguService(); //์๋น์ค๋ฅผ ๋ถ๋ฌ์ ์์
์ํค๊ธฐ
String gString = gs.createGugu(request);
JSONObject jsobj = new JSONObject();
jsobj.put("content" , gString);
out.print(jsobj.toJSONString());
out.flush();
--%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>๊ตฌ๊ตฌ๋จ ํ์ต๊ธฐ</title>
</head>
<body>
<h3>
๊ตฌ๊ตฌ๋จ ๋ณด๊ธฐ
</h3>
<%= gString %>
</body>
</html>
|
cs |
์คํ๊ฒฐ๊ณผ:
Bean ์ค๋ธ์ ํธ์ scope
-page ์์ญ : Bean ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๊ทธ ํ์ด์ง(JSP)์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋ค. page ์์ญ์ ์์ญ๊ฐ์ฒด - pageContext ๊ฐ์ฒด
-request ์์ญ: Bean ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด request ๊ฐ์ฒด์ ์ ์ฅ๋จ (request ๊ฐ์ฒด)
-session ์์ญ: Bean ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด HttpSession ๊ฐ์ฒด์ ์ ์ฅ๋จ(ํ ์ด์ฉ์๊ฐ ์ ์ํ๋ ๊ฒฝ๋ก์ ์๋ ๋ชจ๋ jsp, servlet )
๋ธ๋ผ์ฐ์ ๋น ํ ๊ฐ์ฉ (100๋ช ์ด ์ ์ํ๋ฉด 100๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.)
-application ์์ญ: ํ ์น์๋ฒ ์์ ์๋ ๋ชจ๋ jsp, servlet
ํ ์๋ฒ๋น ํ ๊ฐ์ฉ (100๋ช ์ด ํ ์๋ฒ์ ์ ์ํ๋ค๋ฉด 100๋ช ์ 1๊ฐ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๊ฒ ๋๋ค.)
์์ญ ์์์ ์ด๋์์๋ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด: ์์ญ ๊ฐ์ฒด
๋๊ธ