[Web] Day 3 - JSP

sueยท2024๋…„ 1์›” 5์ผ

๐Ÿ“’๊ตญ๋น„ํ•™์› [Web]

๋ชฉ๋ก ๋ณด๊ธฐ
5/21
post-thumbnail

ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€[HTML] -> ๋‹ค๋ฅธ ํŽ˜์ด์ง€[HTML]๋กœ ๋„˜๊ธฐ๋Š” 4๊ฐ€์ง€๋ฐฉ๋ฒ•

1.

Test1.

๐Ÿ’ป ์ž…๋ ฅ

ํ™”๋ฉด1 : ์ˆ˜1/์ˆ˜2
ํ™”๋ฉด2 : ๋‘๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„˜์–ด๊ฐ€์„œ 10+20=30 ์ถœ๋ ฅ


  • : submit์€ ์–ด๋””์— ์žˆ๋˜๊ฐ„์— ํ•ด๋‹น ํŽ˜์ด์ง€ ์•ˆ์—์„œ ๋ฌด์กฐ๊ฑด action์„ ์ฐพ์•„๊ฐ
  • form action="hap_ok.jsp"
    hap_ok ๋„˜์–ด๊ฐ€๋Š” ํŒŒ์ผ์€ action์— ์ ์Œ / (hap_ok.jsp)ํŒŒ์ผ์€ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผํ•จ


  • [method = "get"] ๋ฐฉ์‹

  • http://192.168.16.16:8080/study/jsp2/hap_ok.jsp?su1=10&su2=20

์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ ๋„˜๊ธฐ๋Š”๊ฒŒ get๋ฐฉ์‹
[๋…ธ์ถœ๋˜๋ฏ€๋กœ - ๊ฒ€์ƒ‰ ์‚ฌ์šฉ์žํ•œํ…Œ ๊ฐ’์„ ๋ฐ›์„ ๋• ์ž˜ ์•ˆ์”€]


  • [method = "post"] ๋ฐฉ์‹

์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ ๋„˜๊ธฐ๋Š”๊ฒŒ method๋ฐฉ์‹
[๋…ธ์ถœ x - ๊ฐ’์„ ์ˆจ๊น€ ]


  • ์ž๋™์œผ๋กœ name๋ณ€์ˆ˜ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” name๋ณ€์ˆ˜๋“ค์„ ์ „๋ถ€ ๋“ค๊ณ  hap_okํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ
    (์ด ๋•Œ,๋„˜์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ฌด์กฐ๊ฑด string!!)

request & response

โ‘  html -> request ๋ฐ์ดํ„ฐ ๋‹ด์•„์„œ -> ๋‹ค๋ฅธ html ํŽ˜์ด์ง€๋กœ ๋„˜๊ฒจ์คŒ [์„œ๋ฒ„์— ํ•œ๋ฒˆ ๋‹ค๋…€์˜ด]
(์ด๋•Œ, request : ํ”„๋กœํ† ์ฝœ http์•ˆ์— ์žˆ์Œ ๊ทธ๋ž˜์„œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜๋ฆฌํ•ด์คŒ )

โ‘ก ์ด๋ฏธ ๋ฆฌํ€˜์ŠคํŠธ์—” ๊ฐ’์„ ๋‹ด์•„๋†จ๊ธฐ๋•Œ๋ฌธ์— get ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ด

โ‘ข dynamic Resource(servlet / jsp) -> response -> javascript


  • ํ…์ŠคํŠธ ํ•˜์ดํผ๋งํฌ : ์ด๋ ‡๊ฒŒ๋„ ๊ฐ’์„ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์Œ
    <a href="hap_ok.jsp?su1=100&su2=200&name=์ธ๋‚˜">Get๋ฐฉ์‹</a>
    : ๋งŒ์•ฝ, hap๊ณผ hap_ok๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋”์— ์žˆ์œผ๋ฉด ๊ทธ ๊ฒฝ๋กœ๋„ ์จ์ค˜์•ผํ•จ


โญ
get๋ฐฉ์‹ \ post๋ฐฉ์‹
eng ใ…‡ o

kor ใ…‡ x

