使用Struts2

原文[url]http://developer.51cto.com/art/200906/126965.htm[/url]
[url]http://www.blogjava.net/lzhidj/archive/2008/07/08/213445.html[/url]
正常使用struts2.1.6,至少需要如下6 个jar包:
struts2-core-2.1.6.jar
freemarker-2.3.13.jar
commons-logging-1.0.4.jar
ognl-2.6.11.jar
xwork-2.1.2.jar
commons-fileupload-1.2.1.jar

如果要使用Struts2的注释功能,在Struts2.0.14中只要引用了struts2-core-2.1.6.jar文件即可,而在 struts2.1.6中还需要引用struts2-convention-plugin-2.1.6.jar文件,而且注释类的包也变了(又增加了一些新的注释类),Struts2.0.14中的注释类在org.apache.struts2.config包中,而struts2.1.6的注释类在 org.apache.struts2.convention.annotation包中。除此之外,有些注释的属性名也变了,如Result注释在 struts2.0.14中有一个value属性,表示一个要转入的URL,而Struts2.1.6的Result注释中使用location属性代替了value属性(不再有value属性了),但它们的使用方法相同。

Struts2的环境要求
Apache Struts2的环境需求如下:
Servlet API 2.4
JSP API 2.0
Java 5
需要提醒的是,在Struts中会用到Annotation,所以请将JDK版本升级到1.5.

Struts2的新特征
Action 类:
• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。

可测性:
• 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
• Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

捕获输入:
• Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
• Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。

表达式语言:
• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).

绑定值到页面(view):
• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。

类型转换:
• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。

校验:
• Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
• Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性

Action执行的控制:
• Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
• Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
Centos 7 Linux 离线安装单机 Kafka:下载、安装、配置、使用 本文详细介绍了在 CentOS 7 系统上离线安装单机版 Apache Kafka 的完整流程,包括环境准备(JDK 安装)、Kafka 安装包上传与解压、关键配置修改(如监听地址)、ZooKeeper 与 Kafka 服务的启动,以及 Topic 的创建、消息的生产和消费等基础操作。适用于无网络环境下的 Kafka 快速部署与学习,为后续开发或测试提供本地消息队列支持。 阅读详情

相关推荐

企业财务共享服务中心业务蓝图规划方案【附全文阅读】

《企业财务共享服务中心业务蓝图规划方案》为集团企业提供财务共享中心建设全流程指导,涵盖战略定位、组织架构、业务流程、信息系统、运营管理和变革实施六大维度。方案明确共享中心"交易处理+战略支撑"双重职能,设计专业分组架构,筛选标准化高、价值明确的流程(如核算、资金结算等)纳入共享范围,构建业财一体化平台,并配套绩效与风险管控体系。结合项目型企业管理特点,分阶段推进实施,助力企业实现财务集中化与标准化转型。

cdfunlove的博客 970

SSH中struts2使用

struts2第一个struts程序创建web.xml创建structs2.xml创建启动类 HelloAction.java引入log4j2.xml文件导入相关structs的jar包struts运行流程action 动作类的三种写法不实现接口和继承类实现 Action 接口继承 ActionSupport 类(推荐使用)Action 动作类的三种访问方式传统的访问方式通配符的访问方式动态方法调用的访问方式常用的视图类型struts2使用 Servlet 的 API 第一个struts程序 创建web

weixin_41472455的博客 339

Robot Framework 7.0 报告解析

本文深入解析 Robot Framework 7.0 新增的 JSON 报告功能,手把手教你如何从 output.xml 转换为结构清晰的 output.json,并通过 Python 脚本提取关键测试指标。文章附完整示例、命令、解析脚本,支持导出为 CSV 和 Markdown,方便接入可视化看板、群通知和 CI 流程。适用于测试自动化、质量平台建设和回归趋势分析场景。

点点寒彬的博客 235

struts2struts2使用

1.使用步骤 1) 导入struts2的支持jar包 名称 说明 struts2-core-2.3.4.1.jar Structs2的核心类库 xwork-core-2.3.4.1.jar xwork的核心类库,webwork框架的支持,struts2的前身就是webwork ognl-3.0.5.jar OGNL表达式语言类库 freemarker-2.3.1...

dingchanjuan4613的博客 231

struts2注解使用

struts2注解使用.doc.bz2

bits00的专栏 117

Struts2基于MyEclipse的使用

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。 1.创建web项目 2.为web项目添加Struts2 在web项目名称上右键 → MyEclipse → Add Struts Capabilities… 在弹出的Add Struts Capabiliti...

哈利路亚里路亚 391

struts2标签与jstl标签混合使用

1.以前一直使用jstl标签,后来也开始使用struts2的一些标签,毕竟struts2的有些标签使用起来还是比较方便 项目中常常会出现struts2标签和jstl标签混和用的情况,比如在自定义标签或者在循环标签等 1.在jstl中使用struts2 1.   2.     jstl:   3.     el:${ee.id}   4.     strut

lw744355998的专栏 2006

使用Maven构建Struts2项目

1. Struts2的安装配置 1.1下载 进入apache的官方网:http://struts.apache.org/download.cgi#struts2316下载struts2的GA完整版,Struts 2.3.16.3是Struts 2.3.X系列最稳定的版本。 下载完后,解压到本地磁盘,该文件夹包含如下文件结构: apps:该文件夹下包含了struts 2 的示例应用。 do

