JSP Action Tags

Co je JSP Action?

Akce JSP používají konstrukci v syntaxi XML k řízení chování servletového stroje. Můžeme dynamicky vložit soubor, znovu použít komponenty fazolí, přesměrovat uživatele na jinou stránku atd. prostřednictvím akcí JSP, jako je include a forward. Na rozdíl od direktiv jsou akce znovu vyhodnoceny při každém přístupu na stránku.

Syntaxe:

<jsp:action_name attribute="value" />

V tomto tutoriálu se dozvíte o standardních akcích JSP. Značky standardní akce JSP se používají k řízení chování servletového enginu.

Seznam běžně používaných značek akcí v JSP

V JSP existuje 11 typů značek standardních akcí a zde je jejich kompletní seznam.

Název značky akce Syntax Description
jsp:useBean Používá se k vyvolání a použití beanů na stránce JSP.
jsp:include Zahrne další soubor JSP do aktuálního souboru během zpracování požadavku.
jsp:setProperty Nastavuje vlastnost fazole.
jsp:getProperty Načte vlastnost beanu a převede ji na řetězec pro výstup.
jsp:forward Předá požadavek na jinou stránku JSP nebo statickou stránku.
jsp:plugin Představuje Java komponenty jako applety nebo beany do JSP a automaticky generuje značky.
jsp:body Definuje prvky XML, které se generují dynamicky během zpracování požadavku.
jsp:text text šablony Používá se k vložení textu šablony do stránek JSP, které obsahují pouze text a výrazy EL.
jsp:param Předá parametry v rámci akce jsp:plugin pro přidání dalších dat.
jsp:attribute Definuje atributy XML, které se generují dynamicky.
jsp:výstup Určuje deklaraci XML nebo DOCTYPE, která se má použít ve výstupu.

jsp:useBean

  • Tento název akce se používá, když chceme na stránce JSP použít beany.
  • S tímto tagem můžeme snadno vyvolat fazoli.

Syntaxe jsp: UseBean:

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

Zde specifikuje identifikátor pro tento bean a třída je úplná cesta ke třídě bean

Příklad:

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

Vysvětlení kódu:

10. řádek kódu: Ve výše uvedeném kódu používáme „bean id“ a „class path“ beanu.

jsp:include

  • Také se používal pro vložení souboru jsp do jiného souboru, stejně jako včetně Směrnice.
  • Přidává se ve fázi zpracování požadavku

Syntaxe jsp:include

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

Příklad:

Action_jsp2 (kódový řádek 10) zahrnujeme soubor 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>

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>Insert title here</title>
</head>
<body>
<p>
Today's date: <%= {new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>

Vysvětlení kódu:

Action_jsp2.jsp

10. řádek kódu: V prvním souboru začleňujeme soubor date.jsp do action_jsp2.jsp

Date.jsp:

11. řádek kódu: Tiskneme dnešní datum na řádku kódu 11 v date.jsp

Když spustíte kód, následuje výstup.

jsp:include

Výstup:

  • Zobrazuje dnešní datum s časem, protože datový soubor je součástí hlavního jsp

jsp:setProperty

  • Tato vlastnost standardních akcí v JSP se používá k nastavení vlastnosti beanu.
  • Před nastavením vlastnosti musíme definovat bean

Syntaxe:

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

Zde název definuje bean, jehož vlastnost je nastavena a vlastnost, kterou chceme nastavit. Také můžeme nastavit atribut value a param. Zde hodnota není povinná a definuje hodnotu, která je vlastnosti přiřazena. Zde param je název parametru požadavku, pomocí kterého lze hodnotu načíst. Příklad setproperty bude demonstrován níže s getproperty

jsp:getProperty

  • Tato vlastnost se používá k získání vlastnosti fazole.
  • Převede na řetězec a nakonec vloží do výstupu.

Syntaxe:

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

Zde by měl být definován název bobu, ze kterého má být vlastnost načtena a bobu. Atribut property je název vlastnosti bean, která má být načtena.

Příklad setProperty a 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>

Vysvětlení kódu:

TestBean.java:

5. řádek kódu: TheTestBean implementuje serializovatelnou třídu. Jedná se o třídu fazolí s getry settery v kódu.

7. řádek kódu: Zde bereme soukromou řetězcovou proměnnou msg jako „null“

Řádek kódu 9-14: Zde používáme getry a settery proměnné „msg“.

Action_jsp3.jsp

10. řádek kódu: Zde používáme značku „useBean“, kde specifikuje bean, tj. TestBean, který musí být použit v této třídě jsp

11. řádek kódu: Zde nastavujeme hodnotu vlastnosti msg pro bean TestBean jako „GuruTutorial“.

CodeLine12: Zde pomocí getProperty získáváme hodnotu vlastnosti msg pro bean TestBean, tj. GuruTutorial, který je ve výstupu

Když spustíte výše uvedený kód, získáte následující výstup:

jsp:getProperty

Výstup:

V tomto příkladu se pomocí TestBean pokoušíme nastavit vlastnost „gurutest“ pomocí setProperty a získat hodnotu vlastnosti pomocí getProperty jako „GuruTutorial“