post๋ฐฉ์‹์˜ ํ•œ๊ธ€๋ฒ„์ „์€ ๊นจ์ง


get๋ฐฉ์‹์˜ ํ•œ๊ธ€๋ฒ„์ „์€ ์•ˆ๊นจ์ง

  • GET๋ฐฉ์‹์œผ๋กœ ํ•œ๊ธ€๋ณด๋‚ผ๋•Œ ์•ˆ๊นจ์ง€๋Š” ์ด์œ ?
    ์นดํƒ€๋ฆฌ๋‚˜ -> URIEncoding = "UTF-8" ํ–ˆ๊ธฐ๋•Œ๋ฌธ์—

  • POST๋ฐฉ์‹์œผ๋กœ ํ•œ๊ธ€๋ณด๋‚ผ๋•Œ ์•ˆ๊นจ์ง€๊ฒŒ ํ•˜๋Š” ๋ฒ•?
    request์— ๋‹ด๊ฒจ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ฐ’์„
    utf-8๋กœ ๋ณ€๊ฒฝํ•ด์ค˜์•ผํ•จ
    String name (hap_ok)์—์„œ ๊บผ๋‚ด๊ธฐ์ „์—


  • 1๋ฒˆ์งธ ๋ฐฉ๋ฒ•

form์–‘์‹(๋ณ€์ˆ˜ ๋ฐ์ดํ„ฐ ๊ฐ€์ง€๊ณ )์œผ๋กœ ๋ณด๋‚ธ๊ฑด ๋ฐ›์€ HTML์—์„œ getParameter๋กœ ๋ฐ›๋Š”๋‹ค


์Šคํฌ๋ฆฝํŠธ์— myForm ์“ธ๊ฑฐ๋ฉด ๊ทธ๊ฑธ ์ฐพ์•„๊ฐ€์•ผํ•˜๋‹ˆ๊นŒ
form์— name =myForm๊ทธ๋•Œ ์จ์ฃผ๋ฉด๋จ

if(!f.su1.value){
		alert("์ˆ˜1์„ ์ž…๋ ฅํ•˜์„ธ์š”");
		f.sul.focus();
	}

์ž…๋ ฅํ•˜์ง€์•Š์•˜์„๋• f.sul.focus(); ๊ฑฐ๊ธฐ์— ์ปค์„œ ์˜ฌใ„น๋ ค๋‘๊ธฐ



์œ„์— ์ €๊ฑฐ ํ•จ์ˆ˜ ์“ฐ๋ ค๋ฉด submit -> button ์œผ๋กœ ๋ณ€๊ฒฝ

๊ทผ๋ฐ ์ด๋Ÿฌ๋ฉด action์„ ๋‹ค์‹œ ์ฐพ์•„๊ฐ€์•ผํ•˜๋Š”๋ฐ
f.submit();์„ ํ•จ์ˆ˜์— ์จ์ฃผ๋ฉด ๋จ


hap.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	String cp = request.getContextPath();

/*
MIME [Multipurpose Internet Mail Extensions]์˜ ์ข…๋ฅ˜
๋ฉ”์„ธ์ง€์˜ ๋‚ด์šฉ์ด ์–ด๋–ค ํ˜•์‹์ธ์ง€ ์•Œ๋ ค์ฃผ๊ธฐ์œ„ํ•ด ์ •์˜ํ•œ ์ธํ„ฐ๋„ท ํ‘œ์ค€

text/plain : ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋ฌธ์„œ
text/html : HTML ๋ฌธ์„œ 
text/css  :CSS ๋ฌธ์„œ
text/xml : XML ๋ฌธ์„œ
image/jpeg,image/png : JPEGํŒŒ์ผ, PNGํŒŒ์ผ 
video/mpeg,audio/mp3 : MPEG ๋น„๋””์˜คํŒŒ์ผ, MP3 ์Œ์•…ํŒŒ์ผ
application/zip : zip ์••์ถ•ํŒŒ์ผ
*/

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<script type="text/javascript">

	function sendIt(){
		
		var f = document.myForm;
		
		if(!f.su1.value){
			alert("์ˆ˜1์„ ์ž…๋ ฅํ•˜์„ธ์š”");
			f.su1.focus();
			return;
		}
		
		if(!f.su2.value){
			alert("์ˆ˜2์„ ์ž…๋ ฅํ•˜์„ธ์š”");
			f.su2.focus();
			return;
		}
		
		if(!f.name.value){
			alert("์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”");
			f.name.focus();
			return;
		}
		f.action = "<%=cp%>/jsp1/hap_ok.jsp"
		f.submit();
	}

