首页技术struts2标签库?struts2的核心控制器

struts2标签库?struts2的核心控制器

编程之家2026-06-211055次浏览

大家好,今天小编来为大家解答struts2标签库这个问题,struts2的核心控制器很多人还不知道,现在让我们一起来看看吧!

struts2标签库?struts2的核心控制器

如何在jsp页面中使用struts2标签

要在jsp中使用struts2.0的标签,首先要在页面使用taglib指令,将struts2的tld文件导入

<%@taglibprefix="s"uri="/struts-tags"%>

struts2的标签主要分为两大类:

UI标签这个几乎不怎么用就不介绍了

非UI标签

if,elseif和else

struts2标签库?struts2的核心控制器

<s:iftest="link_type==1">//只有当test的的值为true时,才会执行if语句块里面的内容

文字

</s:if>

<s:elseiftest="link_type==2">

图片

</s:elseif>

struts2标签库?struts2的核心控制器

<s:else>

-----

</s:else>

迭代标签的使用

iterator

用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。

<ol>

<s:iteratorvalue="#request.names"status="stuts">

<s:iftest="#stuts.odd==true">//判断取出数据的奇偶性

<li>White<s:property/></li>

</s:if>

<s:else>

<listyle="background-color:gray"><s:property/></li>

</s:else>

</s:iterator>

</ol>

上述代码的显示效果就是相邻的两行颜色是区分开来的

URL地址标签,<s:url>用于生成一个URL地址,可以通过URL标签指定的<s:param>

子元素向URL地址发送请求参数

<s:urlaction="">

<s:paramname=""value=""></s:param>

</s:url>

超链接<ahref>一般和<s:url>标签一起使用,用于带多个参数。

<arel="external nofollow" href="

<s:urlaction="">

<s:paramname=""value=""></s:param>

<s:paramname=""value=""></s:param>

<s:paramname=""value=""></s:param>

</s:url>">

链接到...

</a>

set标签,用于将某个值放入指定的范围内。例如application,session等。

<s:setname="user"value="userName"scope=”request”/>

Struts2页面开发中常用标签使用规范:

2.1.通过<inputname="userName"type="text"class=""size="15">

往action中传值,action中要有相应的属性,并提供SET/GET方法。

(在数量少时可以使用request.getParameter(“userName”);)

2.2.在页面显示action传来的数据,使用property标签。需要显示的数据从action中获得。

2.3.往action中的实体对象内传值,使用textfield标签。

2.4.在页面中判断指定值使用<s:if>标签。判断数据从action中获得。

2.5.在页面中需要循环列表显示的数据使用<s:iterator>标签,列表数据从action中获得。

2.6.URL地址和超链接可以使用<ahref>和<s:url>,在传多值时建议<ahref>和<s:url>一起使用

struts2的体系结构

Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与ServletAPI分离。

Struts2框架的大概处理流程如下:

1、加载类(FilterDispatcher)

2、读取配置(struts配置文件中的Action)

3、派发请求(客户端发送请求)

4、调用Action(FilterDispatcher从struts配置文件中读取与之相对应的Action)

5、启用拦截器(WebWork拦截器链自动对请求应用通用功能,如验证)

6、处理业务(回调Action的execute()方法)

7、返回响应(通过execute方法将信息返回到FilterDispatcher)

8、查找响应(FilterDispatcher根据配置查找响应的是什么信息如:SUCCESS、ERROR,将跳转到哪个jsp页面)

9、响应用户(jsp--->客户浏览器端显示)

10、struts2标签库(相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大)

附图

1.谁能简述下Struts中的标记库 要详解 !!!

Struts标记库

JSP视窗组件所使用的struts标记库由四类标记组成:

2. Bean标记:用来在JSP页中管理bean

3.逻辑标记:用来在JSP页中控制流程

4. HTML标记:用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编程

5.模板标记:使用动态模板构造普通格式的页

2.1 Bean标记

