JSP - chapter01(3)


パラメータ値の符号化/復号化

<%@page import="java.net.URLDecoder"%>
<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name")== null?"없음":request.getParameter("name");
%>
<!DOCTYPE html>
<html>
<head>
<title>파라미터 값의 인코딩/디코딩</title>
<script type="text/javascript">
	function goURL() {
		var varName = document.getElementById("name");
		var loc = "/chapter02/testEncoding.jsp?name=" + encodeURI(encodeURIComponent(varName.value));
/* 		var loc = "/chapter02/testEncoding.jsp?name=" + encodeURI(varName.value); */
		location.href = loc;
    }
</script>
</head>
<body>
	<h2>파라미터 값의 인코딩/디코딩</h2>
    name : <%=URLDecoder.decode(name, "UTF-8") %>
<%-- 	name : <%=name%> --%>
<br/>
<input type="text" name="name" id="name" value="" placeholder="이름을 입력하세요.">
	<input type="button" value="이동" onclick="goURL()">
	<br>
	<a href="/chapter02/testEncoding.jsp?name=<%=URLEncoder.encode(name, "UTF-8")%>">이동</a>
</body>
</html>
出力:
入力名
  • より前
  • 名を入力し、「≪実行|Go|emdw≫」ボタンをクリックします(name:<%=name%>に出力された場合は復号されません).
  • の名前を入力し、「≪実行|Go|emdw≫」ボタンをクリックします(名前:<%=URLDecoder.decode(「≪UTF-8|UTF-8")%>)に出力された場合-復号化されます).
  • フォームの生成と結果の出力

    <%@ page language="java" contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <title>폼 생성</title>
    </head>
    <body>
    <form method="post" action="/chapter02/viewParameter.jsp">
    	이름 : <input type="text" name="name" size="10"><br>
    	주소 : <input type="text" name="address" size="30"><br>
    	좋아하는 동물 : <input type="checkbox" name="pet" value="camel" id="camel">
    				<label for="camel">낙타</label>
    				<input type="checkbox" name="pet" value="cat" id="cat">
    				<label for="cat">고양이</label>
    				<input type="checkbox" name="pet" value="dog" id="dog">
    				<label for="dog">강아지</label>
    				<input type="checkbox" name="pet" value="fox" id="fox">
    				<label for="fox">여우</label> <br>
    	<input type="submit" value="전송" style="cursor: pointer;" alt="전송" title="전송">				
    </form>
    </body>
    </html>
    <%@page import="java.util.Map"%>
    <%@page import="java.util.Enumeration"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"%>
    <%
    //요청 파라미터의 캐릭터 인코딩을 UTF-8로 지정 (한글깨짐방지)
    request.setCharacterEncoding("UTF-8");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <title>요청 파라미터 출력</title>
    </head>
    <body>
    <!-- 이름, 주소의 값을 출력 -->
    <!-- 이름을 적지 않았다면 빈 문자열("")이 파라미터 값으로 전달됨 -->
    name 파라미터 = <%=request.getParameter("name")%><br />
    address 파라미터 = <%=request.getParameter("address")%><br />
    <%
    //좋아하는 동물(배열 이기 때문에 배열로 받아줌)
    //이름이 pet인 파라미터의 값 목록을 배열(String[])로 리턴함.
    //체크박스를 아무것도 선택하지 않으면 웹 브라우저는 해당 이름의 파라미터를 전송하지 않음*******
    String[] values = request.getParameterValues("pet");
    if(values!=null){
    	for(int i=0;i<values.length;i++){//values.length : 체크된 개수
    		out.println(values[i]);	//value를 출력
    	}
    }
    %>
    <p />
    <%
    //파라미터 이름을 출력해주는 기본 형태.(Elements를 다룸)
    Enumeration paramEnum = request.getParameterNames();
    while(paramEnum.hasMoreElements()){ //요소가 있을 때만 반복
    	String name = (String)paramEnum.nextElement();
    	out.println(name+"<br />");
    }
    %>
    <p />
    <%
    //파라미터 이름과 파라미터 값을 리턴.
    //이 맵에는 <파라미터 이름, 파라미터  배열>이 쌍을 이루고 있음.
    Map parameterMap = request.getParameterMap();
    String[] nameParam = (String[])parameterMap.get("pet");	//name="address"
    if(nameParam!=null){
    	out.print("name = " +  nameParam[0] + "<br />");	//name, address, pet (1개 선택시)
     	out.print("name = " +  nameParam[1] + "<br />");	//pet (2개 선택시)
     	out.print("name = " +  nameParam[2] + "<br />");	//pet (3개 선택시)
     	out.print("name = " +  nameParam[3] + "<br />");	//pet (4개 선택시)
    }
    %>
    </body>
    </html>
    出力:
  • フォーム画面
  • 名、住所を入力&好きな動物を選択
  • 転送ボタンをクリックします(好きな動物が4つ選択されている場合)