</script>

</head>
<body>

<form action="" method="post" name = "myForm">
์ˆ˜1: <input type="text" name="su1"/><br/>
์ˆ˜2: <input type="text" name="su2"/><br/>
์ด๋ฆ„: <input type="text" name="name"/><br/>
<input type="button" value="๊ฒฐ๊ณผ" onclick="sendIt();"/><br/>
</form>

<br/>
<br/>

<a href="hap_ok.jsp?su1=100&su2=200&name=์ธ๋‚˜">Get๋ฐฉ์‹</a>

</body>
</html>

hap_ok.jsp

  <%@ page contentType="text/html; charset=UTF-8"%>

<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();

	String s1 = request.getParameter("su1");
	String s2 = request.getParameter("su2");
	String name = request.getParameter("name");

	int su1 = Integer.parseInt(s1);
	int su2 = Integer.parseInt(s2);
	
	int sum = su1 + su2;
	
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<%=cp %><br/>

๊ฒฐ๊ณผ: <%=su1 %>+<%=su2 %>=<%=sum %><br/>
์ด๋ฆ„: <%=name %>

</body>
</html>

๐Ÿ“Œ ์ถœ๋ ฅ

Function - ์ž…๋ ฅ์•ˆํ–ˆ์œผ๋ฉด alert(๊ฒฝ๊ณ )๋ฉ”์„ธ์ง€ ๋„์šฐ๊ธฐ




ํŒŒ์ผ์ด ๋‹ค๋ฅธ ๊ณณ์— ์žˆ์„ ๋• ๊ฒฝ๋กœ ์ž…๋ ฅํ•ด์ฃผ๊ธฐ

  • ๋ฐฉ๋ฒ• (1)

  • ๋ฐฉ๋ฒ• (2)

๊ณต๋ถ€ํ•  ๋•Œ๋งŒ ์“ฐ๋Š” ๋ฐฉ๋ฒ• :
<script> String cp = request.getContextPath(); = ๋‚ด๊ฐ€ ๋งŒ๋“  study๊นŒ์ง€์˜ ๊ฒฝ๋กœ์™€ ๊ฐ™์Œ
๊ทธ๋ž˜์„œ <body> ๋ถ€๋ถ„์— <%=cp %>๋กœ ์ถœ๋ ฅํ•ด์ฃผ๊ธฐ


[ํ™˜๊ฒฝ์„ค์ •] - [JSP Files] - [Templates] : ์•„์˜ˆ ์ € (๋ฉ”์„œ๋“œ(GET)์„ ์œ„ํ•œ) UTP-8 + ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ด๋†“๊ธฐ

  • ๊ณ„์† ์“ฐ์ด๋Š” ๋ช…๋ น์–ด๋‚˜ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ…œํ”Œ๋ฆฟ์— ์ €์žฅํ•ด๋†“๊ธฐ!


2. ๊ตฌ๊ตฌ๋‹จ ๋งŒ๋“ค๊ธฐ

Test2.

๐Ÿ’ป ์ž…๋ ฅ

ํ™”๋ฉด1 : ๊ตฌ๊ตฌ๋‹จ
ํ™”๋ฉด2 : ๊ตฌ๊ตฌ๋‹จ_ok


gugudan.jsp

 <%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<form action="gugudan_ok.jsp" method="post">

๋‹จ: <input type="text" name="dan"/><br/>
<input type="submit" value="๊ฒฐ๊ณผ"><br/>

</form>


</body>
</html> 

gugudan_ok.jsp

