JSP-작업
이 장에서는 JSP의 작업에 대해 설명합니다. 이러한 조치는 XML 구문의 구성을 사용하여 서블릿 엔진의 동작을 제어합니다. 동적으로 파일을 삽입하고, JavaBeans 구성 요소를 재사용하고, 사용자를 다른 페이지로 전달하거나, Java 플러그인 용 HTML을 생성 할 수 있습니다.
XML 표준을 준수하므로 Action 요소에 대한 구문은 하나뿐입니다.
<jsp:action_name attribute = "value" />
액션 요소는 기본적으로 미리 정의 된 기능입니다. 다음 표는 사용 가능한 JSP 작업을 나열합니다.
S. 아니. | 구문 및 목적 |
---|---|
1 | jsp:include 페이지 요청시 파일을 포함합니다. |
2 | jsp:useBean JavaBean을 찾거나 인스턴스화합니다. |
삼 | jsp:setProperty JavaBean의 속성을 설정합니다. |
4 | jsp:getProperty JavaBean의 속성을 출력에 삽입합니다. |
5 | jsp:forward 요청자를 새 페이지로 전달합니다. |
6 | jsp:plugin Java 플러그인에 대한 OBJECT 또는 EMBED 태그를 만드는 브라우저 별 코드를 생성합니다. |
7 | jsp:element XML 요소를 동적으로 정의합니다. |
8 | jsp:attribute 동적으로 정의 된 XML 요소의 속성을 정의합니다. |
9 | jsp:body 동적으로 정의 된 XML 요소의 본문을 정의합니다. |
10 | jsp:text JSP 페이지 및 문서에서 템플릿 텍스트를 작성하는 데 사용됩니다. |
공통 속성
모든 Action 요소에 공통적 인 두 가지 속성이 있습니다. id 속성 및 scope 속성.
ID 속성
id 속성은 Action 요소를 고유하게 식별하고 JSP 페이지 내에서 작업을 참조 할 수 있도록합니다. Action이 개체의 인스턴스를 만드는 경우 암시 적 개체 PageContext를 통해 ID 값을 사용하여 참조 할 수 있습니다.
범위 속성
이 속성은 Action 요소의 라이프 사이클을 식별합니다. 범위 속성은 ID와 연관된 개체의 수명을 결정하므로 id 속성과 범위 속성은 직접 관련됩니다. 범위 속성에는 네 가지 가능한 값이 있습니다.(a) page, (b)request, (c)session, 및 (d) application.
<jsp : include> 액션
이 작업을 통해 생성중인 페이지에 파일을 삽입 할 수 있습니다. 구문은 다음과 같습니다.
<jsp:include page = "relative URL" flush = "true" />
달리 include 지시문, JSP 페이지가 서블릿으로 변환 될 때 파일을 삽입하는이 조치는 페이지가 요청 될 때 파일을 삽입합니다.
다음 표는 포함 작업과 관련된 속성을 나열합니다-
S. 아니. | 속성 및 설명 |
---|---|
1 | page 포함 할 페이지의 상대 URL입니다. |
2 | flush 부울 속성은 포함 된 리소스가 포함되기 전에 버퍼가 플러시되었는지 여부를 결정합니다. |
예
다음 두 파일을 정의하겠습니다. (a)date.jsp 과 (b) main.jsp 다음과 같이-
다음은의 내용입니다 date.jsp 파일-
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
다음은의 내용입니다 main.jsp 파일-
<html>
<head>
<title>The include Action Example</title>
</head>
<body>
<center>
<h2>The include action Example</h2>
<jsp:include page = "date.jsp" flush = "true" />
</center>
</body>
</html>
이제이 모든 파일을 루트 디렉토리에 보관하고 액세스를 시도해 보겠습니다. main.jsp. 다음과 같은 출력을 받게됩니다.
The include action Example
Today's date: 12-Sep-2010 14:54:22
<jsp : useBean> 액션
그만큼 useBean액션은 매우 다양합니다. 먼저 id 및 범위 변수를 사용하여 기존 개체를 검색합니다. 개체를 찾을 수 없으면 지정된 개체를 만들려고합니다.
빈을로드하는 가장 간단한 방법은 다음과 같습니다.
<jsp:useBean id = "name" class = "package.class" />
Bean 클래스가로드되면 다음을 사용할 수 있습니다. jsp:setProperty 과 jsp:getProperty Bean 특성을 수정하고 검색하는 조치.
다음 표는 useBean 작업과 관련된 속성을 나열합니다-
S. 아니. | 속성 및 설명 |
---|---|
1 | class Bean의 전체 패키지 이름을 지정합니다. |
2 | type 개체를 참조 할 변수의 유형을 지정합니다. |
삼 | beanName java.beans.Beans 클래스의 인스턴스화 () 메소드에 지정된대로 Bean의 이름을 제공합니다. |
이제 논의하겠습니다 jsp:setProperty 그리고 jsp:getProperty 이러한 조치와 관련된 유효한 예제를 제공하기 전에 조치를 취하십시오.
<jsp : setProperty> 액션
그만큼 setPropertyaction은 Bean의 속성을 설정합니다. Bean은이 조치 전에 이전에 정의되어 있어야합니다. setProperty 작업을 사용하는 두 가지 기본 방법이 있습니다-
당신이 사용할 수있는 jsp:setProperty 이후, 그러나 외부 jsp:useBean 아래에 주어진 요소-
<jsp:useBean id = "myName" ... />
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
이 경우 jsp:setProperty 새 빈이 인스턴스화되었는지 또는 기존 빈이 발견되었는지에 관계없이 실행됩니다.
jsp : setProperty가 나타날 수있는 두 번째 컨텍스트는 jsp:useBean 아래에 주어진 요소-
<jsp:useBean id = "myName" ... >
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
</jsp:useBean>
여기에서 jsp : setProperty는 기존 객체가 발견 된 경우가 아니라 새 객체가 인스턴스화 된 경우에만 실행됩니다.
다음 표에는 setProperty 액션-
S. 아니. | 속성 및 설명 |
---|---|
1 | name 속성을 설정할 빈을 지정합니다. Bean은 이전에 정의되어 있어야합니다. |
2 | property 설정하려는 속성을 나타냅니다. "*"값은 이름이 Bean 특성 이름과 일치하는 모든 요청 매개 변수가 적절한 setter 메소드로 전달됨을 의미합니다. |
삼 | value 지정된 속성에 할당 할 값입니다. 매개 변수 값이 널이거나 매개 변수가 존재하지 않는 경우 setProperty 조치가 무시됩니다. |
4 | param param 속성은 속성이 수신 할 값을 가진 요청 매개 변수의 이름입니다. value와 param을 모두 사용할 수는 없지만 둘 다 사용할 수는 없습니다. |
<jsp : getProperty> 액션
그만큼 getProperty action은 주어진 속성의 값을 검색하고 문자열로 변환하고 마지막으로 출력에 삽입하는 데 사용됩니다.
getProperty 조치에는 두 가지 속성 만 있으며 둘 다 필수입니다. getProperty 작업의 구문은 다음과 같습니다.
<jsp:useBean id = "myName" ... />
...
<jsp:getProperty name = "myName" property = "someProperty" .../>
다음 표에는 다음과 관련된 필수 속성이 나열되어 있습니다. getProperty 액션-
S. 아니. | 속성 및 설명 |
---|---|
1 | name 검색 할 속성이있는 Bean의 이름입니다. Bean은 이전에 정의되어 있어야합니다. |
2 | property 속성 속성은 검색 할 Bean 속성의 이름입니다. |
예
우리의 예제에서 더 사용될 테스트 빈을 정의 해보자.
/* File: TestBean.java */
package action;
public class TestBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
위의 코드를 생성 된 코드로 컴파일하십시오. TestBean.class 파일에 TestBean.class를 복사했는지 확인하십시오. C:\apache-tomcat-7.0.2\webapps\WEB-INF\classes\action 폴더 및 CLASSPATH 변수도이 폴더로 설정해야합니다.
이제 다음 코드를 사용하십시오. main.jsp파일. 이것은 빈을로드하고 간단한 문자열 매개 변수를 설정 / 가져옵니다.
<html>
<head>
<title>Using JavaBeans in JSP</title>
</head>
<body>
<center>
<h2>Using JavaBeans in JSP</h2>
<jsp:useBean id = "test" class = "action.TestBean" />
<jsp:setProperty name = "test" property = "message"
value = "Hello JSP..." />
<p>Got message....</p>
<jsp:getProperty name = "test" property = "message" />
</center>
</body>
</html>
이제 액세스를 시도해 보겠습니다. main.jsp, 다음 결과를 표시합니다-
Using JavaBeans in JSP
Got message....
Hello JSP...
<jsp : forward> 액션
그만큼 forward action은 현재 페이지의 작업을 종료하고 요청을 정적 페이지, 다른 JSP 페이지 또는 Java Servlet과 같은 다른 리소스로 전달합니다.
다음은 forward 액션-
<jsp:forward page = "Relative URL" />
다음 표에는 전달 작업과 관련된 필수 속성이 나열되어 있습니다.
S. 아니. | 속성 및 설명 |
---|---|
1 | page 정적 페이지, 다른 JSP 페이지 또는 Java Servlet과 같은 다른 리소스의 상대 URL로 구성되어야합니다. |
예
다음 두 파일을 다시 사용하겠습니다. (a) date.jsp 과 (b) main.jsp 다음과 같이-
다음은의 내용입니다 date.jsp 파일-
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
다음은의 내용입니다 main.jsp 파일-
<html>
<head>
<title>The include Action Example</title>
</head>
<body>
<center>
<h2>The include action Example</h2>
<jsp:forward page = "date.jsp" />
</center>
</body>
</html>
이제이 모든 파일을 루트 디렉토리에 보관하고 액세스를 시도해 보겠습니다. main.jsp. 그러면 아래와 같은 결과가 표시됩니다.
여기서는 메인 페이지의 콘텐츠를 버리고 전달 된 페이지의 콘텐츠 만 표시했습니다.
Today's date: 12-Sep-2010 14:54:22
<jsp : plugin> 액션
그만큼 plugin작업은 JSP 페이지에 Java 구성 요소를 삽입하는 데 사용됩니다. 브라우저 유형을 결정하고<object> 또는 <embed> 필요에 따라 태그.
필요한 플러그인이 없으면 플러그인을 다운로드 한 다음 Java 구성 요소를 실행합니다. Java 구성 요소는 Applet 또는 JavaBean 일 수 있습니다.
플러그인 작업에는 Java 구성 요소를 형식화하는 데 사용되는 공통 HTML 태그에 해당하는 여러 속성이 있습니다. 그만큼<param> 요소는 매개 변수를 Applet 또는 Bean에 보내는데도 사용할 수 있습니다.
다음은 플러그인 작업을 사용하는 일반적인 구문입니다.
<jsp:plugin type = "applet" codebase = "dirname" code = "MyApplet.class"
width = "60" height = "80">
<jsp:param name = "fontcolor" value = "red" />
<jsp:param name = "background" value = "black" />
<jsp:fallback>
Unable to initialize Java Plugin
</jsp:fallback>
</jsp:plugin>
관심이있는 경우 일부 애플릿을 사용하여이 작업을 시도 할 수 있습니다. 새로운 요소,<fallback> 요소는 구성 요소가 실패 할 경우 사용자에게 보낼 오류 문자열을 지정하는 데 사용할 수 있습니다.
The <jsp:element> Action
The <jsp:attribute> Action
The <jsp:body> Action
그만큼 <jsp:element>, <jsp:attribute> 과 <jsp:body>동작은 XML 요소를 동적으로 정의하는 데 사용됩니다. 동적이라는 단어는 XML 요소가 컴파일시 정적으로 생성되는 것이 아니라 요청시 생성 될 수 있음을 의미하기 때문에 중요합니다.
다음은 XML 요소를 동적으로 정의하는 간단한 예입니다.
<%@page language = "java" contentType = "text/html"%>
<html xmlns = "http://www.w3c.org/1999/xhtml"
xmlns:jsp = "http://java.sun.com/JSP/Page">
<head><title>Generate XML Element</title></head>
<body>
<jsp:element name = "xmlElement">
<jsp:attribute name = "xmlElementAttr">
Value for the attribute
</jsp:attribute>
<jsp:body>
Body for XML element
</jsp:body>
</jsp:element>
</body>
</html>
이것은 런타임에 다음 HTML 코드를 생성합니다-
<html xmlns = "http://www.w3c.org/1999/xhtml" xmlns:jsp = "http://java.sun.com/JSP/Page">
<head><title>Generate XML Element</title></head>
<body>
<xmlElement xmlElementAttr = "Value for the attribute">
Body for XML element
</xmlElement>
</body>
</html>
<jsp : text> 액션
그만큼 <jsp:text>조치를 사용하여 JSP 페이지 및 문서에 템플리트 텍스트를 작성할 수 있습니다. 다음은이 작업에 대한 간단한 구문입니다.
<jsp:text>Template data</jsp:text>
템플릿 본문에는 다른 요소가 포함될 수 없습니다. 텍스트와 EL 표현식 만 포함 할 수 있습니다 (참고-EL 표현식은 다음 장에서 설명합니다). XML 파일에서는 다음과 같은 표현식을 사용할 수 없습니다.${whatever > 0},보다 큼 기호는 불법이기 때문입니다. 대신gt 다음과 같은 형태 ${whatever gt 0} 또는 대안은 값을 CDATA 부분.
<jsp:text><![CDATA[<br>]]></jsp:text>
포함해야하는 경우 DOCTYPE 예를 들어 선언 XHTML, 당신은 또한 사용해야합니다 <jsp:text> 다음과 같이 요소-
<jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">]]></jsp:text>
<head><title>jsp:text action</title></head>
<body>
<books><book><jsp:text>
Welcome to JSP Programming
</jsp:text></book></books>
</body>
</html>
위의 예를 사용하거나 사용하지 않고 시도하십시오. <jsp:text> 동작.