JSP тагове за действие

Какво е JSP действие?

JSP действията използват конструкцията в синтаксиса на XML, за да контролират поведението на сървлет машината. Можем динамично да вмъкнем файл, да използваме повторно компонентите на beans, да препратим потребителя към друга страница и т.н. чрез JSP действия като включване и препращане. За разлика от директивите, действията се преоценяват при всяко отваряне на страницата.

Синтаксис:

<jsp:action_name attribute="value" />

В този урок ще научите за JSP стандартните действия. Етикетите за стандартно действие JSP се използват за контролиране на поведението на сървлет машината.

Списък на често използваните маркери за действие в JSP

В JSP има 11 вида стандартни маркери за действие и ето пълния им списък.

Име на маркер за действие Синтаксис Descriptйон
jsp:useBean Използва се за извикване и използване на beans в JSP страницата.
jsp: включване Включва друг JSP файл в текущия файл по време на обработка на заявката.
jsp:setProperty Задава свойството на bean.
jsp:getProperty Извлича свойството на bean и го преобразува в низ за изход.
jsp: напред Препраща заявката към друга JSP или статична страница.
jsp: плъгин Въвежда Java компоненти като аплети или бобове в JSP и автоматично генерира тагове.
jsp: тяло Дефинира XML елементи, които се генерират динамично по време на обработка на заявка.
jsp:текст шаблонен текст Използва се за вмъкване на шаблонен текст в JSP страници, съдържащ само текст и EL изрази.
jsp:параметр Подава параметри в действието jsp:plugin за добавяне на допълнителни данни.
jsp:атрибут Дефинира XML атрибути, които се генерират динамично.
jsp: изход Указва XML или DOCTYPE декларацията, която да се използва в изхода.

jsp:useBean

  • Това име на действие се използва, когато искаме да използваме beans в JSP страницата.
  • С този етикет можем лесно да извикаме bean.

Синтаксис на jsp: UseBean:

<jsp:useBean id="" class="" />

Тук той указва идентификатора за този bean и класът е пълен път на bean класа

Пример:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Action JSP1</title>
</head>
<body>
<jsp:useBean id="name" class="demotest.DemoClass">
</body>
</html>

Обяснение на кода:

Кодов ред 10: В горния код използваме „идентификатор на bean“ и „път на класа“ на bean.

jsp: включване

  • Използва се и за вмъкване на jsp файл в друг файл, точно като включването директиви.
  • Добавя се по време на фазата на обработка на заявката

Синтаксис на jsp:include

<jsp:include page="page URL" flush="true/false">

Пример:

Action_jsp2 (Кодов ред 10) включваме файл date.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Date Guru JSP</title>
</head>
<body>
<jsp:include page="date.jsp" flush="true" />
</body>
</html>

Дата.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p>
Today's date: <%= {new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>

Обяснение на кода:

Action_jsp2.jsp

Кодов ред 10: В първия файл включваме файла date.jsp в action_jsp2.jsp

Date.jsp:

Кодов ред 11: Отпечатваме днешната дата в кодов ред 11 в date.jsp

Когато изпълните кода, изходът е следният.

jsp: включване

Изход:

  • Той показва днешната дата с времето, тъй като файлът с дата е включен в основния jsp

jsp:setProperty

  • Това свойство на стандартните действия в JSP се използва за задаване на свойството на компонента.
  • Трябва да дефинираме bean преди да зададем свойството

Синтаксис:

<jsp:setproperty name="" property="" >

Тук името дефинира bean-а, чието свойство е зададено и свойство, което искаме да зададем. Също така, можем да зададем атрибут стойност и param. Тук стойността не е задължителна и тя определя стойността, която се присвоява на свойството. Тук param е името на параметъра на заявката, използвайки чиято стойност може да бъде извлечена. Примерът за setproperty ще бъде демонстриран по-долу с getproperty

jsp:getProperty

  • Това свойство се използва за получаване на свойството на зърна.
  • Преобразува се в низ и накрая се вмъква в изхода.

Синтаксис:

<jsp:getAttribute name="" property="" >

Тук трябва да се дефинира името на компонента, от който трябва да се извлече свойството и компонента. Атрибутът на свойство е името на свойството на компонента, което трябва да бъде извлечено.