<%@page import="org.w3c.dom.Document"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
	
	//์ด๋ ‡๊ฒŒ ํ•œ๋ฒˆ์— ์จ๋„๋จ (๊ตฌ๊ตฌ๋‹จ ๋งŒ๋“ค๊ธฐ)
	int dan = Integer.parseInt(request.getParameter("dan"));
	
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<%
	for(int i = 1; i<=9 ; i++){
		
		String str = String.format("%d*%d=%d<br/>",dan,i,dan*i);
		out.print(str);
		//out.println(dan + "*" + i + " = " + (dan * i) + "<br>");
	}

%>


</body>
</html>  

๐Ÿ“Œ ์ถœ๋ ฅ


3.

Test3.

๐Ÿ’ป ์ž…๋ ฅ

ํ™”๋ฉด1 : ํšŒ์›๊ฐ€์ž…
ํ™”๋ฉด2 : ํšŒ์›๊ฐ€์ž…_ok


test1.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>


<script type="text/javascript">

//ํšŒ์›๊ฐ€์ž… ๋งŒ๋“ค๊ธฐ
	function sendIt() {
		
		var f = document.myForm;
		
		if(!f.id.value){
			alert("์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”");
			f.id.focus();
			return;
		}
		
		if(!f.pwd.value){
			alert("ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”");
			f.pwd.focus();
			return;
		}
		
		if(!f.chk.checked){
			alert("์•ฝ๊ด€์— ๋™์˜ํ•ด์ฃผ์„ธ์š”");
			return;
		}
		alert("ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต!");
		f.submit();
	}
	
	
	function onlyNum() { //์ˆซ์ž -> tel2 / tel3
		
		if(event.keyCode < 48 || event.keyCode > 57){
			event.returnValue = false; //์•„๋ฌด๋ฐ˜์‘ ๋ณด์ด์ง€๋ง์•„๋ผ
		}
	}
	
	
	function onlyHangul() { //ํ•œ๊ธ€ -> ์ด๋ฆ„
		
		if(event.keyCode < 12592 || event.keyCode > 12687){
			event.returnValue = false; //์•„๋ฌด๋ฐ˜์‘ ๋ณด์ด์ง€๋ง์•„๋ผ
		}
	}
	


</script>

</head>
<body>

<form action="test1_ok.jsp" method="post" name="myForm">

์•„์ด๋””: <input type="text" name="id"/><br/>
ํŒจ์Šค์›Œ๋“œ: <input type="password" name="pwd"/><br/>
์ด๋ฆ„: <input type="text" name="name" onkeypress="onlyHangul();"/><br/>
์„ฑ๋ณ„: <input type="radio" name="gender" 
checked="checked" value="๋‚จ์ž"/>๋‚จ์ž
<input type="radio" name="gender" value="์—ฌ์ž"/>์—ฌ์ž<br/>
์ „ํ™”๋ฒˆํ˜ธ: <select name="tel1"> 
	<option value="010">010</option>
	<option value="011">011</option>
	<option value="012">012</option>
</select>
<input type="text" name="tel2" onkeypress="onlyNum();"/>-
<input type="text" name="tel3" onkeypress="onlyNum();"><br/>

์ทจ๋ฏธ:<br/>
<select name="hobby" size="4" multiple="multiple">
	<option value="๊ฒŒ์ž„">๊ฒŒ์ž„</option>
	<option value="์šด๋™">์šด๋™</option>
	<option value="์˜ํ™”">์˜ํ™”</option>
	<option value="์Œ์•…">์Œ์•…</option>
</select><br/>

์ข‹์•„ํ•˜๋Š” ์—ฐ์˜ˆ์ธ<br/>
<input type="checkbox" name="enter" value="๋ฐฐ์ˆ˜์ง€">๋ฐฐ์ˆ˜์ง€<br/>
<input type="checkbox" name="enter" value="์œ ์ธ๋‚˜">์œ ์ธ๋‚˜<br/>
<input type="checkbox" name="enter" value="์ด์ด๋‹ด">์ด์ด๋‹ด<br/>
<input type="checkbox" name="enter" value="๋ฐ•์‹ ํ˜œ">๋ฐ•์‹ ํ˜œ<br/>
<input type="checkbox" name="enter" value="์•„์ด์œ ">์•„์ด์œ <br/>


