본문 바로가기

JSP

01. Scriptlet, Request, Reponse

1. Scriptlet

 

 

expression description
<% %> JAVA LOGIC 을 표현 할 수 있는 영역
<%@ %> Page 속성을 정의 하는 영역
<%! %> 변수나 메서드 선언을 하는 영역
<%= %> 변수나 메서드 반환 결과를 출력 하는 영역

 

 

<%@ 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>
	<%@ include file="header.jsp" %>
	<h3>여기는 메인 영역입니다.</h3>
	
	<ul>
		<% for (int i = 1; i <= 10; i++) {%>
		<li><%=i%></li>
		<% } %>
	</ul>
	
	<%@ include file="footer.jsp" %>
</body>
</html>

 

<%@page import="java.util.Calendar"%>
<%@ 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>
	<!-- 변수 및 메서드 선언문 -->
	<%!
	Calendar cal = Calendar.getInstance();
	int hour = cal.get(Calendar.HOUR_OF_DAY);
	int min = cal.get(Calendar.MINUTE);
	int sec = cal.get(Calendar.SECOND); 
	%>
	<!-- 출력문 -->
	현재 시간은 <%= hour %>시 <%=min %>분 <%=sec %>초 
	
	<%if (hour >= 12) { %>
		오후
	<%}else { %>
		오전	
	<%} %>
	입니다.
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!-- 메서드와 변수 선언 -->
    <%!
    String title = "1부터 100까지 합 구하기";
    
    public int sum(){
    	int sum = 0;
    	
    	for (int i = 1 ; i <= 100 ; i++) {
    		sum += i;
    	}
    	return sum;
    }
    %>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div>
		<p><%=title %></p>
		<p>답은 <%=sum() %>입니다.</p>
	</div>
</body>
</html>

 

 

 

 

 

2. Request

 

 

Request 객체Client 로부터 온 요청에 관한 모든 정보를 다루고 있다.

 

 

<%@ 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>
<style>
	table, td{
		border: 1px solid black;
		border-collapse: collapse;
	}
	td{
		padding: 5px 10px;
	}
</style>
</head>
<body>
	<h3>회원정보</h3>
	<!-- <form action="result.jsp" method="get"> -->
	<form action="jsUse.jsp" method="get">
		<table>
			<tr>
				<td>이름</td>
				<td><input type="text" name="userName"/></td>
			</tr>
			<tr>
				<td>성별</td>
				<td>
					<input type="radio" name="gender" value="남자"/>남
					<input type="radio" name="gender" value="여자"/>여
				</td>
			</tr>
			<tr>
				<td>취미</td>
				<!-- 체크박스는 여러개의 값이 전송될 수 있다. -->
				<td>
					<input type="checkbox" name="hobby" value="독서"/>독서
					<input type="checkbox" name="hobby" value="게임"/>게임
					<input type="checkbox" name="hobby" value="축구"/>축구
					<input type="checkbox" name="hobby" value="영화"/>영화
				</td>
			</tr>
			<tr>
				<td colspan="2" style="text-align: center">
					<input type="submit" value="전송"/>
				</td>
			</tr>
		</table>
	</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>
	<p>이름 : <span id="userName"></span></p>
	<p>성별 : <span id="gender"></span></p>
	<p>취미 : <span id="hobby"></span></p>
</body>
<script>
	var name = '<%=request.getParameter("userName")%>';
	document.getElementById('userName').innerHTML = name;
	var gender = '<%=request.getParameter("gender")%>';
	document.getElementById('gender').innerHTML = gender;
	var hobby = [];
	
	<%
		String[] hobbies = request.getParameterValues("hobby");
		for(String hobby:hobbies){
	%>
		hobby.push('<%=hobby%>');
	<%
		}
	%>
	
	document.getElementById('hobby').innerHTML = hobby.join(',');
</script>
</html>

 

<%@page import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// java 영역
	// request 객체 : 요청하는 모든 정보를 담고있는 객체
	// jsp 에서 request 는 객체화 하지 않고 사용한다.
	// 미리 객체화해서 저장하고 있기 때문이다. (내장객체)
	
	String userName = request.getParameter("userName");
	System.out.println(userName);
	
	String gender = request.getParameter("gender");
	System.out.println(gender);
	
	String[] hobbies = request.getParameterValues("hobby");
	System.out.println(Arrays.toString(hobbies));
%>
<!-- html 영역 -->
<p>userName : <%=userName%></p>
<p>gender : 
	<% if (gender.equals("남자")) {%>
		남자입니다.
	<%}else {%>
		여자입니다.
	<%} %>
</p>
<p>취미 : 
	<%for (int i=0;i<hobbies.length;i++){%>
		<%=hobbies[i]%>
	<%}%>
</p>

<p>도메인 : <%=request.getServerName() %></p>
<p>포트번호 : <%=request.getServerPort() %></p>
<p>URL : <%=request.getRequestURL() %></p>
<!-- IPV6 알려줌 -->
<p>IP : <%=request.getRemoteAddr() %></p>

 

 

 

 

 

3. Response

 

 

 Out 객체는 서버에서 페이지로 output Stream 하는 기능을 한다.

 

하지만 실질적으로는 페이지에 문자열을 출력하는 것 정도로만 사용한다.

 

 

Response 객체요청에 대한 응답 페이지를 전달해 주는 객체이다.

 

페이지를 만드는 (write) 객체이므로 Out 객체처럼 출력이 가능하다.

 

또한 특정 페이지로 이동하는 것도 가능하다.

 

 

<%@ 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>
	<p><a href="print.jsp">각 객체별 페이지 출력(response, out, scriptlet)</a></p>
	<p><a href="redirect.jsp">response 객체로 다른 페이지 이동</a></p>
	<!-- redirect 활용 -->
	<form action="redirect.jsp" method="post">
		<input type="text" name="name"/>
		<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>
	<!-- 페이지 출력은 총 3가지 방법이 있다. -->
	
	<%="<p>첫번째, 스크립틀릿 출력문을 이용한 방법</p>" %>
	<%out.print("<p>두번째, out.print() 를 이용한 방법</p>"); %>
	<%response.getWriter().write("세번째, response 객체를 이용한 방법"); %>
	
	<!--
		out 객체는 response 의 자식이다. 그렇기 때문에 response 보다 느리다. 
		스크립틀릿 출력문은 out 객체로 만들어졌다. 그러므로 둘의 속도는 같다.
		그러므로 위에 있는 것이 먼저 찍힌다.
		response > scriptlet == out
		response, out : java 영역
		스크립틀릿 출력문 : html 영역
	-->
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	System.out.println("redirect.jsp 들림");
	// response.sendRedirect("goToPage.jsp");
	// post 방식으로 전송 시 한글이 깨진다.
	// post 방식 전송 시 아래 구문을 맨 윗줄에 넣어주자
	request.setCharacterEncoding("UTF-8");
	String name = request.getParameter("name");
	System.out.println(name);
	
	// 받아온 이름이 '관리자' 일 경우 goToPage.jsp 로 이동
	// 그 외는 index.jsp 로 이동
	String loc = "index.jsp";
	if(name.equals("관리자")) {
		loc = "goToPage.jsp";
	}
	response.sendRedirect(loc);
	
%>

 

<%@ 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>
	<p>최종 페이지 입니다.</p>
</body>
</html>

'JSP' 카테고리의 다른 글

03. Action TAG, JAVA Bean  (0) 2024.03.24
02. Cookie, Session, Scope  (0) 2024.03.24