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 |