JSP Action Tags

⚡ Smart oppsummering

JSP Action Tags bruker XML-syntaks for å kontrollere servlet-motorens oppførsel, slik at utviklere kan inkludere filer, videresende forespørsler, jobbe med JavaBønner, og legg inn dynamisk innhold under forespørselsbehandling.

  • 🏷️ Standard sett: Elleve standard handlingstagger håndterer includes, forwards, beans, plugins og XML-utdata.
  • 📜 XML-syntaks: Handlingskoder følger strenge XML-skjemaer og blir revurdert ved hver forespørsel.
  • 🔗 Bønneintegrasjon: jsp:useBean, jsp:setProperty og jsp:getProperty administrerer JavaBønners livssyklus og egenskaper.
  • Sideflyt: jsp:include merges resources; jsp:videresend overfører forespørselshåndtering til en annen side.
  • 🧪 Dynamisk XML: jsp:body, jsp:attribute, jsp:text og jsp:output genererer XML-strukturer dynamisk.
  • 🤖 AI-modernisering: AI-assistenter hjelper med å omstrukturere eldre JSP-handlingskode til moderne rammeverk.

JSP Action Tags

Hva er en JSP-handlingstag?

JSP-handlingstagger bruker XML-syntakskonstruksjoner for å kontrollere servletmotorens virkemåte. Utviklere kan dynamisk sette inn en fil, bruke den på nytt JavaBean-komponenter videresender brukeren til en annen side og utfører lignende kjøretidsoperasjoner gjennom JSP-handlingstagger som include og forward. I motsetning til direktiver blir handlingstagger revurdert hver gang siden åpnes, noe som gjør dem ideelle for dynamisk oppførsel under forespørselsbehandling.

Syntaks:

<jsp:action_name attribute="value" />

I denne veiledningen om JSP Standard Action Tags lærer du hvordan hver handlingstag fungerer, hva den gjør og hvordan du bruker den i en ekte JSP-fil.

Liste over vanlige handlingskodene i JSP

Det er 11 typer Standard Action Tags i JSP, og her er den komplette listen over dem.

Action Tag Navn syntax Tekniske beskrivelser
jsp:useBean Brukes til å påkalle og bruke bønner på JSP-siden.
jsp:inkludere <jsp:include page=”page URL"flush="sant/usant" /> Inkluderer en annen JSP-fil i gjeldende fil under forespørselsbehandling.
jsp:setProperty Angir egenskapen til en bønne.
jsp:getProperty Henter egenskapen til en bønne og konverterer den til en streng for utdata.
jsp:forward Videresender forespørselen til en annen JSP eller statisk side.
jsp:plugin Introduserer Java komponenter som applets eller bønner til JSP og genererer automatisk tagger.
jsp:body Definerer XML-elementer som genereres dynamisk under forespørselsbehandling.
jsp:tekst maltekst Brukes til å sette inn maltekst i JSP-sider, som kun inneholder tekst og EL-uttrykk.
jsp:param Sender parametere i jsp:plugin-handlingen for å legge til ekstra data.
jsp:attributt Definerer XML-attributter som genereres dynamisk.
jsp:utgang Spesifiserer XML- eller DOCTYPE-deklarasjonen som skal brukes i utdataene.

Nå som du har hele listen, skal vi utforske hver av disse JSP-handlingstaggene én etter én med syntaks og et fungerende eksempel.

jsp:useBean Handlingstag

  • Dette handlingsnavnet brukes når du vil bruke JavaBønner på JSP-siden.
  • Med denne taggen kan du enkelt kalle en bønne og gjenbruke komponenter på serversiden.

Syntaks for jsp:useBean:

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

Her spesifiserer id identifikatoren for denne bønnen, og klassen er den fullstendige banen til bønneklassen.

Eksempel:

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

Forklaring av koden:

Code Linje 10: I koden ovenfor bruker du «bønne-ID-en» og «klassestien» til bønnen.

jsp:include handlingstag

  • jsp:include brukes til å sette inn en JSP-fil i en annen fil under forespørselsbehandling, på samme måte som å inkludere Direktiver.
  • Den legges til i forespørselsbehandlingsfasen, noe som betyr at det inkluderte innholdet evalueres hver gang siden forespurtes.

Syntaks for jsp:include:

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

Eksempel:

I aksjon_jsp2 (Code Linje 10), inkluderer vi en date.jsp-fil.

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

Dato.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>

Forklaring av koden:

Action_jsp2.jsp

Code Linje 10: I den første filen inkluderer vi date.jsp-filen i action_jsp2.jsp.

Date.jsp:

Code Linje 11: Vi skriver ut dagens dato i kodelinje 11 i date.jsp.

Når du kjører koden, er følgende utdata.

jsp:inkludere

Utgang:

  • Den viser dagens dato med klokkeslett ettersom datofilen er inkludert på hovedsiden for JSP.

