Strus2标签库

合集下载

第五章:struts2标签库

第五章:struts2标签库

IBM Software Group
IBM Software Group
数据标签-----property标签
property标签用于输出值栈中的对象的属性(property)值,使用value属性来指定要输出 的对象属性,如果没有指定value属性,那么默认输出栈顶对象。
IBM Software Group
IBM Software Group
IBM Software Group
Struts2标签库
在早期的WEB开发中,JSP视图控制和显示技术主要依靠Java脚本来实现,这样一来 ,JSP页面重新嵌入了大量的Java脚本代码,给开发带来了极大的不方便。 从JSP1.1规范后,JSP增加了自定义标签库的支持。标签库是一种组件技术,通过标 签库,可以将复杂的Java脚本代码封装在组件中,开发者只需要使用简单的代码就可 以实现复杂的Java脚本功能。提供了Java脚本的复用性,提高了开发者的开发效率。 Struts2标签库相对struts1.x进行了巨大的改进,支持OGNL表达式,不再依赖任何表现 层技术。
IBM Software Group
IBM Software Group示例:访问地址:http://localhost:8080/.../setTag.action
IBM Software Group
数据标签-----push标签
push标签用于把一个值压入值栈(位于栈顶),注意和set标签的区别,set标签是将值放 到action上下文中。当push标签结束后,push标签放入值栈中的对象将被删除,换句 话说,要访问push标签压入栈中的对象,需要在标签内部去访问。 push标签的属性
IBM Software Group

Struts2学习之二--Struts2标签介绍

Struts2学习之二--Struts2标签介绍

Struts2学习之二--Struts2标签介绍热12已有 14625 次阅读 2009-07-12 18:53[顶]3G移动--Android开发工程师全能班(转) Struts2学习之二--Struts2标签介绍在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。

如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。

我的E-MAIL:Max.M.Yuan@。

在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。

分类将标志库按功能分成HTML、Tiles、Logic和Bean等几部分严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志表达式语言(expression languages)不支持嵌入语言(EL)OGNL、JSTL、Groovy和Velcity以上表格,纯属个人总结,如有所不足或错误,请不吝指正好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。

1.非UI标志o if、elseif和else描述:执行基本的条件流转。

参数:名称必需默认类型描述备注test 是Boolean 决定标志里内容是否显示的表达式else标志没有这个参数id 否Object/String 用来标识元素的id。

在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Condition Flow</title></head><body><h3>Condition Flow</h3><!--这里有点小技巧:本来可以用#[0]来获得,请求中name的值。

struts2

struts2

—高级软件人才实作培训专家! 高级软件人才实作培训专家!
搭建Struts2开发环境
搭建Struts2环境时,我们一般需要做以下几个步骤的工作: 1》找到开发Struts2应用需要使用到的jar文件. 2》编写Struts2的配置文件 3》在web.xml中加入Struts2 MVC框架启动配置
北京传智播客教育
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
搭建Struts2开发环境--Struts2在web中的启动配置
在struts1.x中, struts框架是通过Servlet启动的.在struts2中, struts框架是通过Filter启动的.他在web.xml中的配置如下:
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
Struts2
讲师: 讲师:黎活明
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
Struts2
Struts2是在WebWork2基础发展而来的.和struts1一样, Struts2也属于MVC框架. 不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但 Struts2和struts1在代码编写风格上几乎是不一样的.那么既然有了struts1,为何还要 推出struts2.主要是因为struts2有以下优点:
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
第一个Struts2应用--HelloWorld
在默认的配置文件struts.xml 中加入如下配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"> <struts> <package name="itcast" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute" > <result name="success">/WEB-INF/page/hello.jsp</result> </action> </package> </struts>

Struts2中的s标签 API Java Struts 程序开发

Struts2中的s标签 API Java Struts 程序开发
7. <s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajax
B:
1. <s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值
C:
R:
1.
2. <s:radio list=""></s:radio>-----单选按钮
3. <s:reset></s:reset>-----重置按钮
S:
1. <s:select list=""></s:select>-----单选框
2. <s:set name=""></s:set>-----赋予变量一个特定范围内的值
4. <s:iterator></s:iterator>-----用于遍历集合
L:
1. <s:label></s:label>-----只读的标签
M:
1. <s:merge></s:merge>-----合并遍历集合出来的值
O:
数据标签:
action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。
bean:创建一个JavaBean实例。。
date:格式化输出一个日期属性。
debug:生成一个调试链接,当单击该链接时,可以看到当前栈值中的内容。

《Java 框架技术》理论课程教学大纲

《Java 框架技术》理论课程教学大纲