Пример за setProperty и getProperty:

TestBean.java:

package demotest;

import java.iO.Serializable;

public class TestBean implements Serializable{
	
	private String msg = "null";
	
	public String getMsg() {
		return msg;
	}
	
	public void setMsg(String msg) {
		this.msg = msg;
	}
}

Action_jsp3.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action 3</title>
</head>
<body>
<jsp:useBean id="GuruTest" class="demotest.TestBean" />
<jsp:setProperty name="GuruTest" property="msg" value="GuruTutorial" />
<jsp:getProperty name="GuruTest" property="msg" />
</body>
</html>

Обяснение на кода:

TestBean.java:

Кодов ред 5: TheTestBean имплементира сериализуемия клас. Това е bean клас със сетери за получаване в кода.

Кодов ред 7: Тук приемаме променливата частен низ msg като „нулева“

Кодов ред 9-14: Тук използваме гетери и сетери на променлива „msg“.

Action_jsp3.jsp

Кодов ред 10: Тук използваме етикет „useBean“, където той указва bean-а, т.е. TestBean, който трябва да се използва в този jsp клас

Кодов ред 11: Тук задаваме стойността за свойството msg за bean TestBean като „GuruTutorial“.

CodeLine12: Тук, използвайки getProperty, получаваме стойността на свойството msg за bean TestBean, т.е. GuruTutorial, което е там в изхода

Когато изпълните горния код, получавате следния изход:

jsp:getProperty

Изход:

В този пример, използвайки TestBean, ние се опитваме да зададем свойството „gurutest“ с помощта на setProperty и да получим стойността на свойството с помощта на getProperty като „GuruTutorial“

jsp: напред

Използва се за препращане на заявката към друга jsp или друга статична страница.

Тук заявката може да бъде препратена без параметри или с параметри.

Синтаксис:

<jsp:forward page="value">

Тук стойността представлява къде трябва да бъде препратена заявката.

Пример:

Action_jsp41.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action JSP1</title>
</head>
<body>
<jsp:forward page="jsp_action_42.jsp" />
</body>
</html>

Jsp_action_42.jsp

Guru Action JSP2</title>
</head>
<body>
<a>This is after forward page</a>
</body>
</html>

Обяснение на кода

Action_jsp41.jsp

Кодов ред 10: Тук използваме forward JSP Action, за да препратим заявката към страницата, спомената в атрибута, т.е. jsp_action_42.jsp

Jsp_action_42.jsp

Кодов ред 10: След като извикаме action_jsp41.jsp, заявката се препраща към тази страница и получаваме резултата като „Това е след страницата за препращане“.

Когато изпълним горния код, получаваме следния изход

jsp: напред

Изход:

Извикваме action_jsp41.jsp, но заявката се препраща към jsp_action_42.jsp и получаваме резултата от тази страница като „Това е след страницата за препращане“.

jsp: плъгин

  • Използва се за въвеждане Java компоненти в jsp, т.е. Java компонентите могат да бъдат или аплет, или bean.
  • Открива браузъра и добавя или JSP тагове във файла

Синтаксис:

<jsp:plugin type="applet/bean" code="objectcode" codebase="objectcodebase">
  • Тук типът определя или обект, или bean
  • Кодът указва име на клас на аплет или компонент
  • Кодовата база съдържа основния URL адрес, който съдържа файлове на класове

jsp:параметр

  • Това е дъщерен обект на обекта на плъгина, описан по-горе
  • Той трябва да съдържа едно или повече действия за предоставяне на допълнителни параметри.

Синтаксис:

<jsp:params>
<jsp:param name="val" value="val"/ >
</jsp:params>

Пример за плъгин и парам

Action_jsp5.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Action guru jsp5</title>
</head>
<body>
<jsp:plugin type="bean" code="Student.class" codebase="demotest.Student">
  <jsp:params>
     <jsp:param name="id" value="5" />
     <jsp:param name="name" value="guru" />
  </jsp:params>
</jsp:plugin>
</body>
</html>

Студент.java

package demotest; 

import java.io.Serializable;

public class Student implements Serializable {
	