๋™์˜ ํ•˜์‹ญ๋‹ˆ๊นŒ? <input type="checkbox" name="chk" value="Y"/><br/>
๋ฉ”๋ชจ: <br/>
<textarea rows="5" cols="20" name="memo"
style="resize: none;"></textarea><br/>

<input type="button" value="ํšŒ์›๊ฐ€์ž…" onclick="sendIt();"/>
<input type="reset" value="๋‹ค์‹œ์ž…๋ ฅ"
	onclick="document.myForm.id.focus();"/>
<input type="button" value="์ทจ์†Œ"
	onclick="javascript:location.href='<%=cp%>';">

</form>

</body>
</html>

test1_ok.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
	
	String id = request.getParameter("id");
	String pwd = request.getParameter("pwd");
	String name = request.getParameter("name");
	String gender = request.getParameter("gender");
	String tel1 = request.getParameter("tel1");
	String tel2 = request.getParameter("tel2");
	String tel3 = request.getParameter("tel3"); //์ผ๋ฐ˜ ๋ณ€์ˆ˜ : static์˜์—ญ์— ์ €์žฅ๋˜์ง€๋งŒ
	String[] hobby = request.getParameterValues("hobby"); //๋ฐฐ์—ด:๊ฐ์ฒด์ƒ์„ฑ๋˜์–ด์•ผํ•˜๋ฏ€๋กœ - ํ•ด์‹œ์ฝ”๋“œ๋กœ ๋ฐ›์•„์คŒ
	String[] enter = request.getParameterValues("enter");
	String chk = request.getParameter("chk");
	String memo = request.getParameter("memo");
	
	memo = memo.replaceAll("\r\n","<br/>"); // ์—”ํ„ฐ๋ฅผ web์—”ํ„ฐ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ
	
	String str1 ="";
	if(hobby!=null){
		for(String temp: hobby){
			str1 += temp +" ";
		}
	}

	String str2 ="";
	if(enter!=null){
		for(String temp: enter){
			str2 += temp +" ";
		}
	}	
	
	
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

์•„์ด๋””: <%=id %><br/>
ํŒจ์Šค์›Œ๋“œ: <%=pwd %><br/>
์ด๋ฆ„: <%=name %><br/>
์„ฑ๋ณ„: <%=gender %><br/>
์ „ํ™”: <%=tel1 %>-<%=tel2 %>-<%=tel3 %><br/>
์ทจ๋ฏธ: <%=str1 %><br/>
์ข‹์•„ํ•˜๋Š” ์—ฐ์˜ˆ์ธ: <%=str2 %><br/>
๋™์˜์—ฌ๋ถ€: <%=chk %><br/>
๋ฉ”๋ชจ: <%=memo %><br/>


</body>
</html>

๐Ÿ“Œ ์ถœ๋ ฅ



  • <๊ฒฐ๊ณผ>


4. ๋ฉ”๋ชจ๋ฆฌ์— ๋„ฃ๊ณ  ๋นผ๊ธฐ (add & remove)

Test4.

๐Ÿ’ป ์ž…๋ ฅ

ํ™”๋ฉด1 : add & remove
ํ™”๋ฉด2 : add & remove_ok


listTest.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<style type="text/css"> 

body {
	font-size: 10pt;
}

.itemList{

	font-size: 9pt;
	width: 100pt;
}

.itemBtn{
	font-size: 9pt;
	color: rgb(0,0,0);
	background-color: rgb(150,150,150);
	width: 30pt;
}

.Btn{
	font-size: 9pt;
	color: rgb(0,0,0);
	background-color: rgb(250,250,250);
}

</style>

