JSP day 2

유요한·2022년 11월 23일
0

JSP

목록 보기
3/13
post-thumbnail

디렉티브 태그

	<%@ page %>

현재 JSP 페이지에 대한 정보를 설정하는 태그이다. 되도록 페이지 최상단에 선언한다. import 속성을 제외하고는 딱 한번씩만 작성할 수 있다.

속성명

  1. language
    사용할 프로그래밍 언어
    (java)
  2. contentType
    생성할 문서의 콘텐츠 유형
    (text/html)
  3. pageEncoding
    페이지에 대한 인코딩 설정
    (EUC-KR / ISO-8859-1)
  4. import
    사용할 자바 클래스 추가
  5. session
    세션 사용 여부 설정
    (true)
  6. info
    페이지에 대한 설명 작성(주석처럼 사용)
  7. errorPage
    예외 발생시 이동할 페이지 설정
  8. isErrorPage
    오류페이지로 설정할것인지에 대한 여부 false
	<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="./myErrorPage.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>directiveTag</title>
</head>
<body>
	<h2>디렉티브 태그 연습</h2>
	Today is : <%=new Date() %>
	<%
		String str = null;
		str.length();
	%>
</body>
</html>
	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>myErrorPage</title>
</head>
<body>
	<h2 style="background: black; color:yellow; font-size:2em;">
		에러가 발생했습니다.
	</h2>
	<p>
		아주 심각한 오류가 발생하였습니다.<br>
		<a href="#">백신 프로그램 설치하기</a>			
	</p>
	<%
		/*
			exception 객체 : 예외를 담는 jsp 내장객체
			isErrorPage="true" 속성을 설정해 주어야 사용 가능하다.	
		*/
		out.println(exception);
	%>
</body>
</html>

include 디렉티브 태그

	<%@ include file="파일명" %>

현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함시키는 태그이다. 보통 header와 footer는 대부분의 페이지에 동일한 내용으로 작성되기 때문에 각 JSP 파일마다 그 코드들을 반복적으로 작성하는 것이 아니라 유지보수 및 편의를 위해 외부 파일로 만든 후 include 하여 사용한다.
리액트와 비슷한 효과이다.

	<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
	<h2 style="background:deeppink;">헤더 영역</h2>
	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>includeTest</title>
</head>
<body>
	<%@ include file="./header.jsp" %>
	<h4>------------현재 페이지 영역------------</h4>
	<p>
		반갑습니다 여러분 페라리 언제 사올거에요?<br>
		기다리다 지쳤어요 땡벌땡벌
	</p>
	<h4>-----------------------------------</h4>
	<%@ include file="./footer.jsp" %>
</body>
</html>
	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<h2 style="background: deepskyblue;">푸터 영역</h2>
<hr>
<p>
	Copyright &copy;정다솔
</p>
→ 여기서 보면 header / footer에서 전달할 것만 써주고 넘겨줬다.     

액션 태그

  • 행위를 지정하는 태그들
  • 정적인 HTML에다가 동적인 행동들을 지정할 수 있다. 예를들어 페이지 이동하는 것
  • 서버나 클라이언트에게 어떤 행동을 하도록 명렁하는 태그, 페이지와 페이지 사이를 제어하거나 다른 페이지의 실행 페이지의 실행 결과 내용을 현재 페이지에 포함시키거나 자바빈즈(객체)를 다루는 등의 다양한 기능을 제공한다. 액션태그는 XML 형식인 <jsp: />를 이용한다.
  1. <jsp:forward/>

다른 페이지로 이동, 페이지의 흐름을 제어하기 위한 역할
이것을 작성한 jsp에서는 아무리 작성해도 이것을 만나는 순간
바로 이동하므로, 이동용 jsp에 작성해 준다.

  1. <jsp:param/>