jsp:setProperty Handlingstag

  • Denne standardhandlingen i JSP brukes til å angi egenskapen til bønnen.
  • Du må definere en bønne før du angir egenskapen.

Syntaks:

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

Her definerer navnet bønnen hvis egenskap er satt, og property er egenskapen du vil angi. Du kan også angi attributter for verdi og parameter. Her er ikke verdi obligatorisk, og den definerer verdien som er tilordnet egenskapen. Her er param navnet på forespørselsparameteren som verdien kan hentes med. Eksemplet på setProperty vil bli demonstrert nedenfor med getProperty.

jsp:getProperty Handlingstag

  • Denne handlingen brukes til å hente egenskapen til bønnen.
  • Den konverterer egenskapen til en streng og setter den til slutt inn i utdataene.

Syntaks:

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

Her er navnet bønnen som egenskapen skal hentes fra, og bønnen skal defineres. Property-attributtet er navnet på bønneegenskapen som skal hentes.

Eksempel på setProperty og 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>

Forklaring av koden:

TestBean.java:

Code Linje 5TestBean implementerer Serializable-klassen. Det er en bønneklasse med gettere og settere i koden.

Code Linje 7Her tar vi den private strengvariabelen msg som «null».

Code Linje 9-14Her bruker vi gettere og settere for variabelen «msg».

Action_jsp3.jsp

Code Linje 10: Her bruker vi «useBean»-taggen, der den spesifiserer bønnen (TestBean) som må brukes i denne JSP-klassen.

Code Linje 11: Her setter vi verdien for egenskapen msg for bean TestBean som «Guru«Opplæring».

Code Linje 12: Her, ved å bruke getProperty, får vi verdien av egenskapen msg for bean TestBean (GuruOpplæring), som vises i utdataene.

Når du kjører koden ovenfor, får du følgende utgang:

jsp:getProperty

Utgang:

I dette eksemplet, med TestBean, setter vi egenskapen «msg» ved hjelp av setProperty og henter verdien av egenskapen ved hjelp av getProperty som «Guru«Opplæring».

jsp:forward Handlingstag

Handlingstaggen jsp:forward brukes til å videresende forespørselen til en annen JSP eller en hvilken som helst statisk side.

Her kan forespørselen videresendes uten parametere eller med parametere.

Syntaks:

<jsp:forward page="value">

Her representerer verdien hvor forespørselen skal videresendes.

Eksempel:

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>

Forklaring av koden:

Action_jsp41.jsp

Code Linje 10: Her bruker vi handlingen `videresending JSP` for å videresende forespørselen til siden som er nevnt i attributtet, dvs. jsp_action_42.jsp.

Jsp_action_42.jsp

Code Linje 10: Når vi kaller action_jsp41.jsp, blir forespørselen videresendt til denne siden, og vi får utdataene «Dette er etter videresending av side».

Når vi kjører koden ovenfor, får vi følgende utdata.

jsp:forward

Utgang:

Vi kaller action_jsp41.jsp, men forespørselen blir videresendt til jsp_action_42.jsp, og vi får utdataene fra den siden som «Dette er etter videresendt side».

jsp:plugin Handlingstag

  • Det brukes til å introdusere Java komponenter inn i JSP, hvor Java Komponentene kan enten være en applet eller en bønne.
  • Den oppdager nettleseren og legger til eller tagger i filen.

Syntaks:

<jsp:plugin type="applet/bean" code="objectcode" codebase="objectcodebase">
  • Her spesifiserer typen enten et objekt eller en bønne.
  • Code spesifiserer klassenavnet til appleten eller bønnen.
  • Codebasen inneholder basen URL som inneholder klassefiler.

jsp:param Handlingstag

  • Dette er et underobjekt av plugin-objektet beskrevet ovenfor.
  • Den må inneholde én eller flere handlinger for å gi flere parametere.

Syntaks:

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

Eksempel på plugin og parameter:

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

Forklaring av koden:

Action_jsp5.jsp

Code Linje 10: Her bruker vi jsp:plugin-objektet der vi tar tre attributter.

  • Type – i dette tilfellet er det bønne.
  • Code – navnet på filen.
  • Codebase – sti med pakkenavnet.

Code Linje 11-14: Her tar vi jsp:params-objektet, under hvilket det er et underordnet param-objekt med attributtene name og value, og vi setter verdiene id og name i disse attributtene.

Student.java

Code 7-17: Vi bruker gettere og settere for variablene id og name.

Code 19-20: Vi initialiserer variablene ID og navn.

Her får vi utdata i tilfeller der de angitte verdiene for param skal brukes i studentbønnen. I dette tilfellet vil vi ikke ha noe utdata, ettersom vi bare setter og henter verdier for param, men ikke skriver det ut noe sted.