这个标记库中包含用于定义新bean、访问bean及其属性的标记。Struts框架提供了多种自定义标记用来在JSP页中处理JavaBean。这些标记被封装在一个普通的标记库中,在文件struts-bean.tld中定义了它的标记库描述器。Bean标记库将标记定义在四个子类别中:

创建和复制bean的标记

脚本变量定义标记

bean翻译标记

消息国际化标记

2.1.1 Bean复制标记

可定义新bean,可复制现有bean,还可从现有bean复制属性。

<bean:define>标记用来:

定义新字符串常数

将现有的bean复制到新定义的bean对象

复制现有bean的属性来创建新的bean

<bean:define>标记属性:

属性描述Id新定义的bean脚本变量名称,必须设置Type定义引入脚本变量的类Value为id属性定义的脚本变量分配一个新的对象Name目标bean的名称。若value属性没有设置,这个属性就必须设置property Name属性定义的bean的属性名称,用来定义新的bean

13

Scope源bean的作用域。若没有设置,搜索范围是从页作用域到应用程序作用域toScope目标bean的作用域。若没有设置,默认值是页作用域

例如:定义一个bean:

<bean:define id=”test” value=”this is a test”/>

源bean在页作用域中被拷贝大哦请求作用域中的另一个bean:

<bean:define id=”targetBean” name=”sourceBean”

scope=”page” toScope=”request”/>

2.1.2定义脚本变量的标记

从多种资源中定义和生成脚本变量,这些资源包括cookie,请求参数,HTTP标头等等。属性如下:

属性描述Id脚本变量和要定义的页作用域属性的名称Name cookie/标头/参数的名称multiple如果这个属性设置了任意一个数值,所有匹配的cookie都会被积累并存储到一个Cookie[](一个数组)类型的bean里。若无设置,指定cookie的第一个值将作为Cookie类型的值Value如果没有匹配的cookie或数值,就返回这个属性指定的默认值

例如:

<bean:cookie id=”myCookie” name=”userName”/>

脚本变量名称是myCookie,用来创建这个属性的cookie的名称是userName。

<bean:header id=”myHeader” name=”Accept-Language”/>

脚本变量名称是myHeader,请求标头的名称是Accept-Language.

<bean:parameter id=”myParameter” name=”myParameter”>

脚本变量名称是myPatameter,它保存的请求参数的名称也是myParameter.

<bean:include>标记将对一个资源的响应进行检索,并引入一个脚本变量和字符串类型的页作用域属性。这个资源可以是一个页,一个ActionForward或一个外部URL。与<jsp:include>的不同是资源的响应被存储到一个页作用域的bean中,而不是写入到输出流。属性如下:

属性描述Id脚本变量和要定义的页作用域属性的名称Page一个内部资源forward一个ActionForward Href要包含的资源的完整URL

例如:

<bean:include id=”myInclude” page=”MyJsp?x=1”/>

脚本变量的名称是myInclude,要检索的响应来自资源MyJsp?x=1。

<bean:resource>标记将检索web应用中的资源,并引入一个脚本变量和InputStream或字符串类型的页作用域属性。如果在检索资源时发生问题,就会产生一个请求时间异常。属性如下:

属性描述

14

Id脚本变量和要定义的页作用域属性的名称Name资源的相对路径Input如果这个属性不存在,资源的类型就是字符串

例如:

<bean:resource id=”myResource” name=”/WEB-INF/images/myResource.xml”/>

脚本变量的名称是myResource,要检索的资源的名称是myResource.xml。

2.1.3显示Bean属性

标记库中定义了<bean:write>标记,用来将bean的属性输送到封装的JSP页写入器。这个标记与<jsp:getProperty>类似,属性如下:

属性描述Name要进行属性显示的bean的名称property要显示的属性的名称。如果这个属性类有java.beans.PropertyEditor,getAsText()或toString方法会被调用Scope Bean的作用域,若没有设置,搜索范围是从页到应用程序作用域Filter如果设置true,属性中的所有特殊HTML字符都将被转化为相应的实体引用Ignore如果设置false,当发现属性时会产生一个请求时间异常,否则返回null