《JAVA 框架技术》课程教学大纲一、课程基本信息二、课程教学目标学生学习完本课程之后,能够掌握J2EE企业级应用程序开发的流行框架技术SSH,掌握SSH相关技术、框架设计思想和开发模式等。

1.理解Strust2运行机制,掌握其相关技术的配置使用方法;2.理解Hibernate框架,掌握其相关技术的配置使用方法;3.理解Spring体系结构,掌握其相关技术的配置使用方法;4.掌握Sruts2+Hibernate+Spring整合开发框架,在企业级应用程序开发中的使用技能;三、教学学时分配《JAVA 框架技术》课程理论教学学时分配表《Java 框架技术》课程实验内容设置与教学要求一览表四、教学内容和教学要求第一章 Struts2入门(2学时)(一)教学要求通过本章内容的学习,了解Struts2和Struts1的不同,掌握Struts2的运行配置方法。

(二)教学重点与难点教学重点:配置Struts2教学难点:配置Struts2(三)教学内容第一节 Struts2概述1.Struts1概述2.Struts2概述与优势第二节配置Struts21.配置Web.xml2.配置Struts.properties3.配置Struts.xml第二章拦截器(2学时)(一)教学要求通过本章内容的学习,了解拦截器的工作原理和意义,掌握拦截器的配置方法,掌握自定义拦截器的使用等。

(二)教学重点与难点教学重点:拦截器配置、自定义拦截器教学难点:拦截器方法过滤(三)教学内容第一节拦截器简介1.拦截器工作原理2.拦截器的意义3.拦截器角色第二节拦截器配置1.配置拦截器2.使用拦截器3.默认拦截器第三节自定义拦截器1.实现拦截器类2.使用自定义拦截器3.默认拦截器第四节深入拦截器1.拦截器方法过滤2.拦截器的拦截顺序3.拦截结果监听器第三章 Action和类型转换(2学时)(一)教学要求通过本章内容的学习,理解解Action控制器的作用,掌握Action控制器的定义、配置。

31________struts2_3_ognl_非UI_UI_过滤投影

31________struts2_3_ognl_非UI_UI_过滤投影

OGNL:【struts的标签库在 struts2-core-2.3.11.jar 下的META-INF下】【引入标签库:<%@ taglib uri="/struts-tags" prefix="s"%>】OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。

Struts2框架使用OGNL作为默认的表达式语言。

OGNL相对其它表达式语言具有下面几大优势:1、支持对象方法调用,如xxx.doSomeSpecial();2、支持类静态的方法调用和值访问,表达式的格式:@[类全名(包括包路径)]@[方法名 | ?值名],例如:@ng.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;3、支持赋值操作和表达式串联,如price=100, discount=0.8,calculatePrice(),这个表达式会返回80;4、访问OGNL上下文(OGNL context)和ActionContext;5、操作集合对象。

Ognl 有一个上下文(Context)概念,说白了上下文就是一个MAP结构,它实现了java.utils.Map的接口.OGNL(Object Graph Navigation Language),是一种表达式语言。

使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性、调用Java对象树的方法、同时能够自动实现必要的类型转化。

如果我们把表达式看做是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁。

================================================================================ ====================================================【一、理解Struts2中的 ValueStack:】ValueStack实际是一个接口,在Struts2中利用OGNL时,实际上使用的是实现了该接口的OgnlValueStack类,这个类是Struts2利用OGNL的基础ValueStack(值栈): 贯穿整个 Action 的生命周期(每个 Action 类的对象实例都拥有一个ValueStack 对象). 相当于一个数据的中转站. 在其中保存当前Action 对象和其他相关对象.Struts 框架把 ValueStack 对象保存在名为“struts.valueStack”的请求属性中,request 中在 ValueStack 对象的内部有两个逻辑部分:ObjectStack: Struts 把动作和相关对象压入 ObjectStack 中--List 对象栈ContextMap: Struts 把各种各样的映射关系(一些 Map 类型的对象) 压入 ContextMap 中Map栈Struts 会把下面这些映射压入 ContextMap 中 (Map栈中)root: ObjectStack对象栈的引用parameters: 该 Map 中包含当前请求的请求参数request: 该 Map 中包含当前 request 对象中的所有属性session: 该 Map 中包含当前 session 对象中的所有属性application:该 Map 中包含当前 application 对象中的所有属性attr: 该 Map 按如下顺序来检索某个属性: request, session, application在ObjectStack(对象栈)中一般放入:ValueStackAction对象map集合实体类对象================================================================================ =======================================【二、理解OGNL Context】OgnlValueStack 类包含两个重要的属性一个root和一个context。

structs2

