SSH技术之Struts2.1.6实战课件精解_01
struts2.0升级到struts2.1.6遇到的问题汇总
struts2.0升级到struts2.1.6遇到的问题汇总最近项目从struts2.0升级struts2.1,改动还真不少,这里把升级过程中遇到的问题都记录下来:问题一web.xml的变化struts2.1中的写法为:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsP repareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></fil ter-mapping>问题二零配置的变化在struts2.0中,一直使用的是codebehind插件,在struts2.1中已废弃codebehind,改用convention插件,这个插件使用比较简单,根据官方的文档很全,很容易就能上手,这里把我convention的参数写下来:struts.convention.result.path=/WEB-INF/jsp/.lowercase=false.separator=struts.convention.default.parent.package=defaultstruts.convention.package.locators.basePackage=com.mysite.web.action问题三tabbedPanel标签一直在使用struts2.0中的s:tabbedPanel标签,这个标签使用的是dojo脚本框架,在struts2.0中是自带的,struts2开发小组在struts2.1中把dojo做为插件的形式存在,对应的写法也发生了变化,下面是struts2.1中的写法:<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>……<sx:head/><sx:tabbedpanel id="tabbedpanel1" cssStyle="width: 100%; height: 100% " doLayout="true" ><sx:div id="column1" label="栏目一" loadingText="加载中……"href="url1.action" cssStyle="display:none"></sx:div><sx:div id="column2" label="栏目二" loadingText="加载中……"href="url2.action" cssStyle="display:none"></sx:div></sx:tabbedpanel>问题四乱码问题原来在struts2.0里面正常的内容,在struts2.1.6中会乱码,struts2.1.6居然还敢声称GA 版,这种bug都有,汗一个,从官方找到的解决办法,修改strut2.1.6源文件org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,把doFilter 方法中由:prepare.createActionContext(request, response);prepare.assignDispatcherToThread();prepare.setEncodingAndLocale(request, response);改为:prepare.setEncodingAndLocale(request, response);prepare.createActionContext(request, response);prepare.assignDispatcherToThread();不想修改源文件的话,把StrutsPrepareAndExecuteFilter类的代码copy一份,然后web.xml配置成你copy的这份也可以问题五could not be resolved as acollection/array/map/enumeration/iterator type在s:select,s:s:checkboxlist标签中使用集合,如果集合为空时,会报这个错误,在struts2.0中不会报这个错误问题六float类型变量值为0.0时,设置set方法时出错目前没有发现好的解决方法,替待解决方法是去掉set方法,提交页面需要设置值时,通过request.getAttribute方式获取还有一些其他问题,还在整理中……。
SSH2详细(框架搭建)
applicationContext.xml常用配置:
sessionFactory配置:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactor yBean">
<filter-name>struts</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
第五页,编辑于星期三:六点 八分。
struts2相关配置
struts.xml文件配置 在项目src目录下添加struts.xml配置文件。其基本配置如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
一个属性被映射为主键 . 置于 getXxxx() 前 .
第十七页,编辑于星期三:六点 八分。
JPA相关注解
@GeneratedValue(strategy=GenerationType,generator="")
可选
strategy: 表示主键生成策略 , 有 AUTO,INDENTITY,SEQUENCE 和 TABLE 4 种 , 分别表示让 ORM 框架自动选择 ,
最新struts学习课件PPT课件
一、Struts应用简介
(6)、Action的execute()方法返回一个 ActionForward对象,ActionServlet再把客 户请求转发给ActionForward对象指向的jsp 组件。 (7)、ActionForward对象指向的jsp组件生 成动态网页,返回给客户。
二、struts配置
二、struts配置
2、ActionServlet的初始化参数 <servlet> <servlet-name>action</servlet-name> <servlet-class>….</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> </servlet>
SSH框架教程
SSH框架的学习一,Struts 21 为什么要学习Struts框架?1>Struts框架的好处:简化开发工作量,提高开发效率;采用了优秀的MVC思想2>如何学习:先掌握框架的使用,在了解内涵2 MVC模式在javaWeb中的应用1>MVC思想是根据组件职责不同,将系统分为三部分组成--M(Model) 负责业务处理--V(View) 负责与用户交互--C(Controller) 负责协调试图部分和模型部分协同工作2> 为什么使用MVC:易于扩展和升级3 Struts框架的处理流程浏览器发出struts请求—>请求进入struts控制器—>struts控制器解析XML配置文件—>控制器根据不同请求,调用不同的Action—>Action 调用DAO处理请求返回结果—>控制器根据结果调用试图组件,响应给用户4 Struts 历史Struts框架分为Struts1和Struts2 两者没有必然联系,Struts2 是以WebWork 框架核心(Xwork)为基础构建起来的5 Struts 基本使用1>引入核心开发包五个:commons-logging-1.0.4.jar ( 主要用于日志处理)struts2-spring-plugin-2.0.14.jar ( struts2整合spring需要的包)2>在web.xml 中配置struts控制器org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExcuteFilter3>根据要求编写Action 和JSP Action要继承ActionSupport4>在struts.xml定义Action和请求对应关系6 struts.xml 基本配置可以放在src下面1><struts> 根元素里面包含多个<package>元素2><package> 主要是为了将Action分组定义name用于指定包名;extends一般指定struts-default(在struts-default.xml中定义),里面包括struts2运行所需的必要组件3><action name=”” class=”” method=””>4><result> 一个<action>可以包括多个<result> 主要用于试图响应5>下面一个例子:7 为列表添加分页功能例如每页2个page =1;pageSize=2;int begin=(page-1)*pageSize+1;int end=page*pageSize;eg: select * from ( select rownum rn , c.* form COST c ) where rn between 1 and 6;8 利用Struts2标签+OGNL技术1>OGNL: (Object-Graph Navigation Language)对象图导航语言,主要用于访问对象的数据和方法。
SSH技术之Struts2.1.6实战课件精解_03
SHH实战系列教程-----Struts 2.1实战教程-------课件编写人:徐桥第二天 (3)S TRUTS2框架中的拦截器 (4)使用Struts2框架中的拦截器 (4)Timer计时拦截器 (4)代码案例步骤如下: (4)第一步 (4)第二步 (4)第三步 (5)第四步 (5)第五步 (7)总结: (7)Token防止重复提交拦截器 (7)代码案例步骤如下: (8)第一步 (8)第二步 (9)第三步 (9)总结 (12)Struts 2拦截器原理 (12)理解拦截器 (12)什么是拦截器: (12)拦截器的实现原理: (13)拦截器的配置 (14)自定义拦截器 (16)自定义权限拦截器 (17)案例步骤: (17)第一步 (17)第二步 (17)第三步 (18)第四步 (19)S TRUTS2输入校验 (21)对Action中所有方法进行输入校验 (21)采用手工编写代码实现对action中所有方法输入校验 (21)项目代码步骤如下 (22)第一步 (22)第二步 (22)第三步 (22)第四步 (24)对action指定方法进行校验 (25)采用手工编写代码实现对action指定方法输入校验 (25)项目代码步骤如下 (26)第一步 (26)第二步 (26)第三步 (26)第四步 (28)输入校验的流程 (29)基于XML配置方式实现对action的所有方法进行校验 (29)项目代码步骤如下: (30)第一步: (30)第二步: (30)第三步: (31)第四步: (32)第五步:............................................................................................................... 错误!未定义书签。
基于XML配置方式实现对指定action方法校验 . (34)项目代码步骤如下: (34)第一步 (34)第二步 (35)第三步 (35)第四步 (37)第五步 .............................................................................................................. 错误!未定义书签。
SSH教材2版配套PPT-第6章Struts2深入b[53页]
</action>
</package>
配置多个拦截器
<package name="packName" extends="struts-default" namespace="/manage">
<interceptors>
<!-- 定义拦截器 -->
<interceptor name="interceptorName" clas;
《JavaEE SSH框架应用开发 第2版》
第6章 Struts2深入
本章主要内容
•学完本章后,能够掌握以下内容: •Struts2拦截器 •自定义拦截器 •文件上传和下载 •OGNL表达式
Struts 2架构剖析
Struts执行流程简图
HttpServletRequest
HttpServletResponse
拦截器工作原理
• 拦截器的执行过程是一个递归的过程
三阶段执行周期: 1、做一些Action执行前的预处理 2、将控制交给后续拦截器或返回结果字 符串 3、做一些Action执行后的处理
拦截器简单应用2-1
继承AbstractInterceptor类
• 拦截器示例 public class MyTimerInterceptor extends AbstractInterceptor{ public String intercept(ActionInvocation invocation) throws Exception { //预处理工作 重写intercept() long startTime = System.currentTimeMillis();
Struts2_SSH讲义
/hulei0217 QQ 347993010 Email hulei0217@SSH培训讲义Struts2Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用四、Struts1.x 开发实例-登录程序见案例。
五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。
在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。
在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件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><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。
01 struts2入门课件
Struts2入门
—高级软件人才实作培训专家 ! 搭建Struts2开发环境的步骤
搭建Struts2环境时,我们一般需要做以下几个步骤 的工作: 1.创建javaweb工程 2.找到开发Struts2应用需要使用到的jar文件 3.创建jsp文件 4.创建action文件 5.编写Struts2的配置文件 6.在web.xml中加入Struts2 MVC框架启动配置
利用Class.forName()方法取得类的完整路 径,然后在利用newInstance()方法创建一 个实例
北京传智播客教育
—高级软件人才实作培训专家 ! 模拟Struts2工作原理
4.客户端请求提交给Servlet或过滤器来处理
private Map<String,String> map=new HashMap(); public void init(FilterConfig filter) throws ServletException { map.put("/primer/userAction.action","erAction"); map.put("/helloWorld/helloAction.action","cn.itcast.action.HelloAction"); }try { Action userAction =(Action)Class.forName(map.get(path)).newInstance(); userAction.execute(); req.getRequestDispatcher("/success.jsp").forward(req, res); } catch (InstantiationException e) { 用Map保存客户端请求链接和要访问 e.printStackTrace(); } catch (IllegalAccessException e) { action的对应值 e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } 北京传智播客教育
SSH教材配套PPT-第7章Struts2验证框架和国际化b[28页]
return SUCCESS;
}
}
AC远大前程软件
问题
为什么使用验证框架
• 使用validate()或者validateXxx()方法是否存在不足呢?
分析 – 验证规则复杂时,实现过程繁琐 – 导致Action类中代码臃肿
• 解决办法
– 使用Struts 2提供的验证框架
AC远大前程软件
Struts 2的验证框架on
• 创建RegisterAction
– 实现对用户注册的处理
public class RegisterAction extends ActionSupport { private User user; //用户信息 private String repassword; //确认密码 … public String execute() { return SUCCESS;
// 注册成功
return SUCCESS;
验证成功
}
}
AC远大前程软件
使用validate()方法4-3
• 修改JSP页面
<%@ taglib prefix="s" uri="/struts-tags"%>
…
<div> < s:fielderror />
显示服务器返回的错误信息
</div>
<s:form action="register.action">
继承ActionSupport
if(name.length()==0){ addFieldError("name","用户名不能为空");
《SSH轻量级框架实践》第十一章 Spring与Struts、Hibernate的集成 PPT课件
Spring与Struts1集成
在Struts配置文件中配置插件
在struts-config.xml中,需要把Spring配置文件的位置告知插件。classpath:applicationContext.xml表示到 classpath下去找applicationContext.xml文件。如果Spring配置文件放在/WEB-INF/下,可以这样配置: value="/WEB-INF/applicationContext.xml"。如果有多个Spring配置文件,可以用逗号隔开,同时配置多个路径, 如:value="/WEB-INF/applicationContext.xml,/WEB-INF/action.xml"。
更为简洁、易懂。
声明式事务
key表示匹配方法的“模式”,可以使用“*”通配符,例如,“add*”表示这条属性应用于add 开头的方法。属性的值为PROPAGATION_REQUIRED,表示当前方法必须运行在一个事 务环境中。如果一个现有事务正在运行中,该方法将运行在这个事务中,否则,就要开 始一个新的事务。可选的值如下:
总结
Spring为Hibernate开发提供了良好的支持,可以大大简化Hiberante的编码。 在Spring配置文件定义dataSource、SessionFactory再注入DAO中是开发中常用的做法。 Spring依赖注入在项目中用于管理程序间的依赖,使我们更容易做到面向接口编程。 Spring可以采用Struts插件的方式与Struts轻松集成。 Spring支持声明式事务,可以以不写一行程序代码的方式给系统增加事务支持。2.5的方式
SSH开发模式——Struts2(第一小节)
SSH开发模式——Struts2(第⼀⼩节)在制定了学习计划的学习过程中,我感觉学习还是很有效率的。
很短的时间内,我便学习完了JavaWeb的连接池、DbUtils框架及其⼀些⼯具类的使⽤。
学⽆⽌境,学习这些知识还远远不够,所以,在接下来的时间⾥,我将对JavaWeb中的SSH开发模式进⾏⼀个简单的学习,并⽤博客记录学习进度。
开发模式相信⼤家都有接触或听说,但⼜觉得这个东西很神秘,的确,这看不见摸不着的东西确实很让⼈好奇,所以,从今天开始,我将带着⼤家去揭开它神秘的⾯纱。
我会把整个开发模式分为三部分,第⼀部分:Struts2,第⼆部分:Hibernate,第三部分:Spring。
但是即使分为了三部分,每个部分的框架仍然略显复杂。
所以,我将在每部分的框架中继续细分。
那么,今天便开始第⼀部分的内容,Struts2。
⾸先了解⼀下Struts2的历史吧。
Struts1是全世界第⼀个发布的MVC框架在2001年发布Struts2并不是Struts1的升级版是由WebWork基础上发展起来的吸收了Struts 1和WebWork两者的优势那Struts2到底是什么呢?Struts2是⼀个⽤来开发MVC应⽤程序的框架。
它提供了Web应⽤程序开发过程中的⼀些常见问题的解决⽅案:页⾯导航活动的管理⽤户输⼊数据的合法性验证统⼀的布局可扩展性国际化和本地化⽀持Ajax表单的重复提交我们假设⼀个场景,在⼀个jsp页⾯中有多个超链接,点击每个超链接都需要进⾏对应的处理,每个超链接对应⼀个Java类,类中有⼀个⽅法,我们的⽬的就是要点击超链接调⽤对应的Java类的⽅法,对于这样的场景,我们有两种解决⽅案,⼀是通过Servlet去调⽤Java类,⼆是通过过滤器去调⽤Java类。
但是两种⽅法都很⿇烦,重复的代码特别多,这时候,Struts2框架就起到了⾄关重要的作⽤,它可以很⽅便地帮助我们解决这个问题。
那么,如何搭建Struts2的开发环境呢?搭建Struts2环境时,我们⼀般需要做以下⼏个步骤的⼯作:1. 创建javaweb⼯程2. 找到开发Struts2应⽤需要使⽤到的jar⽂件3. 创建jsp⽂件4. 创建action⽂件5. 编写Struts2的配置⽂件6. 在web.xml中加⼊Struts2 MVC框架启动配置我们按照步骤⼀步步⾛。
SSH培训
简介:Hibernate
Java数据库操作经历了三个阶段:
操作JDBC:对于每个数据库操作,都需要
定义SQL 加载数据库驱动程序 创建数据库连接(connection) 创建申明对象(statement) 执行操作,获得结果集 关闭结果集、申明对象和数据库连接
Struts框架的组件结构
简介:Struts
一个请求在Struts2框架中的处理大概分为以下几个 步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat) 的请求 2 这个请求经过一系列的过滤器(Filter)(这些过 滤器中有一个叫做ActionContextCleanUp的可选过 滤器,这个过滤器对于Struts2和其他框架的集成很 有帮助,例如:SiteMesh Plugin)
简介:Struts
3 接着FilterDispatcher被调用,FilterDispatcher询问 ActionMapper来决定这个请是否需要调用某个 Action 4 如果ActionMapper决定需要调用某个Action, FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架 的配置文件,找到需要调用的Action类 6 ActionProxy创建一个ActionInvocation的实例。
通过描述对象和数据库之间映射的元数据,将Java程序中 的对象自动持久化到关系数据库中。
ORM实现了数据表到Java对象的映射,业务逻辑只需关注 对象,O/R mapping负责生成SQL并执行具体的数据库操 作,从而实现了数据库操作与业务逻辑的解耦。
SSH开发实战教程(Spring+Struts 2+Hibernate)课件-Struts2关键技术
(5)运行测试,在如图10.1所示的界面中输入出生日期。提交后控制台输出内容如图10.2所 示,前台输出页面如图10.3所示。
图10.1 录入出生日期
6
图10.2 控制台输出出生日期
图10.3 网页输出出生日期
可以发现,尽管输入的格式是字符串,但显然已被自动转换成了Date类型。
7
10.1.2 自定义类型转换器
</action>
这里多了一个input视图,用于若转换失败,返回到原来的输入页面。注意:必须要配置 input。
9
(4)新建包com.seehope.util,包下新建NewDateConverter如下。
public class NewDateConverter extends StrutsTypeConverter{ //如果是从客户端到服务端方向,是由String转换为Date类型
}
(3)配置struts.xml。
<action name="dateAction2" class="com.seehope.action.DateAction2"> <result>showdate.jsp</result> <result name="input">date2.jsp</result>
在上面程序中,若输入非yyyy-MM-dd格式,比如输入yyyy/MM/dd 格式,结果会报 错,类型转换失败。如果要接收yyyy-MM-dd外的其它格式的日期类型,就需要自定义类 型 转 换 器 。 自 定 义 类 型 转 换 器 必 须 要 继 承 StrutsTypeConverter 类 , 实 现 父 类 的 convertFromString和convertToString方法。
SSH_Struts2
在src的struts.xml中添加如下常量,可以启动开发模式,能及时读取修改信息:<!-- 设置开发模式为启动,能及时读取修改内容 --><constant name="struts.devMode" value="true"></constant>Struts的作用:将请求和视图分开;在MyEclipse中直接复制项目时,一定要修改如下的Web Context-root属性,否则访问路径将不会改变,跟原项目相同:Struts1中,访问Action时,Action是在启动服务器时候new出的对象,大家都访问同一个对象,而Struts2则是在每次访问时候都new一个新的对象,避免线程同步的问题。
Struts2的Action配置<package name="front" namespace="/" extends="struts-default"><action name="index"class="com.lb.struts2.front.action.IndexAction_01"><result name="success">/introduction.jsp</result></action></package>其中,class如果不配置的话,默认使用com.opensymphony.xwork2.ActionSupport; 开发中的Action全部继承com.opensymphony.xwork2.ActionSupport;Struts2中的路径问题是根据action的路径而不是jsp的路径来确定,所以尽量不要使用相对路径,虽然可以使用redirect解决,但这种方式并非必要。
SSH技术之Struts2.1.6实战课件精解_03-推荐下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SHH实战系列教程-----Struts 2.1实战教程-------课件编写人:徐桥第一天 (2)S TRUTS 2的介绍 (2)Struts 2.x简介: (2)与Struts 1.x 相比Struts 2.x框架的优势 (3)Struts-2.1.8.1-all目录下文件简介 (3)S TRUTS 2开发环境的搭建 (4)Struts 2.x使用到的jar文件 (4)Struts2的启动配置(在web.xml中配置) (5)Struts2的配置文件模版 (6)Struts 2.1.8版本开发环境要求 (5)第一个S TRUTS2应用 (6)第一步:新建一个J2EE5.0的web project工程 (6)第二步:在src目录下创建一个struts.xml文件 (7)第三步:新建一个java类 (9)第四步:导入jar包 (9)第五步:配置 web.xml文件(struts2 启动配置) (9)第六步:建立显示页面hyFrist.jsp (10)第七步:在IE浏览上测试程序结果: (10)解决在M Y E CLIPSE下S TRUTS2配置文件无提示问题 (11)A CTION名称的搜索顺序 (14)给A CTION配置的各项默认值 (15)A CTION中RESULT的各种转发类型 (19)dispatcher(重定向跳转,默认值) (20)Result(重定向) (20)redirectAction (21)plaintext(显示原始文件内容) (21)第一天内容介绍:●Struts 2.x简介●Struts 2开发环境的搭建●第一个struts2应用开发●解决struts2配置文件无提示问题●Action名称的搜索顺序●Action配置的各项默认值.●result配置的各种视图转发类型.●为Action属性注入值●指定Struts2处理的请求后缀●Struts2的处理流程与Action的管理方式期望的目标●了解Struts 2的优势●熟练配置Struts 2环境并且开发出Struts 2框架的第一环境●了解Action在Struts 2作用及原理●理解Struts 2的类型转换原理●了解Action属性的注入值●理解并且渗透Struts2的处理流程与Action的管理方式Struts 2的介绍Struts 2.x简介:Struts 2.x仍然是一个MVC框架。
一般来说,某种软件的第二个版本都是起源第一个版本,但实际上,Struts 2.x是个特例,它并非起源于Struts 1.x,而是起源于WebWork框架 ------ 另一MVC的框架。
因此Struts 2.x与Struts 1.X是没有直接关系的。
WebWork是Apache的另一个MVC框架,发布于2002年3月。
WebWork 项目在起时曾参考过Struts 1.x,因为Struts 1.x当时已经是个十分流行的MVC框架(Struts 1.x起源最早,应用最广的基于MVC框架的Java Web 技术)。
WebWork 可以说对Struts 1.x进行了换血式的大改装,从一个新的视觉实现MVC。
抛弃了request、response等基于servlet 的API。
从设计思想、易用性上看,作为后来者的WebWork则应用时更胜一筹的,但是在使用上却一直不如Struts 1.x广泛。
2005年12月,WebWork项目与Struts 项目宣布合并,并且推出Struts 2,其内核是WebWork2。
Struts 2有许多新特性,例如支持主题、集成DOJO框架、内置AJAX等。
Struts2的官方网址为/2.x。
但是,Struts 2是对Struts 1.x 的一个补充,而不是替代品,它们的思想是完全不同的。
目前也有相当多Struts 1.x系统正运行在网络上。
Struts 官方同时提供Struts 1.x与Struts 2.x的下载。
Struts2 是一个基于Action的MVC框架Struts 2.x框架的优势1)在软件设计上Struts 2.x没有像 Servlet API,Struts 2的应用可以不依赖于Servlet API。
Struts 2.x的这种设计属于无侵略式设计(也Struts 2.x 是一轻量级框架,可以任凭你自己的技术在Struts 2.x框架上扩展)。
2)Struts 2.x提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。
3)Struts 2.x提供了类型转换器。
4)Struts 2.x提供支持多种表现层技术,如:JSP、freeMarker、Velocity 等5)Struts 2.x的输入效验可以对指定方法进行效验6)提供了全局范围、包范围和Action范围的国际化资源文件管理实现Struts-2.1.8.1-all目录下文件简介SRC目录:源文件包LIB目录:Struts2.1.6技术的相关jar包DOCS目录:Struts2.1.6帮助文档APPS目录:Struts2.1.6技术自带的相关例题Struts 2开发环境的搭建搭建Struts 2.x环境时,我们一般需要做以下几个步骤的工作:1)下载或者需找其他办法找到Struts 2.x使用到的jar文件2)编写Struts 2.x的配置文件3)在web.xml中加入Struts 2.x MVC框架启动配置4) Struts 2.1.8开发环境的配置的要求Struts 2.x使用到的jar文件struts2.1.6 中的jar包的下载地址:/download.cgi#struts2014 到该网址下下载struts-2.x.x-all.zip。
下载如图所示:下载后解压该文件,开发Struts 2.x应用需要依赖的jar文件在解压目录的lib文件下。
不同的应用需要的JAR 包是不同的。
下面我对Struts 2.x中需注:我们所讲的Struts版本为2.1.8,本课程的开发环境为:jdk1.6版本以上,tomcat 6版本以上,MyEclipse 8版本以上,所建工程遵循J2EE5.0规范,代码测试系统为win 7操作系统。
Struts 2.1.8版本开发环境要求本课程要求开发环境如下:IDE:MyEclipse 8JDK:1.6数据库:Oracle 10g服务器环境:Tomcat 6.0实战编写环境:win 7/window 2000/window xpStruts2的启动配置(在web.xml中配置)在struts1.x中, struts框架是通过Servlet启动的。
在struts2中,struts 框架是通过Filter启动的。
他在web.xml中的配置如下:<filter><filter-name>struts2</filter-name><!--<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>--><!-- 从Struts 2.1.3以后,注意:org.apache.struts2.dispatcher.FilterDispatcher这种配置已过时 --><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>在FilterDispatcher的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。
注意:struts2读取到struts.xml的内容后,会将内容封装进javabean对象并存放在内存中,对于用户每次请求的处理将使用内存中的数据,而不是每次请求都读取struts.xml文件Struts2的配置文件模版Struts2默认的配置文件为struts.xml ,FilterDispatcher过滤器在初始化时将会在WEB-INF/classes下寻找该文件,该文件的配置模版如下:<?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></struts>第一个Struts2应用第一步:新建一个J2EE5.0的web project工程在MyEclipse8 工具下新建一个J2EE5.0的web project工程,其工程名为:hy0506_Struts2.1_Demo1第二步:在src目录下创建一个struts.xml文件Struts2默认的配置文件为struts.xml ,我们在MyEclipse 8工具的hy0506_Struts2.1_Demo1项目中的SRC目录下新建一个xml文件命名为:struts.xml,其该文件的配置如下:(注:FilterDispatcher过滤器在初始化时将会在WEB-INF/classes下寻找该文件)<?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><packagename="hy"namespace="/hy"extends="struts-default"><actionname="hyFrist"class="com.hy.action.FristAction"><result name="success">/hyFrist.jsp</result></action></package></struts>注:其中:<package name="hy"namespace="/hy"extends="struts-default">。