	public String getName () { 
		return name; 
	}
	public void setName (String name) {
		this.name = name;
	}
	public int getId() { 
		return id; 
	} 
	public void setId (int id) { 
		this.id = id; 
	} 
	private String name = "null"; 
	private int id = 0;
	
}

Обяснение на кода:

Action_jsp5.jsp

Кодов ред 10: Тук вземаме jsp: plugin обект, където вземаме три атрибута

  • Тип – в случая е боб
  • Кодово име на файла
  • Codebase – път с името на пакета

Кодов ред 11-14: Тук вземаме jsp: params обект, под който има дъщерен param обект с атрибутите име и стойност, и задаваме стойностите на id и name в тези атрибути.

Студент.java

Код 7-17: Използваме гетери и сетери за id и име на променливи

Код 19-20: инициализираме променливи id и name.

Тук ще получим изход в случай, че зададените стойности на param ще бъдат използвани в Student Bean. В този случай няма да имаме изход, тъй като просто задаваме и получаваме стойности на param, но не го отпечатваме никъде.

jsp: тяло

  • Този таг се използва за динамично дефиниране на XML, т.е Елементи може да генерира по време на заявка, отколкото по време на компилация.
  • Той всъщност дефинира XML, който се генерира динамично тялото на елемента.

Синтаксис:

<jsp:body></jsp:body>

Тук пишем XML body таг в тези тагове

jsp:атрибут

  • Този таг се използва за динамично дефиниране на XML, т.е. елементите могат да бъдат генерирани по време на заявка, отколкото по време на компилация
  • Той всъщност дефинира атрибута на XML, който ще се генерира динамично.

Синтаксис:

<jsp:attribute></jsp:attribute>

Тук пишем атрибутен таг на XML.

Пример за тяло и атрибут:

Action_jsp6.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Action Guru JSP6</title>
</head>
<body>
<jsp:element name="GuruXMLElement">
<jsp:attribute name="GuruXMLattribute">
Value
</jsp:attribute>
<jsp:body>Guru XML</jsp:body>
</jsp:element>
</body>
</html>

Обяснение на кода:

Кодов ред 10: Тук дефинираме елемент, който се генерира динамично като XML, а името му ще бъде GuruXMLElement

Кодов ред 11-13: Тук дефинираме атрибут, който ще представлява XML атрибут на динамично генерирания XML.

Кодов ред 14: Тук имаме действие на тялото, където пишем тялото на XML, което ще бъде генерирано в динамичен XML.

Когато изпълните горния код, получавате следния изход:

jsp:атрибут

Изход:

Тук получаваме изхода от етикета body на генерирания XML.

jsp:текст

  • Използва се за шаблониране на текст в JSP страници.
  • Тялото му не съдържа никакви други елементи и съдържа само текст и EL изрази.

Синтаксис:

<jsp:text>template text</jsp:text>

Тук текстът на шаблона се отнася само до текст на шаблон (който може да бъде всеки общ текст, който трябва да бъде отпечатан на jsp) или всеки EL израз.

Пример:

Action_jsp7.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action JSP7</title>
</head>
<body>
<jsp:text>Guru Template Text</jsp:text>
</body>
</html>

Обяснение на кода:

Кодов ред 10: Тук вземаме текстов обект, за да отпечатаме текста на шаблона

Когато изпълните горния код, получавате следния изход

jsp:текст

Изход:

Получаваме текст на шаблон на Guru, който се поставя в текстови обекти за действие.

jsp: изход

  • Той определя XML декларацията или DOCTYPE декларацията на jsp
  • XML декларацията и DOCTYPE се декларират от изхода

Синтаксис:

<jsp:output doctype-root-element="" doctype-system="">

Тук doctype-root-element показва основния елемент на XML документ в DOCTYPE. Doctype-system показва doctype, който се генерира в изхода и дава системен литерал

Пример:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Action Guru JSP8</title>
</head>
<body>
<jsp:output doctype-root-element="html PUBLIC" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
</body>
</html>

Обяснение на кода:

Кодов ред 10: Тук използваме изходен обект за действие, за да генерираме DOCTYPE и вътрешно той ще бъде генериран в този формат:

Няма да има никакви резултати за това, тъй като те ще бъдат генерирани вътрешно.