structs2
10
IoC方式
要使用IoC方式,我们首先要告诉IoC容器 (Container)想取得某个对象的意愿,通 过实现相应的接口做到这点
11
Acபைடு நூலகம்ionContext
一次Action调用都会创建一个ActionContext 调用:ActionContext context = ActionContext.getContext() 在structs2中,它通过包装提供了对Servlet的访问:
22
“%”符号
“%”符号的用途是在标志的属性为字符串 类型时,计算OGNL表达式的值。例如在 Ognl.jsp中加入以下代码 "%{#foobar['foo1']}"
23
“$”有两个主要的用途
用于在国际化资源文件中,引用OGNL表达 式 在Struts 2配置文件中,引用OGNL表达式
国际化支持
1 resource bundle per action
pervasive UI support for retrieving messages
8
Action
如果我要取得Servlet API中的一些对象, 如request、response或session等,应该 怎么做?这里的execute不像Struts 1.x的 那样在参数中引入。开发Web应用程序当然 免不了跟这些对象打交道。在Strutx 2.0你 可以有两种方式获得这些对象:非IoC(控 制反转Inversion of Control)方式和IoC 方式
12
二、structs2原理
XWork2的层次:
ActionProxy ActionInvocation Action

Struts2标签使用

Struts2标签使用

Struts2标签使用(1):<s:textfield> ---- 文本输入框使用:<s:textfield name=”实体Bean。

属性”></s:textfield>(2):<s:textarea> ----- 文本域输入框使用:<s:textarea name=”实体Bean。

属性”></s:textarea>(3):<s:password> ----- 密码输入框使用:<s:password name=”实体Bean。

属性”></s:password>前三个基本都是一样的。

如果是要显示值的话可以这样:value = “实体Bean。

Get***()”。

(4):<s:radio list=””> ---- 单选按钮使用:<s:radio list=””>其中list 属性是必须要有的。

<1>:第一种方式:list = “#{‘male’:’男’,’female’:’女’}”<2>:第二中方式:list = “#request/session.list”。

---- 与action 结合起来了。

如果要默认选中的话后面加上value = “”.也可以通过javascript 的方式来默认选中。

(5):<s:url/> --- url连接<s:a/> --- 超链接这两个标签一般结合起来来使用。

使用:<s:url id = “id” action = “userAction”/><s:a href=”%{id}”/>(6):<s:form/> --- 获取相应form的值使用:<1>:<s:form action = “userAction”><2>:<s:url id=”userId” action = “userAction”> -- 定义了一个userId的指向userActionde 路径<s:form action=”%{userId}”>(7):<s:submit/> ---- 提交标签(8):<s:reset/> ---- 重置标签(9):<s:hidden/> ---- 隐藏域标签使用:<s:hidden name=”实体Bean。

struts2框架特征

struts2框架特征

struts2框架特征Struts2框架特征Struts2是一种流行的Java Web应用程序开发框架,其特征使其成为许多开发者的首选。

本文将介绍Struts2框架的特征,包括MVC 架构、强大的标签库、拦截器、数据验证、国际化支持以及灵活的配置等。

一、MVC架构Struts2采用了MVC(Model-View-Controller)架构,将应用程序的业务逻辑、数据模型和用户界面分离。

这种架构使开发者能够更好地组织代码、提高代码的可维护性,并能够更容易地进行代码重用和测试。

在Struts2中,Model代表数据模型,可以是POJO(Plain Old Java Object)或者是与数据库交互的实体类;View代表用户界面,通常是JSP页面;Controller则负责处理用户请求、调用业务逻辑,并将处理结果返回给用户。

二、强大的标签库Struts2提供了丰富的标签库,使开发者能够更轻松地构建用户界面。

这些标签库包括表单标签、数据展示标签、控制流标签等,可以大大简化页面开发的工作量。

例如,开发者可以使用Struts2的表单标签库来生成表单,并自动处理表单的数据绑定、验证和错误提示。

这样,开发者无需手动编写大量的HTML和JavaScript代码,能够更快速地完成表单开发。

三、拦截器Struts2的拦截器是其核心特性之一,可用于在请求到达Controller之前和之后执行一些通用的处理逻辑,如日志记录、权限验证、异常处理等。

开发者可以通过配置拦截器栈,将多个拦截器按照特定的顺序组合起来,实现复杂的请求处理流程。

拦截器的使用使得开发者能够将通用的处理逻辑从业务逻辑中分离出来,提高了代码的可维护性和重用性。

同时,Struts2还提供了许多内置的拦截器,如参数封装拦截器、文件上传拦截器等,方便开发者处理不同类型的请求。

四、数据验证在Web应用程序中,数据验证是一项重要的任务。

Struts2提供了强大的数据验证机制,开发者可以通过简单的配置实现对表单数据的验证。

struts2的select标签显示默认值问题总结

struts2的select标签显示默认值问题总结