현재 페이지에서 다른 페이지로 값을 전달하기 위한 역할

	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <!-- 이게 없으면 한글이 깨진다.-->     
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>paramTest</title>
</head>
<body>
	<h2>아이 예뻐</h2>
	<!-- 이동용 jsp에 적어주는데 만약에 같이 보낼 것이 있다면
		 jsp:param을 사용한다. -->
	<jsp:forward page="./paramResult.jsp">
		<jsp:param value="apple" name="userid"/>
		<jsp:param value="abcd1234" name="userpw"/>
		<jsp:param value="김사과" name="username"/>
	</jsp:forward>
</body>
</html>
	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>paramResult</title>
</head>
<body>
	<h2>이동된 페이지</h2>
	<p>
		<!-- request는 내장객체 -->
		아이디 : <%=request.getParameter("userid")%>
	</p>
	<p>
		비밀번호 : <%=request.getParameter("userpw") %>
	</p>
	<p>
		이름 : <%=request.getParameter("username") %>
	</p>
</body>
</html>

  1. <jsp:useBean/>JSP의 표준 액션 태그를 통해 접근할 수 있는 자바 클래스로서 필드변수setter, getter 메소드로 이루어져 있다. 여러 데이터들을 포장해서 가지고 있는 형태로 구성되어 있다.

자바빈즈 개발규약

  1. 패키지화(default 패키지 사용 x → 인식불가)
    → src에 만들면 인식불가하고 src에 패키지를 만들고 만들어야 한다.
  2. 필드 변수 접근제어자 private으로 설정
    (접근은 메소드로만 가능하게 하기 위함)
  3. getter, setter 메소드는 반드시 public으로 설정
	package test;

public class testDTO {
	private int intdata;
	private double doubledata;
	private String strdata;
	
	
	
	public int getIntdata() {
		return intdata;
	}
	public void setIntdata(int intdata) {
		this.intdata = intdata;
	}
	public double getDoubledata() {
		return doubledata;
	}
	public void setDoubledata(double doubledata) {
		this.doubledata = doubledata;
	}
	public String getStrdata() {
		return strdata;
	}
	public void setStrdata(String strdata) {
		this.strdata = strdata;
	}
}
4. <jsp:setProperty/>

5. <jsp:getProperty/>
	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>beanTest</title>
</head>
<body>
	<form action="beanResult.jsp" method="get">
		정수 데이터 <input name="intdata"><br>
		실수 데이터 <input name="doubledata"><br>
		문자열 데이터 <input name="strdata"><br>
		<input type="submit">
	</form>
</body>
</html>
	<%@page import="test.testDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>beanResult</title>
</head>
<body>
	<%-- <%
		TestDTO dto = new TestDTO();
		int num1 = Integer.parseInt(request.getParameter("num1"));
		dto.setIntdata(num1);
		out.println(dto.getIntdata());
	%> --%>
	<!-- useBean은 객체를 사용하겠다고 선언하는 거다.
		 그렇기 때문에 id에는 객체의 이름을 쓰면 되고
		 class 어떤 타입의 DTO인지 적어준다.
		  <jsp:useBean id="dto" class="test.testDTO"/> = TestDTO dto = new TestDTO(); -->
	<jsp:useBean id="dto" class="test.testDTO"/>
	<!--
		실제 파라미터의 name과 dto의 필드명이 동일하다면 param, value 속성을 생략 가능
		생략시 알아서 같은 name을 가지고 있는 param의 값으로 세팅
	-->
	
	<!-- property : 내가 세팅해줄 필드명을 적으면된다.
		 name	  : 대상 객체 -->
	<jsp:setProperty property="intdata" name="dto"/>
	<jsp:getProperty property="intdata" name="dto"/>                                                                       
</body>
</html>

자바빈즈 태그

  • 객체생성
    <jsp:useBean class="패키지명.클래스명" id="객체명">
  • 객체 필드 세팅
    <jsp:setProperty property="필드명" value="세팅값" name="객체명">
  • 객체 필드값 접근
    <jsp:getProperty property="필드명" name="객체명">

실습

profile
발전하기 위한 공부

0개의 댓글