第一篇:struts2课件
—高级软件人才实作培训专家!Struts2的启动配置在struts1.x中,struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:
—高级软件人才实作培训专家!Struts2的配置文件Struts2默认的配置文件为struts.xml,FilterDispatcher过滤器在初始化时将会在WEB-INF/classes下寻找该文件,该文件的配置模版如下:<?xml version=“1.0” encoding=“UTF-8”?>
—高级软件人才实作培训专家!第一个Struts2应用Struts2默认的配置文件为struts.xml,FilterDispatcher过滤器在初始化时将会在WEB-INF/classes下寻找该文件,该文件的配置模版如下:<?xml version=“1.0” encoding=“UTF-8”?>
—高级软件人才实作培训专家!第一个Struts2应用例子中使用到的/WEB-INF/page/hello.jsp如下:<%@ page language=“java” pageEncoding=“UTF-8”%>
第二篇:struts2
搭建Struts2环境时:
1找到开发Struts2应用需要使用到的jar文件.2编写Struts2的配置文件
3在web.xml中加入Struts2 MVC框架启动配置
大家可以到http://struts.apache.org/download.cgi#struts2014下载;下面给出了开发Struts 2程序最少需要的JAR。
struts2-core-2.x.x.jar :Struts 2框架的核心类库
xwork-2.x.x.jar :XWork类库,Struts 2在其上构建
ognl-2.6.x.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件
Struts2默认的配置文件为struts.xml,该文件需要存放在WEB-INF/classes下,该文件的配置模版如下:
<?xml version=“1.0” encoding=“UTF-8”?>
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>
在struts1.x中,struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:
在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。
在默认的配置文件struts.xml 中加入如下配置:
<?xml version=“1.0” encoding=“UTF-8”?>
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>
在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。
配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包下的Action的路径的一部分,如访问上面例子的Action,访问路径为:/test/helloworld.action。namespace属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)。
通常每个包都应该继承struts-default包,因为Struts2很多核心的功能都是拦截器来实现。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。struts-default定义了这些拦截器和Result类型。可以这么说:当包继承了struts-default才能使用struts2提供的核心功能。struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。struts-default.xml也是Struts2默认配置文件。Struts2每次都会自动加载 struts-default.xml文件。
包还可以通过abstract=“true”定义为抽象包,抽象包中不能包含action。
第三篇:Struts1、struts2下载
Parent Directory-jakarta-struts-1.2.2.tar.gz 30-Aug-2004 18:21 12M jakarta-struts-1.2.2.tar.gz.asc 30-Aug-2004 18:21 226 jakarta-struts-1.2.2.tar.gz.md5 30-Aug-2004 18:21 62 jakarta-struts-1.2.2.zip 30-Aug-2004 18:21 12M jakarta-struts-1.2.2.zip.asc 30-Aug-2004 18:21 226 jakarta-struts-1.2.2.zip.md5 30-Aug-2004 18:21 59 jakarta-struts-1.2.4.tar.gz 13-Sep-2004 02:19 12M jakarta-struts-1.2.4.tar.gz.asc 13-Sep-2004 02:19 226 jakarta-struts-1.2.4.tar.gz.md5 13-Sep-2004 02:19 32 jakarta-struts-1.2.4.zip 13-Sep-2004 02:19 12M jakarta-struts-1.2.4.zip.asc 13-Sep-2004 02:19 226 jakarta-struts-1.2.4.zip.md5 13-Sep-2004 02:19 32 struts-1.2.6.tar.gz 20-Nov-2004 22:23 12M struts-1.2.6.tar.gz.asc 12-Dec-2004 05:44 226 struts-1.2.6.tar.gz.md5 20-Nov-2004 22:23 32 struts-1.2.6.zip 20-Nov-2004 22:38 12M struts-1.2.6.zip.asc 12-Dec-2004 05:44 226 struts-1.2.6.zip.md5 20-Nov-2004 22:38 32 struts-1.2.7.tar.gz 06-May-2005 09:44 14M struts-1.2.7.tar.gz.asc 06-May-2005 12:43 226 struts-1.2.7.tar.gz.md5 06-May-2005 08:54 32 struts-1.2.7.zip 06-May-2005 10:06 14M struts-1.2.7.zip.asc 06-May-2005 12:45 226 struts-1.2.7.zip.md5 06-May-2005 08:54 32 struts-1.2.8-bin.tar.gz 20-Nov-2005 15:20 14M struts-1.2.8-bin.tar.gz.asc 20-Nov-2005 15:20 226 struts-1.2.8-bin.tar.gz.md5 20-Nov-2005 15:20 32 struts-1.2.8-bin.zip 20-Nov-2005 15:20 14M struts-1.2.8-bin.zip.asc 20-Nov-2005 15:20 226 struts-1.2.8-bin.zip.md5 20-Nov-2005 15:20 32 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-1.2.9-bin.tar.gz 22-Mar-2006 20:56 14M [img]http://archive.apache.org/icons/text.gif[/img] struts-1.2.9-bin.tar.gz.asc 22-Mar-2006 20:56 226 [img]http://archive.apache.org/icons/text.gif[/img] struts-1.2.9-bin.tar.gz.md5 22-Mar-2006 20:56 32 [img]http://archive.apache.org/icons/text.gif[/img] struts-1.2.9-bin.tar.gz.md5.asc 22-Mar-2006 20:56 226 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-1.2.9-bin.zip 22-Mar-2006 20:56 14M [img]http://archive.apache.org/icons/text.gif[/img] struts-1.2.9-bin.zip.asc 22-Mar-2006 20:56 226 [img]http://archive.apache.org/icons/text.gif[/img] struts-1.2.9-bin.zip.md5 22-Mar-2006 20:56 32 [img]http://archive.apache.org/icons/text.gif[/img] struts-1.2.9-bin.zip.md5.asc 22-Mar-2006 20:56 226 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-1.3.10-all.zip 07-Dec-2008 23:36 44M [img]http://archive.apache.org/icons/text.gif[/img] struts-1.3.10-all.zip.asc 07-Dec-2008 23:35 202 [img]http://archive.apache.org/icons/text.gif[/img] struts-1.3.10-all.zip.md5 07-Dec-2008 23:35 32 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-1.3.5-all.zip 16-Aug-2006 18:46 39M [img]http://archive.apache.org/icons/text.gif[/img] struts-1.3.5-all.zip.asc 16-Aug-2006 18:45 188 [img]http://archive.apache.org/icons/text.gif[/img] struts-1.3.5-all.zip.md5 16-Aug-2006 18:45 55 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-1.3.5-all.zip.sha1 16-Aug-2006 18:45 63 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-1.3.8-all.zip 12-Mar-2007 00:01 44M [img]http://archive.apache.org/icons/text.gif[/img] struts-1.3.8-all.zip.asc 12-Mar-2007 00:01 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-1.3.8-all.zip.md5 13-Apr-2007 16:15 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-1.3.9-all.zip 11-Aug-2007 14:29 43M [img]http://archive.apache.org/icons/text.gif[/img] struts-1.3.9-all.zip.asc 11-Aug-2007 14:29 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-1.3.9-all.zip.md5 11-Aug-2007 14:29 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.1-all.zip 06-Nov-2006 17:16 62M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.1-all.zip.asc 06-Nov-2006 17:16 188 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.11-all.zip 22-Sep-2007 02:21 90M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11-all.zip.asc 22-Sep-2007 02:21 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11-all.zip.md5 22-Sep-2007 02:21 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.11-j4.zip 22-Sep-2007 02:54 3.0M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11-j4.zip.asc 22-Sep-2007 02:54 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11-j4.zip.md5 22-Sep-2007 02:54 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.11.1-all.zip 04-Mar-2008 00:32 90M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11.1-all.zip.asc 04-Mar-2008 00:31 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11.1-all.zip.md5 04-Mar-2008 00:31 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.11.1-backport.zip 04-Mar-2008 00:32 3.0M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11.1-backport.zip.asc 04-Mar-2008 00:32 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11.1-backport.zip.md5 04-Mar-2008 00:32 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.11.2-all.zip 01-Jul-2008 07:32 91M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11.2-all.zip.asc 01-Jul-2008 07:31 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11.2-all.zip.md5 01-Jul-2008 07:31 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.11.2-backport.zip 01-Jul-2008 07:32 3.0M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11.2-backport.zip.asc 01-Jul-2008 07:32 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.11.2-backport.zip.md5 01-Jul-2008 07:32 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.12-all.zip 16-Oct-2008 02:22 90M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.12-all.zip.asc 16-Oct-2008 02:22 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.12-all.zip.md5 16-Oct-2008 02:22 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.12-backport.zip 16-Oct-2008 02:29 3.0M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.12-backport.zip.asc 16-Oct-2008 02:29 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.12-backport.zip.md5 16-Oct-2008 02:29 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.14-all.zip 22-Nov-2008 20:52 89M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.14-all.zip.asc 22-Nov-2008 20:52 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.14-all.zip.md5 22-Nov-2008 20:52 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.14-backport.zip 22-Nov-2008 20:52 3.0M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.14-backport.zip.asc 22-Nov-2008 20:52 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.14-backport.zip.md5 22-Nov-2008 20:52 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.5-all.zip 09-Feb-2007 03:06 80M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.5-all.zip.asc 09-Feb-2007 03:05 186 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-2.0.5-all.zip.mdr 09-Feb-2007 03:05 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.5-j4.zip 09-Feb-2007 03:08 2.9M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.5-j4.zip.asc 09-Feb-2007 03:08 186 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-2.0.5-j4.zip.mdr 09-Feb-2007 03:08 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.6-all.zip 22-Feb-2007 18:52 83M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.6-all.zip.asc 22-Feb-2007 18:52 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.6-all.zip.md5 22-Feb-2007 18:52 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.6-j4.zip 22-Feb-2007 18:52 2.9M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.6-j4.zip.asc 22-Feb-2007 18:52 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.6-j4.zip.md5 22-Feb-2007 18:52 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.8-all.zip 11-Jun-2007 18:19 83M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.8-all.zip.asc 11-Jun-2007 18:19 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.8-all.zip.md5 11-Jun-2007 18:19 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.8-j4.zip 11-Jun-2007 18:19 2.9M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.8-j4.zip.asc 11-Jun-2007 18:19 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.8-j4.zip.md5 11-Jun-2007 18:19 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.9-all.zip 24-Jul-2007 02:18 86M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.9-all.zip.asc 24-Jul-2007 02:18 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.9-all.zip.md5 24-Jul-2007 02:18 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.0.9-j4.zip 24-Jul-2007 02:18 2.9M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.9-j4.zip.asc 24-Jul-2007 02:18 186 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.0.9-j4.zip.md5 24-Jul-2007 02:18 33 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.1.2-all.zip 25-May-2008 03:42 97M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.2-all.zip.asc 25-May-2008 03:41 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.2-all.zip.asc.md5 25-May-2008 03:41 33 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.2-all.zip.asc.sha1 25-May-2008 03:41 41 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.2-all.zip.md5 25-May-2008 03:41 33 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-2.1.2-all.zip.sha1 25-May-2008 03:41 41 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.1.6-all.zip 13-Jan-2009 02:05 110M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.6-all.zip.asc 13-Jan-2009 02:06 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.6-all.zip.md5 13-Jan-2009 02:06 33 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-2.1.6-all.zip.sha1 13-Jan-2009 02:06 40 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.1.6-apps.zip 13-Jan-2009 02:06 34M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.6-apps.zip.asc 13-Jan-2009 02:05 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.6-apps.zip.md5 13-Jan-2009 02:05 32 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-2.1.6-apps.zip.sha1 13-Jan-2009 02:05 40 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.1.6-lib.zip 13-Jan-2009 02:05 11M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.6-lib.zip.asc 13-Jan-2009 02:05 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.6-lib.zip.md5 13-Jan-2009 02:05 32 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-2.1.6-lib.zip.sha1 13-Jan-2009 02:05 40 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.1.8-all.zip 29-Sep-2009 14:48 115M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.8-all.zip.asc 29-Sep-2009 14:48 189 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.8-all.zip.md5 29-Sep-2009 14:48 32 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-2.1.8-all.zip.sha1 29-Sep-2009 14:48 40 [img]http://archive.apache.org/icons/compressed.gif[/img] struts-2.1.8.1-all.zip 11-Nov-2009 16:57 113M [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.8.1-all.zip.asc 11-Nov-2009 16:57 197 [img]http://archive.apache.org/icons/text.gif[/img] struts-2.1.8.1-all.zip.md5 11-Nov-2009 16:57 57 [img]http://archive.apache.org/icons/unknown.gif[/img] struts-2.1.8.1-all.zip.sha1 11-Nov-2009 16:57 65
第四篇:Struts2介绍
Struts2集成指南
关于Struts2 Struts是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 McClanahan 2006年,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 方法。例如 e.g.public class LogonAction extends Action {
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
} }
Struts 2 Action 类可以实现一个Action接口,也可以实现其他接口,甚至不实现任何接口。这使得可选的和定制的服务成为可能。e.g.public class ExampleAction {
public String doSomething(){
return “success”;} }
线程模式
Struts 1 Action类 是单例模式并且必须是线程安全的,因为在web容器中,仅有Action类 的一个实例来处理所有的请求。
Struts2 Web容器为每一个请求产生一个Action类实例,因此没有线程安全问题。可测试性
Struts1 由于对Servlet API的依赖,使得针对于自定义Action类的测试变得复杂。
Struts2 由于自定义Action可以为POJO,所以可以向测试一个POJO一样来测试Action类。
请求参数封装
Struts1 使用ActionForm 对象封装用户的请求参数,所有的 ActionForm 必须继承一个基类:ActionForm。普通的JavaBean 不能用作ActionForm,并且需要在配置文件中定义ActionForm。e.g.public class LogonForm extends ActionForm {
private String userpassword;
private String username;}
Struts2 直接使用Action属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的烦琐,实际上,这些属性还可以是包含子属性的 Rich对象类型。e.g.public class ExampleAction {
private String responseMessage;private String requestMessage;
public String getResponseMessage(){
return responseMessage;}
public void setResponseMessage(String responseMessage){
this.responseMessage = responseMessage;}
public String getRequestMessage(){
return requestMessage;
} } public void setRequestMessage(String requestMessage){ } this.requestMessage = requestMessage;public String doSomething(){
} setMessage(“Hi, ” + getRequestMessage());return “success”;EL Struts1 整合了 JSTL,因此可以使用JSTL 表达式语言。JSTL有基本对象图遍历,但在对集合和索引属性的支持上则功能不强。在向视图绑定值时,Struts1 使用标准JSP 机制把对象绑定到视图页面。
Struts2 Struts 2 可以使用JSTL,但它整合了一种更强大和灵活的表达式语言:OGNL(Object Graph Notation Language),因此,Struts 2 下的表达式语言功能更加强大。在向视图绑定值时,Struts2 使用“ValueStack ”技术,使标签库能够访问值,而不需要把对象和视图页面绑定在一起。
校验框架
Struts1 Struts1 支持在 ActionForm 重写validate 方法中手动校验,或者通过整合 Commons-validator 框架来完成数据校验。
Struts2 Struts 2 支持通过重写validate方法进行校验,也支持整合XWork 校验框架进行校验。Struts2 architacture
名词约定
凡是代码、配置文件、IDE中出现的名词,均采用英文原称。
Roadmap 本文档的目标是,帮助读者在Eclipse中将Struts2集成至一个崭新的Dynamic Web Project。集成步骤大致如下:配置Struts2的代码环境-> 在web.xml中加入Struts2功能-> 测试Struts2。文档目标达成的标志是:页面请求能够通过Struts2的Action Mapping成功转发,并且基于Java的Struts2验证框架能够生效。
集成步骤
引入Struts2相关的jar文件
Struts2 jars commons-fileupload-1.2.2.jar commons-io-2.1.jar commons-lang-2.4.jar commons-logging-1.1.1.jar freemarker-2.3.16.jar javassist.jar jstl-1.2.jar ognl-3.0.1.jar struts2-core-2.2.3.jar xwork-core-2.2.3.jar 加入build path 将以上10个jar文件,拷贝至WebContent/WEB-INF/lib下:
对于Web Dynamic Project,一般情况下,当你向lib目录下copy了jar文件,eclipse会自动将jar文件加入build path下的名为Web App Libraries的Library。请确认在工程下出现了名为Web App Libraries的Library。如果有,说明这些jar文件已经被添加至build path了:
如果在工程目录下找不到名为Web App Libraries的Library,说明jar文件没有被添加至build path,需要进行手动添加。首先进入build path设置界面,选中Libraries 页,并点击Add JARs:
在JAR Selection窗口中,选中lib下所有的jar文件。选中后点击OK:
你将看到被选中的jar文件已经被添加至build path:
在工程中会出现一个名为Referenced Libraries的Libraries。这说明jar文件已经被添加至build path:
以上两种方法都可以将jar文件添加至build path,它们的效果是一样的。
配置web.xml 添加filter 在web.xml中添加一个filter:
filter-name表示filter的名字,你可以任意决定这个名字。filter-class表示使用哪个类作为filter,从这个类的全称来判断,可以发现FilterDispatcher是Struts2提供的一个类。它是Struts2转发请求的起点。在web.xml中添加一个filter-mapping:
filter-mapping用来映射url和filter的映射关系。filter-name表示filter的名字,这个名字必须和之前filter声明中的filter-name一致。url-pattern表示哪些格式的url会被此filter滤中。/*表示在此web应用域名下,所有的地址都会被filter滤中,换言之,所有的http请求都会通过Struts2进行转发。
filter的作用
通过以上的配置,FilterDispatcher和url与filter-name联系在了一起。
由于在web容器中注册了FilterDispatcher这个filter,Struts2可以收到所有http://localhost:8080/tyland-b2b 的http请求。随后,FilterDispatcher会根据我们定义的action-mapping规则,将请求分发到指定的action类以及它的拦截器栈。最后,Struts2按照action-mapping规则,将后台计算的结果返回给指定页面。笼统地来说,Struts2就是这样工作的,所以说,FilterDispatcher是Struts2工作的入口。
编写代码,测试Struts2 Struts2的环境已经配置好了,基于action-mapping的转发机制已经可以运行了。为了证明这一点,请编写一些测试jsp页面和java代码。
在编写代码的过程中,请确保代码文件的位置如下图所示:
代码清单如下:
Java代码
UserVO.java package com.tyland.b2b.vo;
// 一个Value Object(Data Model),用来存放用户名、密码 public class UserVO {
private String username;private String password;
// 成员变量password的getter方法。
// 在Strtus2中,用来在页面和服务器间传值的Value Object必须有getter方法
public String getPassword(){
return password;
} } // 成员变量password的setter方法。
// 在Strtus2中,用来在页面和服务器间传值的Value Object必须有setter方法 public void setPassword(String password){ } this.password = password;// 同password
public String getUsername(){ } return username;// 同password
public void setUsername(String username){ } this.username = username;BaseAction.java package com.tyland.b2b.web.base;
import com.opensymphony.xwork2.ActionSupport;
// 为了代码的灵活性和可扩展性,请声明一个BaseAction基类
// BaseAction继承Struts2的ActionSupport,因为我们想使用Struts2的一些额外帮助。// 对于ActionSupport的继承不是必须的
public class BaseAction extends ActionSupport {
private static final long serialVersionUID = ***74952195L;} UserAction.java package com.tyland.b2b.web;
import com.tyland.b2b.vo.UserVO;import com.tyland.b2b.web.base.BaseAction;
// 自定义的Action类,继承BaseAction // 由于继承了ActionSupport,我们可以使用Struts2默认的action方法execute()// 由于继承了ActionSupport,我们可以使用Struts2默认的校验方法validate()public class UserAction extends BaseAction {
private static final long serialVersionUID =-7***3684190L;
// 用来在页面和服务器之间传递用户名、密码的Value Object。变量名任意。
private UserVO userVO;
执行。// 用来在页面和服务器之间传递message变量。名称任意。private String message;//用来在页面和服务器之间传递sayHiTo变量。名称任意。private String sayHiTo;// 用来传值的变量必须有getter方法 public UserVO getUserVO(){ return userVO;}
//用来传值的变量必须有setter方法
public void setUserVO(UserVO userVO){ } this.userVO = userVO;public String getMessage(){ } return message;public void setMessage(String message){ } this.message = message;public String getSayHiTo(){ } return sayHiTo;public void setSayHiTo(String sayHiTo){ } this.sayHiTo = sayHiTo;// Override声明说明这个方法复写或实现了父类或接口方法。
// 如action-mapping中不显示指定别的方法,struts2会将execute()作为默认的action方法// 返回的SUCCESS常量,来自ActionSupport,值为“success”。
// action-mapping会根据不同的返回值采取不同的转发或页面跳转动作。@Override
public String execute()throws Exception {
} System.out.println(“******execute******”);System.out.println(userVO.getUsername()+ “ logins”);return SUCCESS;
// 在Struts2执行execute()之前,会先执行validateExecute()进行用户输入验证 // 这个方法名必须符合Struts2验证框架所规定的命名规范 public void validateExecute(){
}
} System.out.println(“******validateExecute******” + userVO.getUsername());if(null == userVO.getUsername()|| userVO.getUsername().length()< 5){ this.addFieldError(“username”, “USERNAME ERROR”);} if(null == userVO.getPassword()|| userVO.getPassword().length()< 5){ this.addFieldError(“password”, “PASSWORD ERROR”);} // 一个自定义方法。通过在action-mapping中的设置,可以实现使用POJO的自定义服务配置 public String sayHi()throws Exception {
} System.out.println(“say hi to ” + getSayHiTo());return SUCCESS;// 符合验证框架命名规范的、真对于sayHi()的验证方法 public void validateSayHi(){
} System.out.println(“******validateSayHi******” + getSayHiTo());if(null == getSayHiTo()|| getSayHiTo().length()< 5){ this.addFieldError(“sayHiTo”, “SAYHITO ERROR”);} ExampleAction.java package com.tyland.b2b.web;
import com.tyland.b2b.web.base.BaseAction;
public class ExampleAction extends BaseAction {
private static final long serialVersionUID =-***7281L;
private String message;private String sayHiTo;
public String getMessage(){
return message;}
public void setMessage(String message){
this.message = message;}
public String getSayHiTo(){
return sayHiTo;}
} public void setSayHiTo(String sayHiTo){ } this.sayHiTo = sayHiTo;public String finish(){
} System.out.println(“example finished”);setMessage(getSayHiTo());return SUCCESS;JSP代码
index.jsp <%@ page language=“java” contentType=“text/html;charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib uri = “http://java.sun.com/jsp/jstl/core” prefix = “c” %>
第五篇:Struts2习题
Struts2习题1 1.struts中的package的作用是什么?namespace可以为空吗?如果namespace为空会意味着什么呢?
标识、可以、如果没写,说明该包为默认空间 2.Action 的实现通集成常用那种方法? 一种是直接实现自己的Action 另一种是实现Action的接口 继承ActionSupport 3.不属于Struts2的动作类的常量返回值的是(C)
A.success
B.input
C.never
D.login 4.以下不属于Struts2动作执行的结果类型是(A)a.action b.redirect c.redirectAction d.dispatcher 5.在struts.xml中。假如在一个package中没有配置namespace,那么在其中配置一个Action名字叫做login,它的result是这样配置的
配置的
A A.在根路径后输入/login B.在根路径后输入/user/login C.在根路径后输入/login/user D.在根路径后输入/abc/login 6.正规开发中,在使用struts2时定义Action使用哪种方式。B A.直接定义Action类。B.从ActionSupport继承。C.从Action继承。D.实现Action接口。
7.不同的线程在调用Action时创建几个Action实例。C A.1个 B.2个
C.每个线程创建1个。D.可以自定义配置。
8.struts提供了Action接口定义了5个标准字符串常量,不包括的有(C)A SUCCESS
B NONE C REG D LOGIN
9.列举出action执行结果类型,并说明用途。
默认结果类型是dispatcher chain:Action链式处理的结果类型,也就是将结果转发到这个action中。
dispatcher:用于整合JSP的结果类型
redirect:实际上dispatcher和redirect的区别就是在于转发和重定向的区别。
redirect-action:重定向action 10.struts2中result-type的chain和redirectAction的区别 chain,它是一个琏式的,是从一个Action转发另外一个Aciton redirectAction,是从新请求一个Action 11.action的class里面写的是什么? Action相应类的详细路径
12.action的extends里面调用的是什么?
从另外一个包继承、相当于拥有即承包的所有配置
13.如果不写action的后面mothod,默认的调用的方法是什么,如果写的话,写的时候有什么需要注意的?
不写会默认调用最上面的方法
14.输出值的strtus标签是什么?
s:property
15.循环的struts标签是什么?
s:iterator
15.判断的strtuts标签是什么?
s:if
16.显示文本的strtuts标签是什么?
17.请简述前台提交后是如何到达后台action的。
通过form表单action找到struts配置文件相应action的类 再去找相应action类里的方法
Struts2习题2
一、填空题
1.Struts2框架由___________和___________框架发展而来。(Struts&WebWork)2.Struts2以___________为核心,采用___________的机制来处理用户的请求。(WebWork,拦截器)
3.Struts2中的控制器类是一个普通的___________。Class或填过滤器类
二、选择题
1.不属于Action接口中定义的字符串常量的是___________。B A.SUCCESS B.FAILURE
C.ERROR D.INPUT 2.在控制器类中一般需要添加相应属性的___________和___________。AC A.setter方法 B.as方法 C.getter方法 D.is方法 3.控制器需要在___________配置文件中进行配置。B A.web.xml B.struts.xml C.struts2.xml D.webwork.xml 4.不属于Struts 2表单标签库的是___________。D A.
三、简答题
1、简述什么是MVC?
MVC即模型-视图-控制器.MVC是一种设计模式,它强制把应用程序的输入处理和输出分开.视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接受用户的输入,但是它并不进行任何实际的业务处理。模型是应用程序的主体部分。模型表示业务数据和业务逻辑。控制器接受用户的输入并调用模型和视图去完成用户的需求
2、简述servlet的生命周期。
Servlet被服务器实例化后,容器运行其init()方法,请求到达时运行其service()方法,service()方法自动派遣运行与请求对应的doGet、doPost方法等,当服务器决定将实例销毁的时候调用其destroy方法