jsp:forward

Používá se k předání požadavku jinému jsp nebo jakékoli statické stránce.

Zde může být požadavek předán bez parametrů nebo s parametry.

Syntaxe:

<jsp:forward page="value">

Zde hodnota představuje, kam má být požadavek předán.

Příklad:

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>

Vysvětlení kódu

Action_jsp41.jsp

10. řádek kódu: Zde používáme forward JSP Action k předání požadavku na stránku uvedenou v atributu, tj. jsp_action_42.jsp

Jsp_action_42.jsp

10. řádek kódu: Jakmile zavoláme action_jsp41.jsp, požadavek se přesměruje na tuto stránku a dostaneme výstup jako „Toto je po přesměrování stránky“.

Když provedeme výše uvedený kód, dostaneme následující výstup

jsp:forward

Výstup:

Zavoláme action_jsp41.jsp, ale požadavek bude předán na jsp_action_42.jsp a dostaneme výstup z této stránky jako „Toto je po stránce vpřed“.

jsp:plugin

  • Používá se k představení Java komponenty do jsp, tj. komponenty java mohou být buď applet, nebo bean.
  • Detekuje prohlížeč a přidá nebo JSP tagy do souboru

Syntaxe:

<jsp:plugin type="applet/bean" code="objectcode" codebase="objectcodebase">
  • Zde typ určuje buď objekt, nebo fazole
  • Kód určuje název třídy appletu nebo beanu
  • Báze kódu obsahuje základní adresu URL, která obsahuje soubory tříd

jsp:param

  • Toto je podřízený objekt objektu pluginu popsaného výše
  • Musí obsahovat jednu nebo více akcí pro poskytnutí dalších parametrů.

Syntaxe:

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

Příklad pluginu a param

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>

Student.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;
	
}

Vysvětlení kódu:

Action_jsp5.jsp

10. řádek kódu: Zde bereme objekt jsp: plugin, kde bereme tři atributy

  • Typ – v tomto případě je to fazole
  • Kódové jméno souboru
  • Codebase – cesta s názvem balíčku

Řádek 11–14 kódu: Zde bereme objekt jsp: params, pod kterým je podřízený objekt param s atributy name a value a v těchto atributech nastavujeme hodnoty id a name.

Student.java

Kód 7-17: Pro proměnné id a name používáme getry a settery

Kód 19-20: inicializujeme proměnné id a name.

Zde získáme výstup v případě, že nastavené hodnoty param budou použity ve Student Bean. V tomto případě nebudeme mít žádný výstup, protože pouze nastavujeme a získáváme hodnoty param, ale nikam to netiskneme.

jsp:body

  • Tato značka se používá k dynamické definici XML, tj Prvky může generovat během doby požadavku než v době kompilace.
  • Ve skutečnosti definuje XML, který je generován dynamicky tělo prvku.

Syntaxe:

<jsp:body></jsp:body>

Zde zapisujeme značku XML body do těchto značek

jsp:attribute

  • Tato značka se používá k dynamickému definování XML, tj. prvky mohou být generovány během doby požadavku než během doby kompilace
  • Vlastně definuje atribut XML, který bude generován dynamicky.

Syntaxe:

<jsp:attribute></jsp:attribute>

Zde napíšeme atribut tag XML.

Příklad těla a atributu:

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>

Vysvětlení kódu:

10. řádek kódu: Zde definujeme prvek, který dynamicky generuje jako XMLa jeho název bude GuruXMLElement

Řádek 11–13 kódu: Zde definujeme atribut, který bude XML atributem dynamicky generovaného XML.

14. řádek kódu: Zde máme akci těla, kde zapisujeme tělo XML, které bude generováno dynamicky XML.

Když spustíte výše uvedený kód, získáte následující výstup:

jsp:attribute

Výstup:

Zde získáme výstup z tagu body vygenerovaného XML.

jsp:text

  • Používá se k šablonování textu na stránkách JSP.
  • Jeho tělo neobsahuje žádné další prvky a obsahuje pouze text a EL výrazy.

Syntaxe:

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

Text šablony zde odkazuje pouze na text šablony (což může být jakýkoli obecný text, který je třeba vytisknout na jsp ) nebo jakýkoli EL výraz.

Příklad:

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>

Vysvětlení kódu:

10. řádek kódu: Zde bereme textový objekt pro tisk textu šablony

Když spustíte výše uvedený kód, získáte následující výstup

jsp:text

Výstup:

Získáváme Guru Template Text, který je umístěn v rámci textových akčních objektů.

jsp:výstup

  • Určuje deklaraci XML nebo deklaraci DOCTYPE jsp
  • Deklarace XML a DOCTYPE jsou deklarovány výstupem

Syntaxe:

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

Zde doctype-root-element označuje kořenový prvek dokumentu XML v DOCTYPE. Doctype-system označuje doctype, který je generován na výstupu a poskytuje systémový doslov

Příklad:

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

Vysvětlení kódu:

10. řádek kódu: Zde používáme výstupní akční objekt ke generování DOCTYPE a interně bude generován v tomto formátu:

Pro to nebude žádný výstup, protože bude generován interně.