例如:

<bean:write name=”myBean” property=”myProperty” scope=”request”

filter=”true”/>

myBean的属性myProperty将会被显示,作用域为请求,如果发现任何HTML特殊字符都将被转化为相应的实体引用。

2.1.4消息标记和国际化

strtus框架支持国际化和本地化。用户在他们的计算机中定义自己所在的区域,当web应用程序需要输出一条消息时,它将引用一个资源文件,在这个文件中所有的消息都使用了适当的语言。一个应用程序可能提供了很多资源文件,每个文件提供了用不同语言编写的消息。如果没有找到所选语言的资源文件,就将使用默认的资源文件。

struts框架对国际化的支持是使用<bean:message>标记,以及使用java.util数据包中定义的Locale和ResourceBundle类来实现Java2平台对这些任务的支持。Java.text.MessageFormat类定义的技术可以支持消息的格式。利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式。

用strtus实现国际化和本地化:

第一步要定义资源文件的名称,这个文件会包含用默认语言编写的在程序中会出现的所有消息。这些消息以“关键字-值”的形式存储,如下:

error.validation.location= The entered location is invalid

这个文件需要存储在类的路径下,而且它的路径要作为初始化参数传送给ActionServlet作为参数进行传递时,路径的格式要符合完整Java类的标准命名规范。比如,如果资源文件存储在WEB-INFclasses目录中,文件名是

15

ApplicationResources.properties,那么需要传递的参数值是ApplicationResources。如果文件在WEB-INFclassescom est中,那么参数值就应该是com.test. ApplicationResources.

为了实现国际化,所有的资源文件必须都存储在基本资源文件所在的目录中。基本资源文件包含的是用默认地区语言-本地语言编写的消息。如果基本资源文件的名称是ApplicationResources.properties,那么用其他特定语言编写的资源文件的名称就应该是ApplicationResources_xx.properties(xx为ISO编码,如英语是en)。因此这些文件应包含相同的关键字,但关键字的值是用特定语言编写的。

ActionServlet的区域初始化参数必须与一个true值一起传送,这样ActionServlet就会在用户会话中的Action.LOCALE_KEY关键字下存储一个特定用户计算机的区域对象。现在可以运行一个国际化的web站点,它可以根据用户计算机上的设置的区域自动以相应的语言显示。

我们还可以使用特定的字符串来替换部分消息,就象用java.text.MessageFormat的方法一样:

error.invalid.number= The number is valid

我们可以把字符串替换成任何我们需要的数字。<bean:message>标签属性如下:

属性描述Key资源文件中定义消息关键字Locale用户会话中存储的区域对象的属性名称。若没有设置,默认值是Action.LOCALE_KEY Bundle在应用程序上下文中,存储资源对象的属性的名称。如果没有设置这个属性,默认值是Action.MESSAGE_KEY arg0第一个替换参数值arg1第二个替换参数值arg2第三个替换参数值arg3第四个替换参数值

例如:资源文件中定义了一个消息:

info.myKey= The numbers entered are,,,

我们可使用下面的消息标记:

<bean:message key=”info.myKey” arg0=”5” arg1=”6” arg2=”7” arg3=”8”/>

这个信息标记输出到JSP页会显示为:The numbers entered are 5,6,7,8

2.2逻辑标记

逻辑库的标记能够用来处理外观逻辑而不需要使用scriptlet。Struts逻辑标签库包含的标记能够有条件地产生输出文本,在对象集合中循环从而重复地产生输出文本,以及应用程序流程控制。它也提供了一组在JSP页中处理流程控制的标记。这些标记封装在文件名为struts-logic.tld的标记包中。逻辑标记库定义的标记能够执行下列三个功能:

条件逻辑

重复

转发/重定向响应

16