<script type="text/javascript">

	function itemAdd() {
		var f = document.myForm;
		var leftItem = f.leftItem;
		
		leftItem[0] = new Option("๋ฐฐ์ˆ˜์ง€","๋ฐฐ์ˆ˜์ง€"); // ์ž…๋ ฅํ•œtext : value๊ฐ’
		leftItem[1] = new Option("์œ ์ธ๋‚˜","์œ ์ธ๋‚˜"); 
		leftItem[2] = new Option("์ด์ด๋‹ด","์ด์ด๋‹ด"); 
		leftItem[3] = new Option("๋ฐ•์‹ ํ˜œ","๋ฐ•์‹ ํ˜œ"); 
		leftItem[4] = new Option("์•„์ด์œ ","์•„์ด์œ "); 
		leftItem[5] = new Option("ํ•œ์˜ˆ์Šฌ","ํ•œ์˜ˆ์Šฌ"); 
		leftItem[6] = new Option("์ „์ง€ํ˜„","์ „์ง€ํ˜„"); 
		
	}

	function itemMove(val) { //๋ฐฉํ–ฅ
		var f = document.myForm;
		var source,target;
		
		if(val=="left"){
			source = f.rightItem;
			target = f.leftItem;
		}else{
			source = f.leftItem;
			target = f.rightItem;
		}
		
		var n, i;
		n = target.length;
		//alert(n); ๊ฐ’์ด ๋ญ”์ง€ ์•”
		//alert(source.length);
		
		for(i=source.length-1;i>=0;i--){
			if(source.options[i].selected){
				target[n++] = new Option(source.options[i].text,
						source.options[i].value);
				source[i] = null;
			}
		}
	}
	
	function sendIt() {
		
		var f = document.myForm;
		
		if(f.rightItem.length==0){
			alert("์ชฝ์ง€๋ฅผ ๋ณด๋‚ผ ์‚ฌ๋žŒ์„ ์„ ํƒํ•˜์„ธ์š”");
			f.rightItem.focus();
			return;
		}
		
		if(!f.msg.value){
			alert("๋ฉ”์„ธ์ง€๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”");
			f.msg.focus();
			return;
		}
		
		//๋ฐ›๋Š”์‚ฌ๋žŒ ์ž๋™ ์„ ํƒ
		for(var i=0;i<f.rightItem.length;i++){
			f.rightItem[i].selected = true;
			//f.rightItem.options[i].selected = true; selected์†์„ฑ์„ true๋กœ ๋ณ€๊ฒฝ
		}
		
		f.submit();
	}
	
	
</script>


</head>
<body onload="itemAdd();">

<form action="listTest_ok.jsp" method="post" name="myForm" >

<table border="0" style="font-size: 10pt;" align="center">
<tr align="center">	
	<td width="150">์ „์ฒด๋ฆฌ์ŠคํŠธ</td>
	<td width="70">&nbsp;</td>
	<td width="150">๋ฐ›๋Š”์‚ฌ๋žŒ</td>
</tr>

<tr align="center">
	<td>
		<select name="leftItem" multiple="multiple" size="7"
		class="itemList">
		</select>
	</td>
	<td width="70">
		<input type="button" value="&gt;" class="itemBtn" onclick="itemMove('right')"/><br/> 
		<input type="button" value="&lt;" class="itemBtn" onclick="itemMove('left')"/><br/>
	</td>
		<td width="150">
		<select name="rightItem" multiple="multiple" size="7"
		class="itemList">
		</select>
	</td>
</tr>

<tr>
	<td colspan="3">
		<br/>๋ฉ”์„ธ์ง€<br/>
		<textarea rows="5" cols="52" name="msg"></textarea>
	</td>
</tr>
<tr>
	<td colspan="3" align="center">
	<input type="button" value="์ชฝ์ง€๋ณด๋‚ด๊ธฐ" class="Btn" onclick="sendIt()"/><br/>



</table>


</form>

</body>
</html>

listTest_ok.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
	
	String msg = request.getParameter("msg");
	String[] rightItem = request.getParameterValues("rightItem");
	
	msg = msg.replaceAll("\n", "<br/>");
	
	String str="";
	if(rightItem!=null){
		for(String temp: rightItem){
			str += temp +" ";
		}
	}
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

๋ฐ›๋Š”์‚ฌ๋žŒ:<%=str %><br/>
๋ฉ”์„ธ์ง€:<%=msg %><br/>

</body>
</html>   

๐Ÿ“Œ ์ถœ๋ ฅ

์ด๋Ÿฐ add & remove ๋งŒ๋“ค์–ด๋ณผ๊ฑฐ์ž„


0๊ฐœ์˜ ๋Œ“๊ธ€