Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

IT BANK) JSP 8일차 - JSP(내장 객체) 본문

JSP/IT BANK - JSP

IT BANK) JSP 8일차 - JSP(내장 객체)

끈기JK 2022. 9. 16. 16:23

220916

 

 

■ 내장 객체

: Request request = new Request(); 로 객체 생성해서 사용하지 않고 JSP에서 제공해주는 객체

네이버 로그인 후 여러 페이지로 이동해도 로그인 값 유지 해야하면 session에 로그인 값 저장

사용빈도 request, session이 높음

 

 

-내장 객체 종류

: 많이 사용하나 다 외우기보다 이런게 있다는걸 알고 필요할때 검색해서 사용한다.

 

 

jspExam에서 신규 폴더 implicit 생성 후 진행

 

-웹 브라우저 - 요청 헤더에서 정보 가져오기

<title>ex1</title>
</head>
<body>
	<%-- request 내장 객체에서 제공하는 메서드 --%>
<!-- 	http://localhost:8085/jspExam/implicit/ex1.jsp -->
	웹 컨텍스트 패스 : <%=request.getContextPath() %><br>
	요청 방식 : <%=request.getMethod() %><br>
	요청 URL : <%=request.getRequestURL() %><br>
	요청 URI : <%=request.getRequestURI() %><br>
	요청한 서버 이름 : <%=request.getServerName() %><br>
	요청 프로토콜 : <%=request.getProtocol() %><br>
</body>

 

 

-method 전달 방식별 차이(method="get" vs "post")

<form>태그에 담아서 jsp 파일에 전달

 

get 메서드 전달 시 URL에 데이터를 담아 전달
http://localhost:8085/jspExam/implicit/ex2_result?id=test&pw=1234

post 메서드 전달 시 HTTP Body에 데이터를 담아 전달(URL 표시 X). 아이디, 비밀번호 같은 보안정보는 post 방식 사용.
http://localhost:8085/jspExam/implicit/ex2_result.jsp

<title>ex2_form</title>
</head>
<body>
	<form action="ex2_result.jsp" method="get">
		<input type="text" name="id"><br>
		<input type="text" name="pw"><br>
		<input type="submit" value="로그인">
		<input type="reset" value="취소"><br>
	</form>
</body>

 

POST 방식일 때 한글깨짐 발생. 전달된 데이터의 인코딩과 데이터를 갖고 올때 인코딩이 서로 다르기에 깨짐
HTTP body에서 정보 담아올때 운영체제 기본 인코딩으로 데이터 가져와서 한글 깨짐. UTF-8 request 코드 추가 필요

//ex2_result.jsp
<%
	request.setCharacterEncoding("UTF-8");  // POST 방식일때 코드 추가

	String id = request.getParameter("id");  
	String pw = request.getParameter("pw");
%>
아이디 : <%=id %><br>
비밀번호 : <%=pw %>

 

 

-checkbox 여러 데이터 다른 페이지로 전송

request.getParameter("") 는 딱 1개의 데이터만 가져온다. 그래서 체크박스 2개 이상 선택한 것은 다 가져오지 못한다.

→ request.getParameterValues 사용

<title>ex3_form</title>
</head>
<body>
	<form action="ex3_result.jsp" method="get">
		<input type="text" name="name"><br>
		<input type="text" name="address"><br>
		<p>좋아하는 항목을 체크하세요.</p>
		<input type="checkbox" name="like" value="꿀잠자기">꿀잠자기<br>
		<input type="checkbox" name="like" value="멍때리기">멍때리기<br>
		<input type="checkbox" name="like" value="침대에서 누워있기">침대에서 누워있기<br>
		<input type="submit" value="가입">
	</form>
</body>
//ex3_result.jsp
<%@ page import="java.util.Arrays" %>

<%
	request.setCharacterEncoding("UTF-8");

	String name = request.getParameter("name");  
	String address = request.getParameter("address");
	String[] likes = request.getParameterValues("like");
%>
이름 : <%=name %><br>
주소 : <%=address %><br>
좋아하는 것 : <%=Arrays.toString(likes) %><br>

 

위 코드에서 아래 코드 추가해서 for문으로 나타낼 수도 있다.

// 추가
<%
	for(String like : likes){
		out.print(like + " ");
	}
%>

 

 

-예제(1)

<title>infoForm</title>
</head>
<body>
	<form action="infoResult.jsp" method="post">
		ID : <input type="text" name="id"><br>
		Password : <input type="password" name="pw"><br>
		자기소개<br>
		<textarea rows="3" cols="50" name="si"></textarea><br>
		<input type="submit" value="전송">
		<input type="reset" value="초기화">
	</form>
</body>
// infoResult.jsp
<%
	request.setCharacterEncoding("UTF-8");

	String id = request.getParameter("id");  
	String pw = request.getParameter("pw");
	String si = request.getParameter("si");
%>
입력한 정보는 아래와 같습니다.<br>
ID : <%=id %><br>
Password : <%=pw %><br>
자기 소개 :  <%=si %>

 

 

-예제(2)

<body>
	<form action="selectResult.jsp" method="post">
		<table>
			<tr>
				<td>
					학력
				</td>
				<td>
					<select name="edu">
						<option>재학생</option>
						<option>학사</option>
						<option>석사</option>
						<option>박사</option>	
					</select>
				</td>
			</tr>
			<tr>
				<td>
					소속 국가
				</td>
				<td>
					<select size="4" name="country">
						<option>대한민국</option>
						<option>미국</option>
						<option>일본</option>
						<option>중국</option>
					</select>
				</td>
			</tr>
			<tr>
				<td>
					관심 분야
				</td>
				<td>
					<select size="4" multiple="multiple" name="like">
						<option>컨설팅</option>
						<option>프로듀서</option>
						<option>프로그래머</option>
						<option>서버관리자</option>
					</select>
				</td>
			</tr>
		</table>
		<input type="submit" value="전송">
		<input type="reset" value="초기화">
	</form>
</body>
<title>selectResult</title>
</head>
<body>
	<%
		request.setCharacterEncoding("UTF-8");
	
		String edu = request.getParameter("edu");
		String country = request.getParameter("country");
		String[] likes = request.getParameterValues("like");
	%>
	입력하신 정보는 아래와 같습니다.<br><br>
	학력: <%=edu %><br>
	소속 국가: <%= country %><br>
	관심 분야:
	<%
		for(String like : likes){
			out.print(like+" ");
		}
	%>
</body>