티스토리 뷰

학교공부/JSP

JSP - 2

날따라해봐요요롷게 2021. 3. 9. 20:10

CHARTER 4 / 5 / 6

 

CHARER 4 : 액션태그

  • 액션태그
  • forward
  • inlcude
  • param
  • 자바빈즈

CHARPTER 5 : 내장 객체

  • 내장 객체
  • request
  • response
  • out

CHAPTER 6 : 폼 태그

  • 폼 처리
  • form 태그
  • input 태그
  • select 태그
  • textarea 태그
  • 폼 데이터 처리

CHARER 4 : 액션태그 <% ~ %>

  • 액션 태그

: 액션 태그는 서버나 클라이언트에게 어떤 행동을 명령하는 태그이다.

액션 태그는 <% ~ %> 스크립트 태그를 따르지 않고 XML형식 <jsp : ~/> 형식을 사용한다.

액션 태그는 반드시 /> 형태로 끝나야한다.

  • forward : <jsp: forward page ="file name" />

: 현재 JSP 페이지에서 다른 페이지로 이동하는 태그

<html>
<head>
<title>first.jsp</title>
</head>
<body>
	<h3>이 파일은 first.jsp</h3>
	<jsp:forward page ="second.jsp"/>
	<p>===first.jsp 페이지===</p>
</body>
</html>

============================

<html>
<head>
<title>second.jsp</title>
</head>
<body>
	<h3>이 페이지는 second.jsp 페이지</h3>
	Today is : <%=new java.util.Date() %>
</body>
</html>

<jsp:forward file="second.jsp"/> 액션 태그를 사용하여 first.jsp 파일을 열었지만, second.jsp 파일로 이동하여 열리는 것을 볼 수 있다. forward를 사용하기 위해서 이동하고자 하는 파일은 같은 디렉토리에 존재해야 한다. 그렇지 않으면 절대경로로 지정해주어야한다.

 

  • inlcude <jsp:include page="FILE NAME" flush="false"/>

: include 액션 태그는 include 데릭티브 태그 처럼 현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그이다. 포함할 수 있는 외부 파일은 HTML, JSP, 서블릿 페이지

 

*flush : flush 속성 값은 설정한 외부 파일로 제어가 이동할 때 현재 JSP 페이지가 지금까지 출력 버퍼에 저장한 결과를 처리한다. 기본 값은 false이다.

 

◆ include 액션태그 와 forward 액션태그의 차이점

 : 둘 다 외부 파일을 포함한다는 점이 비슷하지만, include 액션 태그는 외부 파일이 실행된 후 현재 JSP 페이지로 제어를 반환한다. 또한 외부 파일의 실행내용이 현제 JSP 페이지의 출력 버퍼에 추가 저장되어 출력한다.

 

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<h3>이 파일은 include.jsp</h3>
	<jsp:include page="includeDate.jsp"></jsp:include>
	<h3>복귀</h3>
</body>
</html>

=================================

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<h3>이 파일은 includeDate.jsp</h3>
	<%=(new java.util.Date()).toLocaleString()%>
</body>
</html>

 

  • param : 

<jsp:forward page="FILE NAME">

      <jsp:param name="매개변수1" value="매개변수값1" />

</jsp:forward>

 

 : param 액션 태그는 현재 JSP 페이지에서 다른 페이지에 정보를 전달하는 태그이다.

해당 태그는 단독으로 사용되지 못한다. forward / include 태그의 내부에서 사용이 된다.

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<h3>param 액션 태그</h3>
	<jsp:forward page="param01_data.jsp">
	<jsp:param name="id" value="admin"/>
	<jsp:param value='<%=java.net.URLEncoder.encode("관리자")%>' name="name"/>
	</jsp:forward>
	
</body>
</html>


=========================================

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<p> 아이디 <%= request.getParameter("id") %>
		<%
			String name = request.getParameter("name");
		%>
	<p> 이름 : <%=java.net.URLDecoder.decode(name)%>
</body>
</html>

param01.jsp 파일 

 : forward 액션 태그 안에 param 액션태그를 넣어 사용한다.

매개변수로 id를 주고 value 값으로 admin을 준다.

java.URLEncoder.encode() 메소드를 사용하여 한글이 깨지지 않도록 한다.

 

param01_data.jsp 파일

 : 전송된 id와 name값을 받도록 request 내장 객체의 getParameter() 메소드를 사용한다.

name 값을 출력하기 위해 표현문 태그 <% ~ %> 를 작성한다.

java.net.URLDecoder.decode() 메소드를 사용하여 encdoe() 메소드를 사용하여 전송된 데이터를 받는다.

 

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<p>param 액션태그 </p>
	<jsp:include page="param02_data.jsp">
		<jsp:param name="title" value='<%=java.net.URLEncoder.encode("오늘의 날짜") %>' />
		<jsp:param name="date" value='<%=java.util.Calendar.getInstance().getTime() %>' />
	</jsp:include>
</body>
</html>

====================

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
		<%
			String title = request.getParameter("title");
		%>
		<h3><%=java.net.URLDecoder.decode(title)%></h3>
		Today is : <%=request.getParameter("date") %>
</body>
</html>

 

param02.jsp 파일

 : include 액션 태그 안에 param 액션태그를 삽입

매개변수명 = title , value = 오늘의 날짜 를 넘겨준다.

매개변수명 = date , value = java.util.~~ 메소드를 넘겨준다.

 

param02_data.jsp 파일

 : 전송된 title 값을 받도록 request.getParameter() 메소드 사용

