JSP - chapter01(3)

ZiSoOm·2021년 7월 13일
0

JSP

목록 보기
3/12

파라미터 값의 인코딩/디코딩

<%@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>

출력 :

  • 이름 입력하기 전
  • 이름 입력 후 이동 버튼 클릭(name : <%=name%>으로 출력한 경우 - 디코딩 안시킴)
  • 이름 입력 후 이동 버튼 클릭(name : <%=URLDecoder.decode(name, "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개 다 선택했을 경우)

0개의 댓글