반응형
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 |