JSP

 

 

 

server.xml

    <Connector connectionTimeout="20000" port="8090" protocol="HTTP/1.1" redirectPort="8443"
    	URIEncoding="EUC-KR" />

 

 

RequestJoinProc.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 위 3개의 메타 태그는 *반드시* head 태그의 처음에 와야합니다; 어떤 다른 콘텐츠들은 반드시 이 태그들 *다음에* 와야 합니다 -->
    <title>동영상과 다르게  부트스트랩 적용 Head 부분만 붙이면 됩니다.</title>
<!-- 합쳐지고 최소화된 최신 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

<!-- 부가적인 테마 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">

<!-- 합쳐지고 최소화된 최신 자바스크립트 -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>

    <!-- IE8 에서 HTML5 요소와 미디어 쿼리를 위한 HTML5 shim 와 Respond.js -->
    <!-- WARNING: Respond.js 는 당신이 file:// 을 통해 페이지를 볼 때는 동작하지 않습니다. -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>
<body>

	 <div class="container">
	<div class="row">
	<div class="col-sm-12 text-center" >
	<div class="col-sm-3"></div>

			<div class="col-sm-6">
				<h2>회원 정보 보기</h2>

<%


//post 방식으로 데이터가 넘어올때 한글이 깨질수 있기에
	request.setCharacterEncoding("EUC-KR");

//각종 사용자로부터 넘어오 데이터를 저장해 줌
	String id=request.getParameter("id");
	String pass1=request.getParameter("pass1");
	String pass2=request.getParameter("pass2");
	String email=request.getParameter("email");
	String tel=request.getParameter("tel");

	//[]열 타입으로 리턴
	String[] hobby= request.getParameterValues("hobby");
	
	String job =request.getParameter("job");
	String age=request.getParameter("age");
	String info=request.getParameter("info");

%>


			</div>

	</div>
	</div>
</div>


</body>
</html>

 

 

 

getParameterNames()

Returns an Enumeration of String objects containing the names of the parameters contained in this request.

파라미터의 이름 집합을 Enumeration 객체로 반환하는 메소드로써, 전체 파라미터를 보다 쉽게 다룰 수 있는 방법을 제공.

 

getParameterValues(java.lang.String name)

Returns an array of String objects containing all of the values the given request parameter has, or null if the parameter does not exist.

[JSP] getParameterValues() 예제

 

예를 들어 게시판에서 글 목록에 체크 박스를 만들어 체크한 항목만을 삭제 할때 유용합니다.

form 이름이 같은 모든 데이터를 String 배열로 가져 옵니다.

------------------- form --------------------------
<html>
<head>
<body>

<form name="test" method="post" action="values.jsp">
<input type="hidden" name="name" value="1">
<input type="hidden" name="name" value="2">
<input type="hidden" name="name" value="3">
<input type="hidden" name="name" value="4">
<input type="hidden" name="name" value="5">
<input type="submit" >
</form>

</body>
</html>
------------------ values.jsp -----------------------
<%

String[] names=request.getParameterValues("name");

for ( int i = 0 ; i < names.length ; i++ ) {

out.print(names[i] + "<br>");

}
%>


출처: http://aboutjsp.com

 

 

 

1. POST 전송시 한글깨짐
JSP 페이지 상단에 request.setCharacterEncoding 을 명시한다.

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

<%@page import="java.util.*"%>
<%

	request.setCharacterEncoding("UTF-8");

%>

 

 

2. GET 전송시 한글깨짐
Tomcat의 server.xml에 URIEncoding 옵션을 추가해 준다. 

아파치를 연동하여 AJP를 사용할 경우 AJP connector에도 해당 옵션을 추가해 준다.

 


 

  <Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" URIEncoding="UTF-8" />

 

 

위와같이 하면 한글깨짐이 어느정도 해결이 된다.


나 같은 경우 GET 방식으로 파라미터를 넘겨 사용할때는 가급적이면 해당 문자열을 인코딩하여 전달한다.
특히 한글이나 특수문자 공백이 들어갈 경우에는 무조건 문자열을 인코딩하여 사용하는데 이는 잘못된 파라미터의 전달처럼 원치않은 문자열이 들어오는것을 피하기 위해서이다.
또한 최신 브라우저는 상관없지만 IE 6, 7과 같은 구형 브라우저에서 문제가 생기는 경우가 있었다.

그래서 습관적으로 get 방식으로 전송되는 문자열에 대해서 인코딩하여 전송한다.

전송하여야 할 문자열은 URLEncoder를 이용하여 인코딩하면 되고 받는쪽에서는 URLDecoder를 이용하여 디코딩하여 사용하면 된다. (POST 전송시엔 할 필요없다)


보내는쪽

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@page import="java.net.URLEncoder"%>

<%
	
	String text = "홍길동" ;

	// 전송 문자 UTF-8 인코딩
	string encText = URLEncoder.encode(text, "UTF-8") ;
%>

 

받는쪽

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@page import="java.net.URLDecoder"%>

<%
	
	// Get 전송 파라미터
	String rText = request.getParameter("text") ;

	// 문자 디코딩
	string text = URLDecoder.decode(text, "UTF-8") ;


%>

 

 


참고로 자바스크립트에서 문자열을 인코딩하여 전송할때는 아래와 같이 encodeURIComponent 함수를 

사용하면 URLEncoder와 동일하게 구현할 수 있다.

 

//

escape(encodeURIComponent("홍길동")) ;

//

 

 

소스 :  https://github.com/braverokmc79/jsp_sin

 

 

유튜브 동영상 출처 :

소프트캠퍼스

강사 : 신형섭(잭임연구원)

저작권 : (주)소프트캠퍼스 http://www.softcampus.co.kr 더많은 무료 강의는 사이트에서 확인하실수 있습니다.

 

 

 

about author

PHRASE

Level 60  라이트

인간으로서는 세 가지밖에 할 수 없다. 태어나는 것, 사는 것, 그리고 죽는 것이다. -라 브뤼에르

댓글 ( 4)

댓글 남기기

작성