wangli61289的专栏 3万+

Struts2使用FreeMarker

Struts2使用FreeMarker作为页面展示层和使用FreeMarker模板生成文件的示例。

海洋之心 1万+

如何使用struts2搭建web项目

如何使用struts2搭建web项目 具体有以下步骤:     step1,创建一个JavaWeb Project     step2,添加struts2基本类库     step3,在web.xml中配置struts2的前端控制器     step4,控制器配置文件src/struts.xml step1创建一个JavaWeb Project       

龙腾四海365的专栏 3899

Struts2基本使用

#2020云栖大会#阿里云海量offer来啦!投简历、赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>> ...

木瓜煲鸡脚的博客 258

Struts2学习笔记二(Struts2使用)

注:学习笔记,可能有些地方会有错误,仅供参考 Struts2的基本使用 由于我们使用Struts2代替了表现层的Servlet,同样我们也需要学习如果通过Struts2获取页面传来的数据,或者如何向页面传数据,同时还要学习如何转发或者重定向到一个逻辑页面(jsp或者action类)。 Struts2的域对象的使用Servlet时,我们是通过域对象向页面传数据,这些域对象都是Servl...

水中无名鱼的博客 218

空中下载(OTA)技术

空中下载(OTA)技术 空中下载是一种无须与SIM卡直接接触或连接即可与SIM卡进行通信、往卡上加载应用并对SIM卡进行管理的技术。 空中下载技术可以让网络运营商以很快的速度和较低的成本推出新的SIM服务或修改SIM卡上的内容。 空中下载技术基于客户端/服务器方式,服务器端为运营商的后台系统(客服中心、计费系统、应用服务器…),客户端则是一块SIM卡。 运营商的后台系统...

plane 1588

JSP乱码解决 之 pageEncoding和contentType属性,UTF-8 GBK gb2312 详解

[b]文章来源于志伟教程资料网 ([url]http://www.zhiweinet.com[/url])。[/b] UTF-8编码是什么? UTF-8 编码是一种被广泛应用的编码,这种编码致力于把全球的语言纳入一个统一的编码,目前已经将几种亚洲语言纳入。UTF 代表 UCS Transformation Format. UTF-8 采用变长度字节来表示字符,理论上最多可以到 6...

plane 813

获取资源相对路径

[code="java"] import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Properties; import org.apache.commons.logging.L...

plane 411

java的spring的quartz 时间配置相应字符串的说明与实例

本文源自:[url]http://js.sse6.cn/gzsgfrz/jszj/2010-02-02/1431.html[/url] 使用spring的quartz循环任务的时候,有一件事,一直让我很奇怪,哪就是相应的循环设置的字符串,网上收录了以下一篇文章,感觉说得比较清楚,自己记录一下,也方便以后参阅学习。 一个Cron-表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个...

plane 335

解决request.getParameter()中文乱码的问题

jsp页面中 用click事件调用js 此时的页面编码要用UTF-8 location.href=encodeURI(encodeURI("test.do?para=测试"); 在jsp页面中还可以用 测试 Servlet中用decode解码 String para= request.getParameter("para"); para = java.net.URLDeco...

plane 316

搭建SVN服务端

转载[url]http://hi.baidu.com/axhack/blog/item/0e8b4c589d495f84810a1861.html[/url] 下载 svn-1.4.0-setup.exe(服务器) http://subversion.tigris.org/files/documents/15/34093/svn-1.4.0-setup.exe Tortoise...

plane 267

java 图片压缩

[url]http://fandayrockworld.iteye.com/blog/628551[/url]

plane 258

JS 验证 时间 和 特殊字符

[code="java"] //日期格式判断 function IsValidDate(dateStr) { var reg = /^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469]...

plane 212

读取Properties文件的几种方式

1。使用Java.util.Properties类的load()方法 示例:InputStreamin=lnewBufferedInputStream(newFileInputStream(name)); Propertiesp=newProperties(); p.load(in); 2使用java.util.ResourceBundle类的getBundle()方法 ...

plane 201

Spring2.5、Struts2、Ibatis2.3开发框架搭建

Spring2.5、Struts2、Ibatis开发框架搭建 [b][url]http://community.itbbs.cn/showthread.php?p=55122[/url][/b] commons-dbcp.jar commons-fileupload-1.2.1.jar commons-logging-api-1.1.jar commons-pool.jar f...

plane 199

物联网项目实战开发之基于STM32+W5500以太网RJ45 UDP通讯代码程序

STM32F103通过SPI口跟W5500以太网模块相连。1、本例程实现的是W5500为UDP网络通讯。2、实例展示了从DHCP动态获取IP、创建UDP、等待客户端连接、关闭连接等过程。3、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。4、软件下载时,请注意keil选择项是jlink还是stlink.5、硬件设计、软件开发、数据联网:349014857@qq.com;

iCloud Bypass DoulCi Activator for All iDevice_iphoneicloud_bypa

icloud iphone bypass program with serial

上一篇: JSP乱码解决 之 pageEncoding和contentType属性,UTF-8 GBK gb2312 详解
下一篇: Struts2 HelloWorld MAX的struts教程的demo
dingh69
博客等级 码龄19年 4粉丝 34原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值