✔ Page : 페이지 내에서 지역변수처럼 사용
✔ Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용
✔ Session : 웹 브라우저 별로 변수가 관리되는 경우 사용
✔ Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용
(모든 클라이언트에게공통적으로 무언가를 보여 줄때 사용)
Scope 종류 | 범위 | 활용방법 | JSP 내장 객체 | Servlet 객체 |
---|---|---|---|---|
Page Scope | 요청된 page 내부에서 사용 | 지역변수처럼 활용 JSP에서 사용 | pageContext | |
Request Scope | 요청부터 응답까지 | Forward를 통해 데이터를 넘길 때 사용 | request | HttpServletRequest |
Session Scope | Web Browser 종료 또는 설정한 시간 동안 사용 | 사용자별로 정보를 저장할 때 (ex.장바구니) | session | HttpServletRequest의 getSession()메소드를 이용하여 session 객체를 얻는다 HttpSession session = request.getSessioin(false); |
Application Scope | Web Application이 종료될 때까지 사용 | 사용자에게 공통적으로 무언가를 보여주고자할 때 | application | getServletContext();로 얻는다 ServletContext application = getServletContext(); |
- ✔scope_el.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> <form action="objelOk.jsp" method="get"> ̵아이디 : <input type="text" name="id"><br /> 패스워드 : <input type="password" name="pw"> <input type="submit" value="login"> </form> <% application.setAttribute("application_name", "application_value"); // 톰캣 서버 끝날 때까지 사용가능 session.setAttribute("session_name", "session_value"); // 톰캣에 지정된 섹션 타임 끝날 때까지 사용가능 pageContext.setAttribute("page_name", "page_value"); // private처럼 자기 자신에서만 출력 가능 request.setAttribute("request_name", "request_value"); // 포워딩에서만 사용가능 %> </body> </html>
- ✔ objelOk.jsp
pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String id = request.getParameter("id"); String pw = request.getParameter("pw"); %> 아이디 :<%=id%> <br /> 비밀번호 :<%=pw%> <br /> <hr /> applicationScope : ${ applicationScope.application_name }<br /> //값 출력 sessionScope : ${ sessionScope.session_name }<br /> //값 출력 pageScope : ${ pageScope.page_name }<br /> //값 출력 requestScope : ${ requestScope.request_name } </body> </html>
- 결과
✔ JSTL 태그 사용해보기
<%@page import="edu.global.ex.vo.EmpVO"%> <%@page import="edu.global.ex.dao.EmpDAO"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ 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> <% out.print("AAA" + "<br>"); %> <%="AAA"%><br> ${"AAA" } <br> <c:out value="hello world" /> <br> <c:out value="hello"></c:out> <br> <c:out value='${"안녕하세여"}'></c:out> <br> <c:set var="name1" value="홍길덩" /> <c:set var="name2" value="홍길순" /> <% pageContext.setAttribute("name1", "홍길도옹"); %> <!-- 변수 값 바꾸기 --> ${name1} <br> ${name2} <br> <c:remove var="name1" /> ${name1} <br> ${name2} <br> <!-- c:if 태그 : (조건, 변수) 조건이 true일 때만 내용 반환 --> <c:if test="${10 > 20}" var="result1"> 10은 20보다 크다.<br> </c:if> result1 : ${result1} <br> <c:if test="${10 < 20}" var="result2"> 20은 10보다 크다.<br> </c:if> result2 : ${result2} <hr> <c:set var="user" value="abcd123"/> <c:choose> <c:when test="${user=='admin'}"> 관리자 페이지 </c:when> <c:otherwise> ${user }님 반갑습니다.</c:otherwise> </c:choose> <!-- el은 메모리에 올린 것을 가져올 때 사용한다--> <% pageContext.setAttribute("numList", new String[]{"1","2","3","4","5"}); %> <ul> <c:forEach var="num" items="${numList}" begin="0" end="3"> <li>${num}</li> </c:forEach> </ul> <% List<String> fruits = new ArrayList<>(); fruits.add("apple"); fruits.add("banana"); fruits.add("pineapple"); fruits.add("kiwi"); fruits.add("melon"); pageContext.setAttribute("fruits", fruits); %> <ul> <c:forEach var="fruit" items ="${fruits}" begin ="0" end="5"> <li>${fruit}</li> </c:forEach></ul> <hr> <% EmpDAO dao = new EmpDAO(); List<EmpVO> enames = dao.empSelect(); pageContext.setAttribute("enames", enames); %> <ul> <c:forEach var="emp" items="${enames}" begin="0" end="12"> <li>${emp.ename} </c:forEach> </ul> </body> </html>
- 결과
✔ JSTL 활용해서 구구단 짜기
<table border="1"> <c:forEach var = "i" begin="1" end="9"> <tr> <c:forEach var = "j" begin="2" end="9"> <td>${j} x ${i } = ${i * j }</td> </c:forEach> </tr> </c:forEach> </table>
- 결과
✔ sql - 생성
create table mvc_board( bid number(4) primary key, bname varchar2(50), btitle varchar2(100), bcontent varchar2(1000), bdate date default sysdate, bhit number(4) default 0, bgroup number(4), bstep number(4), bindent number(4) ); commit; create sequence mvc_board_seq; desc mvc_board; insert into mvc_board (bid, bname, btitle, bcontent, bhit, bgroup, bstep, bindent) values (mvc_board_seq.nextval, 'test' , '테스트', '테스트', 0, mvc_board_seq.currval, 0, 0); select * from mvc_board; insert into mvc_board (bid, bname, btitle, bcontent, bhit, bgroup, bstep, bindent) values (mvc_board_seq.nextval, 'test' , '테스트', '테스트', 0, mvc_board_seq.currval, 0, 0); insert into mvc_board (bid, bname, btitle, bcontent, bhit, bgroup, bstep, bindent) values (mvc_board_seq.nextval, 'test' , '테스트', '테스트', 0, mvc_board_seq.currval, 0, 0); insert into mvc_board (bid, bname, btitle, bcontent, bhit, bgroup, bstep, bindent) values (mvc_board_seq.nextval, 'test' , '테스트', '테스트', 0, mvc_board_seq.currval, 0, 0);
✔ eclipse - servlet_mj_borad