今天做订单模板管理中的修改模板功能时,需要将模板中的某些信息从数据库里取出并添加显示到页面上的下拉框里面。

因为需要默认显示之前保存过的信息,所以涉及到一个下拉框默认取值的问题。

之前了解过struts提供的<s:select>标签能根据一个list集合动态生成下拉框选项,所以使用了<s:select>来取值,但是struts2设计的一个让人十分无语的对应关系直接浪费了我一下午的时间。

首先,简单介绍下<s:select>标签的用法。

1.第一个例子:<s:select list="{'aa','bb','cc'}" theme="simple" headerKey="00" headerValue="00"></s:select> 2..第二个例子:<s:select list="#{1:'aa',2:'bb',3:'cc'}" label="abc" listKey="key"listValue="value" headerKey="0" headerValue="aabb">3..第三个例子:<%java.util.HashMap map = new java.util.LinkedHashMap();map.put(1,"aaa");map.put(2,"bbb");map.put(3,"ccc");request.setAttribute("map",map);request.setAttribute("aa","2");%><s:select list="#request.map" label="abc" listKey="key" listValue="value"value="#request.aa" headerKey="0" headerValue="aabb"></s:select>headerKey headerValue 为设置缺省值这是网上找到的三个简单的例子,相信通过这三个例子已经大致可以了解<s:select>的用法,下面我将结合具体工作中出现的问题,重点介绍<s:select>如何设置有默认选中项的方法。

struts2面试题

struts2面试题

struts2面试题Struts2是一个基于Java开发的Web应用程序框架,被广泛应用于企业级Java应用开发中。

在面试中,面试官可能会提出一些关于Struts2的问题,以评估应聘者的技术水平。

下面是一些常见的Struts2面试题及其详细答案,希望对你在面试中有所帮助。

1. 什么是Struts2?Struts2是一个轻量级的、基于MVC模式的Web应用程序框架。

它采用Java Servlet API和JavaServer Pages (JSP)技术,并提供了一种简单易用的方式来开发可维护和可扩展的Web应用程序。

2. Struts2的主要特性是什么?Struts2的主要特性包括:- MVC架构:将应用程序分为模型、视图和控制器,使开发更容易管理和扩展。

- 拦截器:通过拦截器可以在请求处理的各个阶段添加自定义的逻辑。

- 标签库:提供了丰富的标签库,简化了页面开发。

- 表单验证:提供了灵活且强大的表单验证机制,可以验证用户输入的数据。

- 国际化支持:支持多语言和本地化。

- 配置简单:通过配置文件来管理应用程序的行为。

3. Struts2的工作原理是什么?Struts2的工作原理如下:1) 客户端发送HTTP请求到服务器。

2) 服务器将请求交给Struts2的过滤器(Filter)。

3) 过滤器通过配置文件找到对应的Action,并调用相应的方法。

4) Action处理请求,并返回一个结果页面的名称或一个结果对象。

5) 结果页面的名称通过配置文件进行映射,服务器将其发送给客户端。

4. 什么是Struts2中的Action类?Action类是Struts2框架中的核心组件,用于处理Web请求。

一个Action类对应一个业务功能,其包含了要执行的方法和数据。

它负责接收请求、处理业务逻辑、将结果返回给前端页面。

5. Struts2中的拦截器是什么?有哪些内置的拦截器?拦截器是Struts2中的组件,用于在请求处理的各个阶段添加自定义的逻辑。

Struts2标签库和OGNL

Struts2标签库和OGNL

第8章?第9章Struts2标签库和OGNL学习内容Struts 2标签库OGNL能力目标熟练使用Struts 2常用标签熟练使用OGNL本章简介前面我们编写的案例使用的都是HTML 标签,这些标签并不能很好的与Struts 2框架结合,Struts 2和Struts 1一样都自带了功能强大、成熟完善的标签库供我们使用,通过使用这些标签库可以大大提高开发效率和代码的可维护性。

其实Struts 2的标签库是建立在OGNL 基础上的,OGNL 是一种功能强大的表达式语言,通过简单的语法即可存取对象的属性、调用对象的方法、遍历等功能。

本章将学习OGNL 和Struts 2标签库,包括数据访问标签、控制标签、表单标签和非表单标签等。

核心技能部分9.1 OGNL9.1.1 ActionContextStruts 2中的ActionContext 、ValueStack 和StackContext 对象与OGNL 密切相关,理解这三个对象时学习OGNL 的前提。

在前面的学习中,我们已经在使用ActionContext 、ValueStack 和StackContext 对象了,这三个对象的作用及其之间的关系如图8.1.1所示。

图8.1.1ActionContext1. ActionContext 对象ActionContextValueStackStackContextAction 其他Session Request Application Parameters Attribute 其他ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文。

我们可以把上下文可以看作是一个容器,用于存放Action执行时需要使用的对象,例如请求的参数(Parameter)、会话(Session)、Servlet上下文(ServletContext)等。

struts2_超链接与action使用

struts2_超链接与action使用

Struts2 超链接和 action 使用Struts2.0 链接标签Web 应用区别于普通的站点之处在于Web 应用可以创建一个动态的响应。

为了使从一个页面中链接一个动态数据变得简单,Struts2 框架提供了一系列的标签。

Struts 标签的一种用法是创建链接到其他 Web 资源,特别是针对那些在本地应用中的资源。

1.普通链接Web 程序中最普通的应用是链接到其他页面,下面看 Welcome.jsp。

<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %><html><head><title>Welcome</title><link href="<s:url value="/css/tutorial.css"/>" rel="stylesheet"type="text/css"/></head><body><h3>Commands</h3><ul><li><a href="<s:url action="Login_input"/>">Sign On</a></li><li><a href="<s:url action="Register"/>">Register</a></li></ul></body></html>1.1 说明1.<%@ taglib prefix="s" uri="/struts -tags" %>此句表示导入 struts 标签,并以 s 为前缀。

Struts2介绍

Struts2介绍

Struts2集成指南关于Struts2Struts是Apache软件基金会(ASF)赞助的一个开源项目。

它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。

它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller〔MVC〕设计模式的应用框架〔Web Framework〕,是MVC经典设计模式中的一个经典产品。

Struts,a history在Java EE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServer Pages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。

因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。

为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,Craig McClanahan采用了MVC的设计模式开发Struts。

后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架。

Craig McClanahan2006年,WebWork与Struts这两个优秀的Java EE Web框架(Web Framework〕的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts 2”,原Struts的1.x版本产品称为“Struts 1”。

至此,Struts项目并行提供与维护两个主要版本的框架产品——Struts 1与Struts 2。

Struts1 vs. Struts2侵入性Struts 1在编程方面是面向抽象类编程,而不是面向接口编程。

Struts 1要求自定义Action 类继承一个特定的抽象基类Action。

另一方面,Struts 1的 Action 依赖于 Servlet API,因为Struts 1 Action 的execute 方法中有HttpServletRequest 和HttpServletResponse 方法。

软件开发框架Struts2标签库习题与答案

软件开发框架Struts2标签库习题与答案

一、多选题1.Struts 框架提供了哪几种标签库()。

A.HTML 标签库B.Bean 标签库C.Logic 标签库D.Template 标签库E.Nested 标签库2.下列哪个Strtus 标签能生成HTML 超链接<a> 元素()。

A.<html:html> 标签B.<html:base> 标签C.<html:img> 标签D.<html:link> 标签E.<html:rewrite> 标签3.以下哪些Struts 标签()能生成与HTML 表单相关的元素。

A.<html:link> 标签B.<html:text> 标签C.<html:radio> 标签D.<html:multibox> 标签E.<html:select> 标签4.下面哪些标签()能创建HTML 表单复选框控件。

A.<html:checkbox> 标签B.<html:radio> 标签C.<html:multibox> 标签D.<html:select> 标签E.<html:cancel> 标签5.使用下列哪个标签()能在页面输出在验证表单时发生的错误。

A.<html:multibox> 标签B.<html:errors> 标签C.<html:messages> 标签D.<html:error> 标签E.<html:cancel> 标签6.Struts Bean 标签库能提供下列哪些服务()。

A.访问HTTP 请求报头信息B.访问JSP 隐含对象C. 访问 Web 应用资源D. 定义 JavaBeanE. 输出 JavaBean7. 下列哪个标签()能访问 JSP 隐含对象。

struts2(checkbox_radio_select)表单标签的应用及详细事例

struts2(checkbox_radio_select)表单标签的应用及详细事例

一、表单标签_checkbox复选框如果集合为list<s:checkboxlist name="list"list="{'Java','.Net','RoR','PHP'}"value="{'Java','.Net'}"/>生成如下html代码:<input type="checkbox"name="list"value="Java" checked="checked"/><label>Java</label><input type="checkbox"name="list"value=".Net" checked="checked"/><label>.Net</label><input type="checkbox"name="list" value="RoR"/><label>RoR</label><input type="checkbox"name="list"value="PHP" /><label>PHP</label><input type="checkbox"name="list"value="PHP" /><label>PHP</label>************************************************ *****<br>如果集合为MAP<s:checkboxlist name="map"list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}"listKey="key"listValue="value"value="{1,2,3}"/>生成如下html代码:<input type="checkbox"name="map"value="1" checked="checked"/><label>瑜珈用品</label><input type="checkbox"name="map"value="2" checked="checked"/><label>户外用品</label><input type="checkbox"name="map"value="3" checked="checked"/><label>球类</label><input type="checkbox"name="map"value="4"/><label>自行车</label>******************************************************<br>如果集合里存放的是javabean(id和name为Person的属性)<%Person person1 = new Person(1, "第一个");Person person2 = new Person(2, "第二个");List<Person> list = new ArrayList<Person>();list.add(person1);list.add(person2);request.setAttribute("persons", list);%><s:checkboxlist name="beans"list="#request.persons"listKey="id"listValue="name"/>生成如下html代码:<input type="checkbox"name=“beans" value="1"/><label>第一个</label><input type="checkbox"name=“beans" value="2"/><label>第二个</label>************************************************ ******<br>表单标签_radio单选框<a href="radio.jsp">测试</a><br>表单标签_select单选框<a href="select.jsp">测试</a>代码运行结果如下:----------------------------------------------------------------------------------------------------------------------------二、表单标签_radio下拉选择框如果集合里存放的是javabean(id和name为Person的属性) <%Person person1 = new Person(1, "第一个");Person person2 = new Person(2, "第二个");List<Person> list = new ArrayList<Person>();list.add(person1);list.add(person2);request.setAttribute("persons", list);%>< s:radio name="beans" list="#request.persons" listKey="id"listValue="name"/> 生成如下html代码:<input type="radio"name="beans"id="beans1" value="1"/><label>第一个</label><input type="radio"name="beans"id="beans2" value="2"/><label>第二个</label>************************************************ **************<br>该标签的使用和checkboxlist复选框相同。

尚学堂Struts2_02

尚学堂Struts2_02

<param name=“excludeMethods”>m1,m2</param> <param name="includeMethods">m2</param>
</interceptor-ref> </action> 如果不指定excludeMethods和includeMethods,则所有方法都会被截拦器 截拦. 如果方法在excludeMethods和includeMethods都配置了,则 includeMethods取胜. 如果需要过滤多个方法,方法名之间用逗号隔开.
版权所有:尚学堂科技
尚学堂
手把手教程
Struts+Hibernate+Spring
HttpServletRequest
HttpServletResponse
核心控制器
Intercepter1
Intercepter2
Intercepter3
Action
Result
版权所有:尚学堂科技
尚学堂
手把手教程
版权所有:尚学堂科技
尚学堂Βιβλιοθήκη 手把手教程Struts+Hibernate+Spring
Struts2拦截器——工作原理
拦截器的执行过程是一个递归的过程,越是位于前面的拦截器越被先执行 ,但也是越晚退出。因此,拦截器的调用处理形成了“先进后出”的堆栈 的模式,因此也叫拦截器栈。
版权所有:尚学堂科技
尚学堂
Struts+Hibernate+Spring
Struts2拦截器——作用及意义 早期MVC框架将一些通用操作写死在核心控制器中,致使框 架灵活性不足、可扩展性降低 Struts 2将核心功能放到多个拦截器中实现,拦截器可自由选 择和组合,增强了灵活性,有利于系统的解耦 截拦器是Struts2中最重要的概念之一,是Struts2灵魂。 Struts2中有80%的功能都通过截拦器实现 提高更高层次的解耦,无须侵入框架本身 便可以添加新的功 能.

struts2标签详解

struts2标签详解

Struts2 标签详解详细的说明了struts2所有标签由整理版权属 以及原作者。

由于标签太多难做目录索引,如果你觉得有目录索引更好,请到/p/myjdemo/downloads/list 下载CHM版本的Struts2标签详解,谢谢。

aa标签创建一个HTML超链接,等价于HTML 的<a href=""....示范代码:<s:a href="login.action">登陆</s:a>action使用action标签可以允许在JSP页面中直接调用Action,因为需要调用Action,故可以指定需要被调用Action的name以及namespace。

如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图支援)包含到本页面中来。

action标签的属性:id:可选属性,该属性将会作为该Action的引用IDname:必填属性,指定该标签调用哪个Actionnamespace:可选,指定该标签调用的Action所在的namespace. executeResult:可选,指定是否要将Action的处理结果页面包含到本页面。

默认是false,即不包含ignoreContextParams:可选,它指定该页面中的请求参数是否需要传入调用的Action、默认是false,即将本页的请求参数传入被调用的Action。

下面是本示例应用中的Action类,包含连个处理逻辑。

代码如下public class TagAction extednds ActionSupport{//封装用户请求参数的author属性private String author;//author的get和set的方法,省略……public String execute() throws Exception{return "done";}public String login() throws Exception{ServletActionContext.getRequest().setAttribute("author",getAuthor()); return "done";}}上面的Action类包含两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。

struts2常用标签详解

struts2常用标签详解

struts2标签详解A:<s:a xhref=""></s:a>-----超链接,类似于html里的<a></a><s:action name=""></s:action>-----执行一个view里面的一个action<s:actionerror/>-----如果action的errors有值那么显示出来<s:actionmessage/>-----如果action的message有值那么显示出来<s:append></s:append>-----添加一个值到list,类似于list.add();<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajaxB:<s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值C:<s:checkbox></s:checkbox>-----复选框<s:checkboxlist list=""></s:checkboxlist>-----多选框<s:combobox list=""></s:combobox>-----下拉框<s:component></s:component>-----图像符号D:<s:date/>-----获取日期格式<s:datetimepicker></s:datetimepicker>-----日期输入框<s:debug></s:debug>-----显示错误信息<s:div></s:div>-----表示一个块,类似于html的<div></div><s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框E:<s:if test="#name=‟hujianqiang‟">asdfasdf</s:if><s:elseif test=""></s:elseif><s:else></s:else>-----这3个标签一起使用,表示条件判断F:<s:fielderror></s:fielderror>-----显示文件错误信息<s:file></s:file>-----文件上传<s:form action=""></s:form>-----获取相应form的值G:<s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用H:<s:head/>-----在<head></head>里使用,表示头文件结束<s:hidden></s:hidden>-----隐藏值I:<s:i18n name=""></s:i18n>-----加载资源包到值堆栈<s:include value=""></s:include>-----包含一个输出,servlet或jsp页面<s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入<s:iterator></s:iterator>-----用于遍历集合L:<s:label></s:label>-----只读的标签M:<s:merge></s:merge>-----合并遍历集合出来的值O:<s:optgroup></s:optgroup>-----获取标签组<s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框P:<s:param></s:param>-----为其他标签提供参数<s:password></s:password>-----密码输入框<s:property/>-----得到'value'的属性<s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性R:<s:radio list=""></s:radio>-----单选按钮<s:reset></s:reset>-----重置按钮S:<s:select list=""></s:select>-----单选框<s:set name=""></s:set>-----赋予变量一个特定范围内的值<s:sort comparator=""></s:sort>-----通过属性给list分类<s:submit></s:submit>-----提交按钮<s:subset></s:subset>-----为遍历集合输出子集T:<s:tabbedPanel id=""></s:tabbedPanel>-----表格框<s:table></s:table>-----表格<s:text name=""></s:text>-----I18n文本信息<s:textarea></s:textarea>-----文本域输入框<s:textfield></s:textfield>-----文本输入框<s:token></s:token>-----拦截器<s:tree></s:tree>-----树<s:treenode label=""></s:treenode>-----树的结构U:<s:updownselect list=""></s:updownselect>-----多选择框<s:url></s:url>-----创建urlStruts2常用的Ajax标签Struts2为了简化Ajax过程,提供了一些常用的Ajax标签,对于一些更复杂的Ajax通信过程,我们可以使用JSON插件来实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Strus2标签库Struts2提供了一套标签库用于简化JSP层的编程,开发者只需要标签中做少量的设置,就可以实现各种常用的效果。

Struts2的标签与Action联系比较紧密,使用标签后,Struts会自动完成JSP层的显示数据、在Action层采集数据等工作。

Struts2的标签都统一包含在struts-tags.tld文件中(位于struts2-core-2.2.1.jar中),使用统一前缀。

Struts标签库大致分为:UI标签:包括表单标签,非表单标签非UI标签:流程控制标签,数据访问标签首先要在JSP中使用taglib编译指令导入标签库,然后才可以使用标签。

<%@taglib prefix="s" uri="/struts-tags"%>以上代码用于导入Struts2标签库,其中URI就是对应web.xml文件中指定的标签库的URI,而prefix属性值是该标签库的前缀。

第1节OGNL语言OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。

它使用相同的表达式去存取对象的属性。

OGNL语法类似于EL,主要使用.作为操作符,例如要访问person.getCountry().getName()可以这样写:。

1.1 OGNL的常用符号主要是#号,其作用有三种:1. 访问OGNL上下文与ActionContext资源,相当于ActionContext.getContext(),常用#属性如下表:<!-- 返回Http请求中的参数 --><p>parameters: <s:property value="#erName" /></p>相当于:request.getParameter("userName");<!-- 返回request中的属性 --><s:property value="#erName" />相当于:request.getAttribute("userName");<!-- 返回Session中的属性 --><s:property value="#erName" />相当于:session.getAttribute("userName");<!-- 返回Application中的属性 --><s:property value="#erName" />相当于:application.getAttribute("userName");<s:property value="#erName" />2.用于过滤或筛选集合例如:books.{?#this.price<20},表示所有的price<20的书。

“?”:取出所有符合选择逻辑的元素。

以上代码中,直接在集合后紧跟.{}运算符表明用于取该集合的子集,在{}内使用?表明取出所有符合选择逻辑的元素,而#this代表集合里的元素。

<s:iterator value="books.{?#this.price < 20}"><li><s:property value="title" />- $<s:property value="price" /></li> </s:iterator>以上代码的含义是:当books对象中的某个元素中的属性price大于35时,就输出。

其中title和price分别是books对象中的变量(实例域)。

Book是一个POJO,其中包括如下变量和其get/set方法。

private String isbn;private String title;private double price;books是一个泛型列表集合,其本例中的泛型类型是Book,其创建如下:private List<Book> books= new LinkedList<Book>();其数据的装入如下:books.add(new Book("978-0735619678", "Code Complete, Second Edition", 32.99));3.构造Map<s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />以上代码构造一个Map对象。

对象名为foobar,其中的值为键值对,foo1="bar1",foo2=bar2;当要构造一个List对象的时候,则不需要“#”。

<s:property value="#foobar['foo1']" />以上代码可以访问一个Map对象中的键。

综合实例:StrutsTagDemo01在地址栏输入:http://localhost:8080/StrutsTagDemo01/ognl.action?id=1&id=2&id=31.2 控制标签以下标签示例均在StrutsTagDemo02项目中。

1. iterator标签遍历集合iterator标签用于遍历集合(包括List、Set、Map)、数组等。

可以使用OGNL表达式对数据进行过滤。

可以指定如下3个属性:value:这是一个可选的属性,value属性指定的就是被迭代的集合,被迭代的集合通常都使用OGNL表达式指定。

id:这是一个可选的属性,该属性里指定了集合里元素的ID。

status:这是一个可选的属性,该属性指定迭代时的IteratorStatus实例,通过该实例即可判断当前迭代元素的属性。

例如是否是最后一个,以及当前迭代元素的索引等。

如果为该标签指定了status属性,即每次迭代时都会有一个IteratorStatus实例,该实例包括如下几个方法:int getCount() 返回当前迭代了几个元素int getIndex() 返回当前迭代元素的索引boolean isEven() 返回当前被迭代的元素的索引是否是偶数boolean isOdd() ................................奇数boolean isFirst() 返回当前被迭代的元素是否是第一个元素boolean isLast() ..........................最后一个元素<struts:iterator value="magazineList.{?#this.price>18}"><struts:property value="name" /> - ¥<struts:property value="price" />. <br/> </struts:iterator>2. if、elseif、else标签控制流程Struts2的判断标签有3个:<struts:if> <struts:elseif> <struts:else>其右if标签与else标签都有test属性示例:IfAction.java ifTag.jsp3. append标签连接多个Listappend标签用于将多个集合对象拼接起来,组成一个新的集合。

从而允许通过一个<s:iterator.../>标签完成多个集合的迭代。

示例:AppendAction.java appendTag.jsp地址栏输入:http://localhost:8080/StrutsTagDemo02/Append.action4. merge标签取集合的并集merge标签类似于append标签,能将两个List连接成一个List。

它们的用法完全一致。

不同的是,append标签是先添加集合1所有元素,再添加集合2所有元素;而merge是先添加集合1第1个元素,再添加集合2第1个元素,再添加集合1第2个元素,再添加集合2第2个元素。

示例:AppendAction.java、mergeTag.jsphttp://localhost:8080/StrutsTagDemo02/Append.action5.subset标签subset标签用于筛选集合里的元素,取得集合的子集。

它使用一个Filter,将不合格的元素过滤掉,剩下原集合的一个子集。

subset需要使用decider属性,decider是个过滤器,必须实现SubsetIteratorFilter.Decider接口以及decide方法。

示例:SubsetAction.java、subsetTag.jsp在地址栏输入:http://localhost:8080/StrutsTagDemo02/Subset6.generator标签generator标签用于将字符串转化为List,相当于Java的split常用属性:count:该属性是一个可选的属性,该属性指定生成集合中元素的总数。

separator:这是一个必填的属性,该属性指定用于解析字符串的分隔符。

val:这是一个必填的属性,该属性指定被解析的字符串。

converter:可选属性,指定了一个转换器,负责将集合中的每个字符串转换成对象。

示例:generatorTag.jsp1.3 数据标签以下标签示例均在StrutsTagDemo02项目中。

1. action标签该标签用于在JSP页面中直接调用Action,并将结果包含进来,相当于JSP中的include,因为需要调用Action,故可以指定需要被调用Action的name及namespace。

如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图资源)包含到本页面中来。

相关文档
最新文档