Request객체: JSP 페이지에서 가장 많이 사용되는 객체로
웹 브라우저와 같은 클라이언트로부터의 요청 정보를 담아 제공하는 객체
request 메서드(javax.servlet.http.HttppServletRequest의 메서드)
request.getRemoteAddr( ) | 접속자 컴퓨터의 ip |
request.request.getCharacterEncoding() | 인코딩 코드값 |
request.getContentType() | contentType |
request.getMethod() | 전송방식(get or post 방식 구분) |
request.getProtocol() | 해당 Protocol |
request.getRequestURI() | 현재 URI 주소 |
request.getContextPath() | contextPath |
request.getServerPort() | port벊호 |
request.getServletContext().getRealPath("/") | 절대주소 |
URI와 URL의 차이: URI가 URL의 상위개념으로 URI는 URL에서 Context Path 이하의 나머지 부분을 의미한다.
URL에서 도메인을 제외한 부분이라고 할 수 있다.
Parameter 메서드
getParameter(name) | name에 해당하는 value를 가져온다. |
getParameterValues(name) | name에 해당하는 value들을 가져온다.(예, checkbox) |
getParameterNames | 파라미터 name들을 가져온다. |
1. a 태그를 이용해 서버로 데이터 보내기
a 태그는 get 방식만 가능하다.(검색어 처리 할 때 주로 사용)
기본 HTML 파일 생성하고 a 태그를 이용해서 데이터 생성하기
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>link to send data</title>
</head>
<body>
<h3>a 태그를 이용해 서버로 데이터 보내기</h3>
<a href="alinkOk.jsp?name=이아무개&num=1106&강동구 천호동">Click!!</a>
</body>
</html>
a 태그로 연결되는 alinkOk.jsp 파일 생성해서 클라이언트가 보낸 데이터를 서버로 가져오기
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
//클라이언트가 보낸 데이터를 서버로 가져오기
String name = request.getParameter("name");
// 네트워크로 전송되는 데이터는 기본적으로 문자열이다.
// 숫자도 문자열로 들어오기 때문에 숫자로 쓰려면 변환해주어야 한다.
int num = Integer.parseInt(request.getParameter("num"));
String addr = request.getParameter("addr");
out.println("이름->"+name);
out.println("<br/>번호->"+num);
System.out.println("<br/>주소->"+addr);
%>
더보기
- System.out.println은 Console창에서 확인할 수 있다.
- Click!!을 누르면 이름과 번호를 볼 수 있다.
- 데이터가 URL에 보인다면 -> get 방식!!!
- 주의할 점은 jsp 파일로 서버를 실행하려면 오류가 난다 -> 앞페이지에서 전달받은 parameter가 없기 때문이다.
2. Java Script의 location객체로 링크 전송하기
기본 HTML 파일 생성하고 button을 이용해서 onClick이벤트가 실행될 때 dataSend( )호출. location 객체로 jsp파일로 이동
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>link to send data</title>
<script>
function dataSend(){
location.href="locationOk.jsp?pageNum=7&searchWord=컴퓨터";
}
</script>
</head>
<body>
<h2>JavaScript location으로 링크 전송</h2>
<button onClick="dataSend()">Click!!!</button>
</body>
</html>
dataSend안에 있는 location객체로 연결되는 locationOk.jsp 파일 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
int pageNum = Integer.parseInt(request.getParameter("pageNum"));
String searchWord = request.getParameter("searchWord");
out.print("page number:"+pageNum);
out.print("<br/>search word:"+searchWord);
%>
3. Form으로 데이터 보내기
기본 HTML 파일 생성하기
id는 없어도 되지만 서버로 데이터를 보내기 위해서는 name이 있어야 한다.
multiple은 두 개 checked 가능하다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>link to send data</title>
<script>
function dataSend(){
location.href="locationOk.jsp?pageNum=7&searchWord=컴퓨터"; // 내장객체를 만나면서 jsp 파일로 이동
}
</script>
</head>
<body>
<h2>form으로 서버에 데이터 보내기</h2>
<form method="post" 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="exercise" value="swimming"/>swimming
<input type="checkbox" name="exercise" value="climming"/>climbing
<input type="checkbox" name="exercise" value="hiking"/>hiking
<input type="checkbox" name="exercise" value="dancing"/>dancing
<input type="checkbox" name="exercise" value="surffing"/>surfing<br/>
관심분야 : <select name="interest" multiple>
<option value="music">music</option>
<option value="art">art</option>
<option value="math">math</option>
<option value="athletic">athletic</option>
<option value="english">english</option>
</select><br/>
<input type="submit" value="등록"/>
</form>
</body>
</html>
이전페이지에 있는 폼의 데이터를 폼으로 가져오기(복수선택)(fromOk.jsp 파일 생성)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Arrays, java.util.Enumeration"%>
<!-- 이전페이지에 있는 폼의 데이터를 폼으로 가져오기 -->
<%
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String userid = request.getParameter("userid");
String userpwd = request.getParameter("userpwd");
// 변수 1개에 여러개의 데이터가 전송될때는 배열로 전송한다.
String exercise[] = request.getParameterValues("exercise");
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/>
exercise :
<% // 반복문 사용
for(int i=0; i<exercise.length; i+=1){
%>
<%=exercise[i] %>
<%
}
%>
<br/>
interest : <%=Arrays.toString(interest)%> <!-- array의 toString 사용 -->
<h3>request객체에 메서드</h3>
<%
Enumeration<String> paraNames = request.getParameterNames();
while(paraNames.hasMoreElements()){ // 있으면 true, 없으면 false
//out.println(paraNames.nextElement());
%>
<li><%=paraNames.nextElement() %></li>
<%
}
%>
</body>
</html>
더보기
- setCharacterEncoding으로 utf-8로 세팅할 수 있다. POST 방식으로 전송될 때 UTF-8이 아니면 깨진다. (데이터 가져오기 전에 맨 위에 먼저 인코딩)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- 이전페이지에 있는 폼의 데이터를 폼으로 가져오기 -->
<%
//post 방식 전송일 때 request객체에 한글을 utf-8로 세팅 후 정보를 얻어온다.
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String userid = request.getParameter("userid");
String userpwd = request.getParameter("userpwd");
%>
...
<body>
username : <%=username %><br/>
userid : <%=userid %><br/>
userpwd : <%=userpwd %><br/>
</body>
</html>
- 변수 1개에 여러 데이터가 전송될 때는 배열로 처리한다. (checked된 것만 넘어오게 된다.)
- 반복문 사용
- Array클래스의 toString 메서드 사용
<%@ page import="java.util.Arrays"%>
<%
String exercise[] = request.getParameterValues("exercise");
String interest[] = request.getParameterValues("interest");
%>
...
<body>
username : <%=username %><br/>
userid : <%=userid %><br/>
userpwd : <%=userpwd %><br/>
exercie : <!-- 반복문 사용 -->
<%
for(int i=0; i<exercise.length; i+=1){
%>
<%=exercise[i] %>
<%
}
%>
<br/> <!-- Arrays 클래스를 import해서 사용 -->
interest : <%= Arrays.toString(interest) %>
</body>
</html>
- Enumeration 사용
<%@ page import="java.util.Arrays, java.util.Enumeration"%>
...
<h3>request객체에 메서드</h3>
<%
Enumeration<String> paraNames = request.getParameterNames();
while(paraNames.hasMoreElements()){ // 있으면 true, 없으면 false
//out.println(paraNames.nextElement());
%>
<li><%=paraNames.nextElement() %></li>
<%
}
%>
https://everysmallstep.tistory.com/148
https://dololak.tistory.com/140
'멀티캠퍼스 풀스택 과정 > 백엔드' 카테고리의 다른 글
백엔드1-6. JSP-5: JAVA와 DB의 연동(isErrorPage)-2 (0) | 2022.03.04 |
---|---|
백엔드1-5. JSP-4 : JAVA와 DB의 연동(emp테이블사용)-1 (0) | 2022.03.03 |
백엔드1-3. JSP-2: 웹 배포하기 (0) | 2022.03.03 |
백엔드1-2. JSP-1: JSP기초와 예제(이클립스에서 웹 프로젝트 생성) (0) | 2022.03.03 |
백엔드1-1. WAS(Web Application Server)과 Web Server (0) | 2022.03.02 |