빅데이터 서비스 교육/JSP Servlet

JSP request, response

Manly 2022. 5. 11. 17:55
반응형

ex09maketable.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>생성할 행, 열 수를 입력해주세요.</h1>
<form action="ex09makeTable.jsp">
행 : <input type="number" name="rows"> <br>
열 : <input type="number" name="columns"> <br>
<input type="submit" value="만들기">

</form>
</body>
</html>

ex09maketable.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>
<%-- 1. html에서 form태그 3요소 채우기 --%>
<%-- 2. 파라미터 수집 --%>
<%
int rows = Integer.parseInt(request.getParameter("rows"));
int columns = Integer.parseInt(request.getParameter("columns"));
%>

<%-- 3. 테이블 출력 --%>
<table border='1'>


<%int sum=0; %>
<%for(int j=0; j<rows; j++){ %>
<tr>
<%for(int i= 0; i<columns; i++){ %>
<%sum += 1; %>
<td><%=sum %></td>
<%}%>
</tr>
<%} %>
</table>

</body>
</html>

 

 

 

 

Request 객체 실습

ex10number.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>랜덤 당첨 게임</h1>
<form action="ex10write.jsp">
<input type="number" name="num"> <br>
<input type="submit" value="생성하기">

</form>
</body>
</html>

ex10write.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>
<h1>랜덤 당첨 작성</h1>
	<%-- 1. html에서 form태그 필수요소 채우기 --%>
	<%-- 2. 파라미터 수집 --%>
	<%
	int num = Integer.parseInt(request.getParameter("num"));
	%>
	<%-- 3. 입력한 숫자만큼 input태그 만들어주기 --%>
	<form action="ex10result.jsp">
		주제 : <input type="text" name="theme"> <br>
		<%
		for (int i = 1; i <= num; i++) {
		%>
		아이템
		<%=i%>: <input type="text" name="item"> <br>   
        <%--이경우에 name=="item<%=i %>"로 각각의 고유한 name을 설정가능 
        하지만 result.jsp에서 파라미터 수집할때 몇 개가 올지 몰라서 어려워진다.--%>
		<%
		}
		%>
		<input type="submit" value="시작">
	</form>
</body>
</html>

ex10result.jsp

<%@page import="java.util.Random"%>
<%@ 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>
<h1>랜덤 당첨 결과</h1>
<%-- 1. html에서 form태그 필수요소 채우기 --%>
	<%-- 2. 파라미터 수집 --%>
<% String theme = request.getParameter("theme");
String[] item = request.getParameterValues("item");
// getParametrValues를 통해 name이 같은 여러개의 값의 파라미터 수집

Random ran = new Random();
String pick = item[ran.nextInt(item.length)];%>

<%-- 3. 주제 출력해주기 --%>
<%=theme %> <br>
<%-- 4. 입력받은 아이템중에서 랜덤한 1개를 출력해주기 --%>
<%=pick %>
</body>
</html>

 

 

 

Response

 

response.sendRedirect() 동작원리

 

 

2번의

요청과 응답이

 일어난다.

 

 

 

 

 

 

 

 

 

 

<%@ 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>
	<%
	// response 내장객체
	// response.sendRedirect("주소");
	// 페이지 이동
	// 같은 프로젝트 내 파일
	// Servlet -> URLMapping
	// JSP -> 파일명전체
	// 전체 URL을 통해서 외부서버에도 접근 가능
    // 요청-응답 : 2번
	response.sendRedirect("http://www.naver.com");	
	%>
</body>
</html>

 

 

 

네이버 페이지가 바로 열리는것처럼 보이지만

첫 요청 후 상태코드 302로 응답이 오고 다시 네이버 서버로 요청 후 응답을 받는다

 

첫 req, res(요청,응답)은 요청하고 응답을 받는 데이터가 있어도 즉시 사라진다

 

두번째 req, res는 첫번째에서 데이터를 하나도 받지 못한다.

 

첫 요청, 응답에서 data를 가지고 사라졌기 때문에 응답2, 요청2에서 null값을

정수형으로 형변환 할 수 없다고 오류가 떴다.

 

response.sendRedirect()를 통한 URL 이동

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>이동할 페이지 선택</h1>
	<form action="ex12MoveURL.jsp">
		<select name="site">
			<option value="naver">네이버</option>
			<option value="daum">다음</option>
			<option value="google">구글</option>
		</select> <input type="submit" value="선택">
	</form>
</body>
</html>
<%@ 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>
	<%-- 1. fomr태그 3요소 채우기 --%>
	<%-- 2. 파라미터 수집 --%>
<%
String site = request.getParameter("site");
String nextPage ="";
%>
	<%-- 3. 페이지 이동
  네이버 선택 -> 네이버 메인으로 이동
  다음 선택 -> 다음 메인으로 이동
  구글 선택 -> 구글 메인으로 이동
  외부 서버 요청 -> 전체 URL전부 써줘야한다.
     --%>
 
<% if(site.equals("naver")){
//response.sendRedirect("http://www.naver.com");
nextPage= "http://www.naver.com";
}else if(site.equals("daum")){
//response.sendRedirect("http://www.daum.net");
	nextPage= "http://www.daum.net";
}else{ 
//response.sendRedirect("http://google.com");
	nextPage= "http://google.com";
} 
response.sendRedirect(nextPage);
//response.sendRedirect를 여러번 쓰지 않고 이렇게 쓸 수 있다.
//sendRedirect는 반드시 한페이지당 1번만 사용가능하다. -> return을 한 메소드에 한번만 쓰는것과 같다
%>


</body>
</html>

각각 네이버로

   다음

   구글                      로 이동

반응형

'빅데이터 서비스 교육 > JSP Servlet' 카테고리의 다른 글

JSP Session  (0) 2022.05.13
JSP Cookie  (0) 2022.05.12
JSP 지시자, 내장객체  (0) 2022.05.10
JSP 개념, 구성요소  (0) 2022.05.10
JSP Servlet  (0) 2022.05.09