2.2.1条件逻辑

struts有三类条件逻辑。第一类可以比较下列实体与一个常数的大小:

cookie

请求参数

bean或bean的参数

请求标头

以下列出了这一类标记:

标记功能<equal>如果常数与被定义的实体相等,返回true<notEqual>如果常数与被定义的实体不相等,返回true<greaterEqual>如果常数大于等于被定义的实体,返回true<lessEqual>如果常数小于等于被定义的实体,返回true<lessThan>如果常数小于被定义的实体,返回true<greaterThan>如果常数大于被定义的实体,返回true

这一类的所有标记有相同的属性

属性描述Value要进行比较的常数值Cookie要进行比较的HTTP cookie的名称Header要进行比较的HTTP请求标头的名称parameter要进行比较的HTTP请求参数的名称Name如果要进行比较的是bean或bean的属性,则这个属性代表bean的名称property要进行比较的bean属性的名称Scope Bean的作用域,如果没有指定作用域,则它的搜索范围是从页到应用程序

例如:

<logic:equal parameter=”name” value=”SomeName”>

The entered name is SomeName

</logic:equal>

判断名为”name”的请求参数的值是否是”SomeName”。

<logic:greaterThan name=”bean” property=”prop” scope=”page” value=”7”>

The value of bean.Prop is greater than 7

</logic:greaterThan>

判断在页的作用域中是否有一个名为”bean”的bean,它有一个prop属性,这个属性的值是否大于7。如果这个属性能够转化为数值,就进行数值比较,否则就进行字符串比较。

第二类条件标记定义了两个标记:

<logic:present>

<logic:notPresent>

它们的功能是在计算标记体之前判断特定的项目是否存在。标记的属性和属性值决定了要进行检查的项目。

属性描述

17

Cookie由这个属性指定的cookie将被检查是否存在Header由这个属性指定的请求标头将被检查是否存在parameter由这个属性指定的请求参数将被检查是否存在Name如果没有设置property属性,那么有这个属性指定的bean将被检查是否存在。如果设置了,那么bean和bean属性都将被检查是否存在。property检查有name属性指定的bean中是否存在指定的属性Scope如果指定了bean的名称,这就是bean的作用域。如果没有指定作用域,搜索的范围从页到应用程序作用域。Role检查当前已经确认的用户是否属于特殊的角色User检查当前已经确认的用户是否有特定的名称

例如:

<logic:notPresent name=”bean” property=”prop” scope=”page”>

The bean property bean.prop is present

</logic:notPresent>

标记判断在页作用域中是否存在一个名为”bean”的bean,这个bean有一个prop属性。

第三类条件标记比较复杂,这些标记根据模板匹配的结果检查标记体的内容。换句话说,这些标记判断一个指定项目的值是否是一个特定常数的子字符串:

<logic:match>

<logic:notMatch>

这些标记允许JSP引擎在发现了匹配或是没有发现时计算标记主体。属性如下:

属性描述Cookie要进行比较的HTTP cookie的名称Header要进行比较的的HTTP标头的名称parameter要进行比较的的HTTP请求参数的名称Name若要对bean或bean的属性进行比较,这个属性是用户指定bean的名称location如果设置了这个属性的值,将会在这个指定的位置(索引值)进行匹配scope如果对bean进行比较,这个属性指定了bean的作用域。如果没有设置这个参数,搜索范围是从页到应用程序作用域property要进行比较的bean的属性名称value要进行比较的常数值

例如:

<logic:match parameter=”name” value=”xyz” location=”1”>

The parameter name is a sub-string of the string xyz from index 1

</logic:match>

标记检查名为”name”的请求参数是否是”xyz”的子字符串,但是子字符串必须从”xyz”的索引位置1开始(也就是说子字符串必须是”y”或”yz”)。

好了,文章到此结束,希望可以帮助到大家。

excel函数教程大全 excel文员必背公式excel乘法函数是哪个符号(excel乘法符号怎么打)