title 값을 출력하도록 표현문 <% ~ %> 작성

전송된 date 값을 받도록 request.getParameter() 메소드 작성

 

  • 자바빈즈

 : JSP 페이지의 주요 기능 중 하나는 데이터를 보여주는 것

하나의 JSP 페이지에 데이터를 보여주기 위한 자바코드와 HTML 코드를 함께 작성하면 기능 확장 어려움

효율을 높이기 위해 화면을 출력하는 부분과 데이터를 처리하는 로직 부분을 구분하여 작성

로직부분의 코드 -> 자바빈즈 사용

 

JSP 페이지에서 화면을 표현하기 위한 계산식이나 자료의 처리를 담당하는 자바코드를 따로 분리하여 작성하는 것.

자바빈즈는 데이터를 담는 멤버변수인 property 와 데이터를 가져오거나 저장하는 메소드로 구성

 

규칙! - 자바 클래스는 java.io.Serializble 인터페이스 구현 - 매개변수가 없는 기본 생성자가 있어야한다. - 모든 멤버 변수인 property 는 private 접근 지정자로 설정 - 모든 멤버 변수인 property 는 get/set 메소드 존재 (get() -> 멤버변수에 저장된 값을 가져옴 / set() -> 멤버 변수에 값을 저장)

 

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<jsp:useBean id="date" class="java.util.Date"/>
	<p> <%
		out.print("오늘의 날짜 및 시각");
		%>
	<p><%=date%>
</body>
</html>

액션태그에서 자바빈즈인 useBean 을 사용하여 id 와 class 설정 

 

package ch04.com.dao;

public class Calculator {
	public int process(int n) {
		return n*n*n;
	}

=============

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<jsp:useBean id="bean" class = "ch04.com.dao.Calculator" />
	<%
		int m = bean.process(5);
		out.print("5의 세제곱 : " + m);
	%>
</body>
</html>

Calculator 클래스를 생성할 때 패키지 이름 설정.

매개변수 n을 세제곱 계산하여 이를 return 하는 process 메소드 작성

Calculator 클래스를 사용하는 useBean 액션 태그 작성

id 속성 값을 이용해 Calculator 클래스의 process 메소드 호출 -> 내장 객체 변수 m 을 통해 출력

 

 

 

package ch04.com.dao;

public class Person {
	private int id = 2019081108;
	private String name = "라라라";
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

========================

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request" />
	<p>아이디 : <%=person.getId() %></p>
	<p>이름 : <%=person.getName() %></p>
</body>
</html>

===================

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request" />
	<p>아이디 : <%=person.getId() %></p>
	<p>이름 : <%=person.getName() %></p>
		<%
			person.setId(20919238);
			person.setName("치치치");
		%>
		<jsp:include page="useBean03.jsp"/>
</body>
</html>

## setProperty

 : setProperty 액션 태그는 set메소드에 접근하여 자바빈즈의 멤버변수인 프로퍼티의 값을 저장하는 태그이다.

 

<jsp:setProperty name="member" property="id" value="admin"/>

<% out.println("아이디 : " + member.getId()); %>

 

- 폼 페이지로부터 전달되는 요청 파라미터의 값을 직접 저장하거나 자바빈즈의 프로퍼티로 변경하여 값을 저장

- 모든 자바빈즈 프로퍼티 이름과 동일하게 요청 파라미터를 설정할 수 있다.

 

  • name : useBean 태그에 id 속성 값으로 설정된 자바빈즈를 식별하기 위한 이름
  • property : 자바빈즈의 프로퍼티 이름. 
  • value : 변경할 자바빈즈의 프로퍼티 값
  • param : 자바빈즈의 프로퍼티 값을 전달하는 요청 파라미터의 이름. param과 value를 동시에 사용할 수 없다.
<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request" />
	<jsp:setProperty name="person" property="id" value="223094" />
	<jsp:setProperty name="person" property="name" value="홍길동" />
	<p> 아이디 : <% out.println(person.getId()); %>
	<p> 이 름 : <% out.println(person.getName()); %>
</body>
</html>

 : 자바 빈즈로 Person 클래스를 사용하도록 useBean 액션 태그 작성

uesBean 액션태그의 id속성 값을 통해 자바빈즈 Person의 프로퍼티 id와 name에 값을 저장하도록 setProperty 액션태그를 작성

id속성값을 통해 Person클래스의 get메소드를 호출하여 반환된 값을 out 내장 객체 변수를 이용하여 출력

 

## getProperty

 

<jsp:getProperty name="자바빈즈 식별이름" property="프로퍼티 이름" />

<% out.println(식별이름.getName()); %>

 

<%@ page contentType="text/html; charset=utf-8"%><html>
<head>
<title>Action Tag</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request" />
	<jsp:setProperty name="person" property="id" value="223094" />
	<jsp:setProperty name="person" property="name" value="홍길동" />
	<p> 아이디 : <jsp:getProperty name="person" property="id"/>
	<p> 이 름 : <jsp:getProperty name="person" property="name"/>
</body>
</html>

 : set프로퍼티에서는 표현문 태그를 이용해 out 내장객체를 이용해 출력했다.

그와 다르게 getProperty에서는 직접 액션태그를 작성하여 출력한다.

'학교공부 > JSP' 카테고리의 다른 글

JSP - 10  (0) 2021.04.15
JSP - 9  (0) 2021.04.06
JSP - 7  (0) 2021.03.24
JSP - 4  (0) 2021.03.09
JSP - 3  (0) 2021.03.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함