jsp:body Handlingstag

  • Denne taggen brukes til å definere XML-en dynamisk, der Elements kan genereres i løpet av forespørselstidspunktet i stedet for kompileringstiden.
  • Den definerer XML-en, som genereres dynamisk som en elementkropp.

Syntaks:

<jsp:body></jsp:body>

Her skriver vi XML-body-taggen inni disse taggene.

jsp:attribute Handlingstag

  • Denne taggen brukes til å definere XML-en dynamisk, der elementene kan genereres under forespørselstid i stedet for kompileringstidspunktet.
  • Den definerer XML-attributtet som skal genereres dynamisk.

Syntaks:

<jsp:attribute></jsp:attribute>

Her skriver vi attributttaggen til XML.

Eksempel på kropp og attributt:

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>

Forklaring av koden:

Code Linje 10: Her definerer vi et element, som genereres dynamisk som XML, og navnet vil være GuruXML-element.

Code Linje 11-13: Her definerer vi et attributt, som vil være et XML-attributt for den dynamisk genererte XML-en.

Code Linje 14: Her har vi body-handlingen, der vi skriver XML-brødteksten, som vil bli generert dynamisk.

Når du kjører koden ovenfor, får du følgende utgang:

jsp:attributt

Utgang:

Her får vi utdataene fra body-taggen til den genererte XML-en.

jsp:text Handlingstag

  • Den brukes til å sette inn maltekst i JSP-sider.
  • Kroppen inneholder ingen andre elementer, og den inneholder kun tekst og EL-uttrykk.

Syntaks:

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

Her refererer maltekst kun til maltekst (som kan være hvilken som helst generisk tekst som må skrives ut på JSP) eller hvilken som helst EL uttrykk.

Eksempel:

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>

Forklaring av koden:

Code Linje 10: Her tar vi tekstobjektet for å skrive ut malteksten.

Når du utfører koden ovenfor, får du følgende utgang.

jsp:tekst

Utgang:

Vi får Guru Maltekst, som plasseres i teksthandlingsobjektet.

jsp:output Handlingstag

  • Den spesifiserer XML-deklarasjonen eller DOCTYPE-deklarasjonen for JSP.
  • XML-deklarasjonen og DOCTYPE deklareres av utdataene.

Syntaks:

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

Her indikerer doctype-root-element rotelementet til XML-dokumentet i DOCTYPE. Doctype-system indikerer doctypen som genereres i utdata og gir en systemliteral.

Eksempel:

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

Forklaring av koden:

Code Linje 10: Her bruker vi output action-objektet til å generere en DOCTYPE, og internt vil den bli generert i dette formatet:

Det vil ikke være noen synlig utdata for dette, da dette vil bli generert internt.

Spørsmål og svar

JSP-handlingstagger er elementer i XML-stil som styrer servletmotorens oppførsel under forespørselsbehandling. De lar utviklere inkludere filer, videresende forespørsler, bruke JavaBønner, legg inn applets og generer dynamisk XML-utdata på en JSP-side.

Direktiver behandles én gang ved sideoversettelse og påvirker den generelle sidestrukturen. Handlingskoder evalueres på nytt for hver forespørsel, noe som gjør dem egnet for dynamisk atferd som å inkludere innhold, videresende forespørsler og arbeide med JavaBønner under kjøring.

Bruk jsp:include når du trenger å slå sammen innhold fra en annen side med gjeldende svar, for eksempel topptekster eller bunntekster. Bruk jsp:forward når kontrollen skal overføres fullstendig til en annen ressurs, og gjeldende side ikke skal produsere ytterligere utdata.

jsp:useBean instansierer eller lokaliserer en JavaBean i et gitt omfang. jsp:setProperty tilordner en verdi til en bean-egenskap, og jsp:getProperty leser egenskapsverdien og skriver den som en streng i svaret, noe som muliggjør et rent skille mellom presentasjon og bean-logikk.

jsp:body og jsp:attribute definerer dynamiske XML-elementer og -attributter. jsp:text skriver litteral maltekst og EL-uttrykk, og jsp:output kontrollerer XML-deklarasjonen eller DOCTYPE som produseres når JSP-en gjengir svaret sitt.

AI er integrert i JSP- og JEE-applikasjoner gjennom REST-kall for å modellere API-er, innebygde chatassistenter og anbefalingswidgeter gjengitt på JSP-sider. AI bidrar også til å generere standard JSP-kode, foreslå bruk av handlingstagger og validere bønnekoblinger under utvikling.

Ja. AI-assisterte verktøy analyserer eldre JSP-kode, identifiserer handlingstagmønstre og foreslår refaktorering til moderne rammeverk som Spring MVC, Thymeleaf eller REST pluss en enkeltsides applikasjon. De genererer også migreringstester, avhengighetsrapporter og trinnvise refaktoreringsplaner.

Oppsummer dette innlegget med: