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

⚡ Умно обобщение

JSP Action Tags използва XML синтаксис за контрол на поведението на servlet engine, което позволява на разработчиците да включват файлове, да препращат заявки, да работят с JavaBeans и вграждане на динамично съдържание по време на обработка на заявки.

  • ???? ️ Стандартен комплект: Единадесет стандартни тага за действия обработват includes, forwards, beans, plugins и XML изход.
  • 📜 XML синтаксис: Таговете за действие следват стриктно XML формат и се преоценяват при всяка заявка.
  • 🔗 Интеграция на бийн: jsp:useBean, jsp:setProperty и jsp:getProperty управляват JavaЖизнен цикъл и свойства на боба.
  • Поток на страницата: jsp:include обединява ресурси; jsp:forward прехвърля обработката на заявките към друга страница.
  • 🧪 Динамичен XML: jsp:body, jsp:attribute, jsp:text и jsp:output генерират XML структури динамично.
  • 🤖 Модернизация на изкуствения интелект: AI асистентите помагат за рефакторирането на остарелия JSP код за действия в съвременни рамки.

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

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

JSP Action Tags използват XML синтактични конструкции, за да контролират поведението на сървлет енджин-а. Разработчиците могат динамично да вмъкват файл, да го използват повторно JavaBean компонентите пренасочват потребителя към друга страница и извършват подобни операции по време на изпълнение чрез JSP Action Tags, като include и forward. За разлика от директивите, action tags се преоценяват всеки път, когато се осъществява достъп до страницата, което ги прави идеални за динамично поведение по време на обработка на заявки.

Синтаксис:

<jsp:action_name attribute="value" />

В този урок за стандартните JSP етикети за действия ще научите как работи всеки етикет за действие, какво прави и как да го приложите в реален JSP файл.

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

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

Име на маркер за действие Синтаксис Descriptйон
jsp:useBean Използва се за извикване и използване на beans в JSP страницата.
jsp: включване <jsp:include page=”page URL”flush=”true/false” /> Включва друг 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 Action Tags един по един със синтаксис и работещ пример.

jsp:useBean Етикет за действие

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

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

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

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

Пример:

<%@ 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>

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

Code Ред 10: В горния код използвате „bean id“ и „class path“ на bean-а.

jsp:include Етикет за действие

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

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

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

Пример:

В Action_jsp2 (Code Ред 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

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

Date.jsp:

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

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

jsp: включване

Изход:

  • Показва днешната дата с часа, тъй като файлът с дата е включен в главната JSP страница.

jsp:setProperty Етикет за действие

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

Синтаксис:

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

Тук, името (name) определя бина, чието свойство е зададено, а property е свойството, което искате да зададете. Можете също да зададете атрибутите value и param. Тук value не е задължително и определя стойността, която е присвоена на свойството. Тук param е името на параметъра на заявката, чрез който стойността може да бъде извлечена. Примерът за setProperty ще бъде демонстриран по-долу с getProperty.

jsp:getProperty Етикет за действие

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

Синтаксис:

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

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

Пример за 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:

Code Line 5TestBean имплементира класа Serializable. Това е bean клас с getters и setters в кода.

Code Line 7Тук приемаме частната низова променлива msg като „null“.

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

Action_jsp3.jsp

Code Ред 10: Тук използваме тага „useBean“, където той указва бийн-а (TestBean), който трябва да се използва в този JSP клас.

Code Ред 11: Тук задаваме стойността на свойството msg за bean TestBean като „GuruУрок“.

Code Ред 12: Тук, използвайки getProperty, получаваме стойността на свойството msg за bean TestBean (GuruУрок), което е показано в резултата.

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

jsp:getProperty

Изход:

В този пример, използвайки TestBean, задаваме свойството „msg“ чрез setProperty и получаваме стойността на свойството, използвайки getProperty, като „GuruУрок“.

jsp:forward Етикет за действие

Тагът за действие jsp:forward се използва за пренасочване на заявката към друг 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

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

Jsp_action_42.jsp

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

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

jsp: напред

Изход:

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

jsp:plugin Етикет за действие

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

Синтаксис:

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

jsp:param Етикет за действие

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

Синтаксис:

<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

Code Ред 10: Тук използваме обекта jsp:plugin, където приемаме три атрибута.

  • Тип – в този случай това е боб.
  • Code – име на файла.
  • Codebase – път с името на пакета.

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

Студент.java

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

Code 19-20: Инициализираме променливите id и name.

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

jsp:body Етикет за действие

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

Синтаксис:

<jsp:body></jsp:body>

Тук пишем XML тага за тяло в рамките на тези тагове.

jsp:attribute Етикет за действие

  • Този етикет се използва за динамично дефиниране на 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>

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

Code Ред 10: Тук дефинираме елемент, който се генерира динамично като XMLи името му ще бъде GuruXMLЕлемент.

Code Ред 11-13: Тук дефинираме атрибут, който ще бъде XML атрибут на динамично генерирания XML.

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

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

jsp:атрибут

Изход:

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

jsp:text Етикет за действие

  • Използва се за вмъкване на текст от шаблон в 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>

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

Code Ред 10: Тук използваме текстовия обект, за да отпечатаме текста на шаблона.

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

jsp:текст

Изход:

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

jsp:output Етикет за действие

  • Той указва 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>

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

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

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

Въпроси и Отговори

JSP Action Tags са XML елементи, които контролират поведението на servlet engine по време на обработка на заявки. Те позволяват на разработчиците да включват файлове, да препращат заявки, да използват JavaБийн компоненти, вграждане на аплети и динамично генериране на XML изход в JSP страница.

Директивите се обработват веднъж по време на превода на страницата и влияят върху цялостната структура на страницата. Таговете за действие се преоценяват при всяка заявка, което ги прави подходящи за динамично поведение, като например включване на съдържание, препращане на заявки и работа с JavaБоб по време на изпълнение.

Използвайте jsp:include, когато е необходимо да обедините съдържание от друга страница в текущия отговор, като например заглавки или долни колонтитули. Използвайте jsp:forward, когато контролът трябва да се предаде изцяло на друг ресурс и текущата страница не трябва да генерира допълнителен изход.

jsp:useBean създава или локализира JavaБийн в даден обхват. jsp:setProperty присвоява стойност на свойство на бийн, а jsp:getProperty чете стойността на свойството и я записва като низ в отговора, което позволява ясно разделяне между представянето и логиката на бийн.

jsp:body и jsp:attribute дефинират динамичните тела и атрибути на XML елементите. jsp:text записва буквален текст на шаблон и EL изрази, а jsp:output контролира XML декларацията или DOCTYPE, генерирани, когато JSP рендира своя отговор.

Изкуственият интелект (ИИ) е интегриран в JSP и JEE приложения чрез REST извиквания към моделиращи API, вградени чат асистенти и джаджи за препоръки, рендирани на JSP страници. ИИ също така помага за генериране на шаблонен JSP код, предлагане на използване на тагове за действия и валидиране на свързването на bean-ове по време на разработка.

Да. Инструментите, подпомагани от изкуствен интелект, анализират остарелия JSP код, идентифицират модели на тагове за действия и предлагат рефакториране на съвременни рамки като Spring MVC, Thymeleaf или REST, плюс едностранично приложение. Те също така генерират тестове за миграция, отчети за зависимости и подробни планове за рефакториране.

Обобщете тази публикация с: