struts2标签库总结
- 格式:doc
- 大小:362.50 KB
- 文档页数:18
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的值。
课堂作业1、简述MVC模型,其中M、V、C分别代表什么?答:MVC是软件工程中的一种软件架构模式,M(Model)、V(View)、C(Controller)。
2、struts2的运行原理,或者说Struts2框架的处理流程是怎样的。
(1).浏览器发送请求;(2)FilterDispatcher根据用户的请求调用相应用action;(3)Struts2 的拦截器链自动对请求调用通用功能;(4)回调 Action 的 execute 方法;(5)Execute 方法处理结果将被输出到浏览器中,对应于相应的表现技术。
3、Action接口和ActionSupport类有什么作用?为什么我们写Action类时要实现Action接口?答:actionsuppot是struts2框架的一个默认的Action类,该类里已提供许多默认方法;Actionsupport可以作为struts应用的action 处理类,继承该类可以简化action的开发。
4、web应用通过哪个配置文件加载struts2框架?struts2核心框架本身的默认配置的配置文件是哪个?用户用来自行配置设置的配置文件是哪两个(即struts2提供给用户的两个主要配置文件)?Action的默认处理类是什么?答:web应用通过web.xml文件加载struts2框架。
struts2核心框架本身的默认配置的配置文件是struts.xml。
用户用来自行配置设置的配置文件是:配置Action的struts.xml和配置Strusts2全局属性的struts.properties。
Action的默认处理函数是actionsuppot。
5、是否可以在一个action中处理多个动作,如何配置?答:可以,为 action 元素指定 method 属性,让 action 类调用指定的方法,在 struts.xml 中配置 action 标签的 method 属性。
struts2笔记之struts:property标签1、访问ActionContext资源request,session,parameters(1)、action实现ServletRequestAware接⼝,并且重写setServletRequest()// request对象,不⽤设置get⽅法,只须重写set⽅法private HttpServletRequest request;@Overridepublic String execute() throws Exception {// TODO Auto-generated method stub...........request.setAttribute("list", list);request.setAttribute("dPage", dPage);...........}@Overridepublic void setServletRequest(HttpServletRequest arg0) {// TODO Auto-generated method stubthis.request = arg0;}(2)jsp调⽤request中的值或⽅法<s:property value="#request.dPage.get()" default="10"/><s:property value="#request.list" default="10"/2、访问Action值栈中的对象或⽅法或对象的属性或对象的⽅法:(要求get-set⽅法)2.1 要求action中的对象有get -set⽅法,⽽且对象名最好不要有⼤写字母,容易出错2.2 如果要访问对象的其他属性或⽅法,这写属性⽅法也要get-set2.3 ⽰例:<s:property value="attrName"/><s:property value="methodName()"/><s:property value="dpage.currentPage" default="0"/><s:property value="dpage.getpageCount()" default="0"/>12,投影<s:property value="listName.{?#this.age==1}"/><s:property value="listName.{^#this.age>1}"/><s:property value="listName.{$#this.age==1}"/><s:property value="listName.{$#this.age==1}.{age}==null"/><s:property value="[0]"/>值栈中的对象Done!。
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是一种流行的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基础知识Struts2概述1.Struts2框架应用javaee三层结构中的web层框架。
2.Struts2框架在struts1和webwork基础之上发展的全新框架。
3.Struts2所解决的问题:在以往实现一个功能时,都需要写很多的servlet,从而造成后期维护上的不方便。
图解:4.现在比较稳定的Struts2版本struts-2.3.24-all.zip5.web层常见框架1.struts2.springMVCStruts2框架入门1.导入jar包1.在lib里面有jar包,但不能全部导入,因为里面含有一些spring包,是不能使用的,导入会导致程序不能运行。
2.到app目录里面复制案例的jar包是最好的方法。
2.创建action3.配置action类的访问路径1.创建struts2核心配置文件,该核心配置文件位置和名称是固定的,位置必须在src下面,名称为struts.xml 。
2.引入dtd约束,可以在案例文件中找到,复制在struts.xml文件中即可。
3.action的配置*注意访问路径:http://域名/端口号/项目名/action名.action注意:.action可以省略,但建议不要省略,为了兼容一些老版本的浏览器。
4.配置Struts2的过滤器,可以在案例中的web.xml文件中找到,复制粘贴即可。
Struts2执行过程图解:Struts2配置1.是一种常量标签2.修改Struts2的默认常量值1.常用方式在struts.xml中进行配置。
2.其它两种方式1.在src下面创建struts.properties文件并修改。
2.在web.xml文件中进行修改。
3.Struts2最常用的常量struts.il8n.encoding=UTF-8,解决表单在通过post方式提交中文时,中文乱码的问题。
Struts2笔记(一)可使用全局页面。
1、配置方法:在package标签下配置2、注意:该标签只能在一个package标签中使用,如果有多个标签,需要重新定义。
struts2标签库总结
struts2标签是struts2的重点,和action配合使用,就是struts2的重点。
偶第一次使用struts2,就觉得比jsp/servlet这样的方案,容易多了。
在jsp放个input之类的文本框,在servlet中用
request.getParameter()来获取值insert数据库,然后再用request.setAttribute()来给页面返回值。
代码量非常可观。
但struts2中就方便多了。
偶一般的写法是这样的。
写一个JAVA类继承ActionSupport,然后在JSP 页面是就可以直接使用了。
例:<s:textfield name="" label="" />
言归正传,struts2的标签分为UI标签和非UI标签。
下面就struts2与html作个对比.在此推荐一个eclipse html插件
eclipse tidy: /project/showfiles.php?group_id=68009
另外,struts2的tag是默认在enter时自动提交表单,要屏蔽此功能。
在onkeydown事件中加入键盘触发代码。
例:if(event.keyCode==13) event.keyCode=9;就是将回车转成tab键.
还有一种方法更为简便方法:
//////////////////////////////////////////////////////////////////////////////////////
leftTitle="Java图书"
rightTitle="C/C++图书"
list="{'《Java Web开发详解》', '《Struts 2深入详解》', '《Java快速入门》'}"
headerKey="-1"
headerValue="--- 请选择 ---"
emptyOption="true"
doubleName="book2"
doubleList="{'《VC++深入详解》', '《C++ Primer》', '《C++程序设计语言》'} "
doubleHeaderKey="-1"
doubleHeaderValue="--- 请选择 ---"
doubleEmptyOption="true"
addToLeftLabel="向左移动"
addToRightLabel="向右移动"
addAllToLeftLabel="全部左移"
addAllToRightLabel="全部右移"
selectAllLabel="全部选择"
leftUpLabel="向上移动"
leftDownLabel="向下移动"
rightUpLabel="向上移动"
rightDownLabel="向下移动"/>
</s:form>。