66일 차 - Scope, JSTL, MVC모델 (23.03.31)

yvonne·2023년 3월 31일
0

📂JSP

목록 보기
6/7
post-thumbnail

1. JSP

⭐⭐⭐ SCOPE

  • 웹 서버에서 객체 또는 변수가 생성된후 유효 할 수 있는 범위를 말한다.
  • 총 4가지 종류의 scope가 존재 한다.

    ✔ Page : 페이지 내에서 지역변수처럼 사용
    ✔ Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용
    ✔ Session : 웹 브라우저 별로 변수가 관리되는 경우 사용
    ✔ Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용
    (모든 클라이언트에게공통적으로 무언가를 보여 줄때 사용)

               
Scope 종류범위활용방법JSP 내장 객체Servlet 객체
Page Scope요청된 page 내부에서 사용지역변수처럼 활용 JSP에서 사용pageContext
Request Scope요청부터 응답까지Forward를 통해 데이터를 넘길 때 사용requestHttpServletRequest
Session ScopeWeb Browser 종료 또는 설정한 시간 동안 사용사용자별로 정보를 저장할 때 (ex.장바구니)sessionHttpServletRequest의 getSession()메소드를 이용하여 session 객체를 얻는다
HttpSession session = request.getSessioin(false);
Application ScopeWeb Application이 종료될 때까지 사용사용자에게 공통적으로 무언가를 보여주고자할 때applicationgetServletContext();로 얻는다
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

🔎 JSTL 라이브러리

  • <c:out> : 출력 태그
  • <c:set> : 변수 설정 태그
  • <c:remove> : 변수 제거 태그
  • <c:if> : 제어문 태그
  • <c:choose> : 제어문(switch) 태그

✔ 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>
  • 결과




  • <c:forEach> 태그 : 반복문

✔ 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>
  • 결과





2. JSP + SQL

📌 MVC 모델

✔ 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

profile
개발 연습장

0개의 댓글