Backend/JSP
[JSP] request
seoooc
2022. 3. 2. 19:11
request
: 클라이언트의 정보를 서버로 가져온다.
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)
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/>
form
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>