Backend/JSP

[JSP] request

seoooc 2022. 3. 2. 19:11

 

 

 

 

 

request

: 클라이언트의 정보를 서버로 가져온다.

 

 

 

클릭하기 링크 누르면 aLinkOk.jsp로 이동함

aLink.jsp

<h1>a태그를 이용하여 서버로 데이터 보내기</h1>
<a href="aLinkOk.jsp?name=코코&num=2&addr=광주광역시 서구">클릭하세요</a>

 

a태그를 클릭하면 aLinkOk.jsp로 name, num, addr 변수를 넘겨준다.

(여러 데이터를 보낼 때는 &로 묶어주면 됨)

 

 

 

aLinkOk.jsp

<%
	//서버에서 클라이언트가 보낸 데이터를 가져오기
	String name = request.getParameter("name");
	int num = Integer.parseInt(request.getParameter("num"));	//전송된 모든 데이터는 문자열임
	String addr = request.getParameter("addr");
	
	System.out.println("이름 : " + name);
	System.out.println("번호 : " + num);
	System.out.println("주소 : " + addr);
%>

 

aLink.jsp에서 넘겨받은 변수들을 request 객체를 사용하여 얻어온다.(request.getParameter)

 

console에 출력됨

 

 


 

 

 

aLink.jsp

<h1>JavaScript location으로 링크 전송</h1>
<button onclick="dataSend()">Click</button>

 

button 태그를 클릭하면 dataSend 메소드가 호출된다.

 

<script>
	function dataSend(){
		location.href="locationOk.jsp?pageNum=5&searchWord=컴퓨터";
	}
</script>

 

dataSend 메소드가 실행되면

locationOk.jsp로 pageNum, searchWord 변수를 넘겨준다.

 

 

locationOk.jsp

<%
	String pageNum = request.getParameter("pageNum");
	String searchWord = request.getParameter("searchWord");
	
	System.out.println("페이지 번호 : " + pageNum);
	System.out.println("검색어 : " + searchWord);
%>

페이지 번호 = <%=pageNum%><br/>
검색어 = <%=searchWord%><br/>

 

console에 출력

 

locationOk.jsp에 출력됨

 

 


 

form

 

 

왼) form.jsp                                                                                        오)formOk.jsp

 

 

 

form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- input, select, textarea,  -->
<form method="" action="formOk.jsp">
	이름 : <input type="text" name="username"/><br/>
	아이디 : <input type="text" name="userid"/><br/>
	비밀번호 : <input type="password" name="userpwd"/><br/>
	취미 : <input type="checkbox" name="hobby" value="축구"/>축구
		  <input type="checkbox" name="hobby" value="야구"/>야구
		  <input type="checkbox" name="hobby" value="농구"/>농구
		  <input type="checkbox" name="hobby" value="배구"/>배구	
		  <input type="checkbox" name="hobby" value="탁구"/>탁구<br/>		
	관심분야 : <select name="interest">
				<option value="컴퓨터">컴퓨터</option>
				<option value="음악">음악</option>
				<option value="베이킹">베이킹</option>
				<option value="쇼핑">쇼핑</option>
				<option value="여행">여행</option>
			</select><br/>
	<input type="submit" value="등록"/>
</form>
</body>
</html>

 

 

 

formOk.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Arrays" %>
<%
	String username = request.getParameter("username");
	String userid = request.getParameter("userid");
	String userpwd = request.getParameter("userpwd");
	
	//변수 1개에 여러 개의 데이터가 전송될 때는 배열로 전송한다.
	String hobby[] = request.getParameterValues("hobby");
	String interest[] = request.getParameterValues("interest");
	
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
username : <%=username%><br/>
userid : <%=userid %><br/>
userpwd : <%=userpwd %><br/>
hobby : 
<%
	for(int i=0; i<hobby.length; i++){
		%>
			<%=hobby[i] %>,
		<%
	}
%>
<br/>
interest : <%=Arrays.toString(interest) %>
</body>
</html>

 

 

post 방식인 경우 한글 깨짐이 발생한다.

이는 request객체를 utf-8로 세팅 후 정보를 얻어오면 해결된다.

(<% %> 내부에 작성하면 된다.)

 

request.setCharacterEncoding("UTF-8");

 

request.getParameterValue
: 값이 여러개인 파라미터를 얻어올 때 사용

String 배열로 결과값을 리턴한다.

 

 


 

form에 작성된 name 모두 출력하기

 

 

<%	//form에 있는 name 출력
	Enumeration<String> paramNames = request.getParameterNames();
	while(paramNames.hasMoreElements()){ //객체 있으면 true
		%>
			<li><%=paramNames.nextElement()%></li>
		<%
	}
%>

 


 

 

 

<ul>
	<li> 접속자의 컴퓨터 ip : <%= request.getRemoteAddr() %></li>
	<li> 인코딩 코드값 : <%=request.getCharacterEncoding() %></li>
	<li> contentType : <%=request.getContentType() %></li>
	<li> 전송방식 : <%=request.getMethod() %></li>
	<li> 프로토콜 : <%=request.getProtocol() %></li>
	<li> URI : <%=request.getRequestURI() %></li>
	<li> contextPath : <%=request.getContextPath() %></li>
	<li> port : <%=request.getServerPort() %></li>
	<li> 절대주소 : <%=request.getServletContext() %></li>
</ul>