JSP - chapter02

20971 단어 jspjsp

🌹인코딩

  • 알파벳과 숫자, 몇몇 기호를 제외한 나머지 글자들을 URL에 포함시키려면 인코딩이 필요함
  • response.sendRedirect() 메서드를 사용하는 경우에도 마찬가지로 인코딩한 쿼리 문자열(?name=개똥이)을 사용해야 함
  • Java.net.URLEncoder 클래스가 존재하고, URLEncoder.encode() 메서드를 사용하면 파라미터 값으로 사용될 문자열을 지정한 캐릭터 셋으로 (UTF-8) 인코딩할 수 있음
  • 크롬, 파이어폭스는 웹 브라우저가 UTF-8로 인코딩된 주소 경로나 파라미터 값을 해당 문자로 변환해줌
  • IE는 인코딩된 파라미터 값을 그대로 보여줌

🌹response.sendRedirect 인코딩 적용(1)

<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
//삼항 연산자를 사용하여 request.getParameter의 null을 체크함
String id = request.getParameter("memberId")==null? "" : request.getParameter("memberId");
if(id.equals("ddit")) {
	String name = "개똥이";
    String encodeName = URLEncoder.encode(name,"UTF-8");
    //http://localhost:8090/chapter03/login.jsp?memberId=ddit
		response.sendRedirect("/chapter03/index.jsp?name=" + encodeName);
}else {
%>
<!DOCTYPE html>
<html>
<head>
<title>로그인 실패</title>
</head>
<body>
아이디가 ddit가 아닙니다.
</body>
</html>
<%
}
%>
  • memberId 파라미터 지정하지 않았을 경우
  • memberId 파라미터가 ddit가 아닐 경우
  • memberId 파라미터가 ddit일 경우

🌹response.sendRedirect 인코딩 적용(2)

<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
%>
<!DOCTYPE html>
<html>
<head>
<title>로그인 index</title>
</head>
<body>
index.jsp 페이지 입니다. <br/>
<%=name %>
</body>
</html>

출력 :

  • 기본 주소 출력할 경우
  • ?name=개똥이 붙여서 출력할 경우( login.jsp에서 sendRedirect해준 결과 )

🌹연습

  • registOk.jsp에서 파라미터를 받아 출력해보자.(한글처리까지)

  • 출력 후에 registOk2.jsp로 redirect하여 결과를 한번 더 출력해보자.

  • 1번 ) 회원가입 폼에서 입력한 데이터 보내주기

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>회원가입</title>
</head>
<body>
  <form name="frm" id="frm" method="post" action="/chapter03/registOk.jsp">
      아이디 : <input type="text" id="memId" name="memId"><br>
      이름 : <input type="text" id="memName" name="memName"><br>
      성별 : <input type="radio" id="male" name="memGu" value="1"><label for="male">남자</label>
            <input type="radio" id="female" name="memGu" value="2"><label for="female">여자</label>
      <br>
      나이 : <select name="memAge" id="memAge">
              <%for(int i=21; i<=50; i++) {%>
              <option value="<%=i%>"><%=i%></option>
              <%} %>
            </select>
      <button type="submit">등록</button>
  </form>
</body>
</html>
  • 2번) 회원가입 폼에 작성한 정보 출력
<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8"); 
	String memId = request.getParameter("memId")==null?"없음":request.getParameter("memId");
	String memName = request.getParameter("memName")==null?"없음":request.getParameter("memName");
	String memGu = request.getParameter("memGu")==null?"없음":request.getParameter("memGu");
	String memAge = request.getParameter("memAge")==null?"없음":request.getParameter("memAge");
	
	//registOk2.jsp로 보내주기 위한 인코딩 지정해줌
	memId = URLEncoder.encode(memId, "UTF-8");
	memName = URLEncoder.encode(memName, "UTF-8");
	memGu = URLEncoder.encode(memGu, "UTF-8");
	memAge = URLEncoder.encode(memAge, "UTF-8");
	response.sendRedirect("/chapter03/registOk2.jsp?memId=" +memId 
						+"&memName=" +memName 
						+ "&memGu=" + memGu 
						+ "&memAge=" + memAge);
%>    
<!DOCTYPE html>
<html>
<head>
<title>회원가입한 정보 출력</title>
</head>
<body>
 	아이디 : <%=memId %><br>
 	이름 : <%=memName %><br>
 	성별 : 
 	<!-- memGu가 1이면 남자, 2면 여자 -->
 	<% if(memGu.equals("1")) {%>
 		남자<br>
 	<%}else if(memGu.equals("2")){ %>
		여자<br>
 	<%}else {%>
 		선택안함<br>
 	<%} %>
 	나이 : <%=memAge %>세
</body>
</html>
  • 3번) 위의 정보 출력 페이지를 다시 sendRedirect한 결과 출력
<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8"); 
	String memId = request.getParameter("memId")==null?"없음":request.getParameter("memId");
	String memName = request.getParameter("memName")==null?"없음":request.getParameter("memName");
	String memGu = request.getParameter("memGu")==null?"없음":request.getParameter("memGu");
	String memAge = request.getParameter("memAge")==null?"없음":request.getParameter("memAge");
%>     
<!DOCTYPE html>
<html>
<head>
<title>registOk.jsp를 sendRedirect</title>
</head>
<body>
	아이디 : <%=memId %><br>
 	이름 : <%=memName %><br>
 	성별 : 
 	<% if(memGu.equals("1")) {%>
 		남자<br>
 	<%}else if(memGu.equals("2")){ %>
		여자<br>
 	<%}else {%>
 		선택안함<br>
 	<%} %>
 	나이 : <%=memAge %>세
</body>
</html>
  • 회원 가입 폼
  • registOk2.jsp 주소로 이동됨

좋은 웹페이지 즐겨찾기