`

使用Struts2快速开发的步骤:

阅读更多

开发Struts2依赖的jar

http://struts.apache.org/download.cgi#struts2014下载struts-2.x.x-all.zip,目前最新版为2.1.6。下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。不同的应用需要的JAR包是不同的。下面给出了开发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),Struts 2框架使用的一种表达式语言

freemarker-2.3.x.jar :Struts 2UI标签的模板使用FreeMarker编写

commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4JJDK 1.4+的日志记录。

Commons-fileupload   拷进去

还有一种最省事的做法是:

如果不需要跟第三方框架集成,把不带-plugin结尾的jar文件都添加入类路径即可。如果需要跟第三方框架集成,这时候还需要加入对应的-plugin jar文件。例如跟spring集成,需要加入struts2-spring-plugin-2.x.x.jar.

Struts2的启动配置

struts1.x中, struts框架是通过Servlet启动的。在struts2中,struts框架是通过Filter启动的。他在web.xml中的配置如下:

<filter>

    <filter-name>struts2</filter-name>

    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

</filter>

<filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

FilterDispatcherinit()方法中将会读取类路径下默认的配置文件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"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

   <package name="test" namespace="/test" extends="struts-default">

       <action name="helloworld" class="net.xabc. action.HelloWorldAction">

              <result name="success">/WEB-INF/page/hello.jsp</result>

       </action>

    </package>

</struts>

Struts2的第一个应用(编写Action)

例子中使用到的net.xabc.action.HelloWorldAction类如下:

package net.xabc.action;

public class HelloWorldAction{

       private String message;

      

       public String getMessage() {

              return message;

       }

       public void setMessage(String message) {

              this.message = message;

       }

 

       public String execute() throws Exception{

              this.message = "我的第一个struts2应用";

              return "success";

       }

}

编写JSP页面

例子中使用到的/WEB-INF/page/hello.jsp如下:

 

<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>第一个struts2应用</title>

  </head>

  <body>

   ${message } <br>

  </body>

</html>

 

可以使用EL表达式访问Action中的属性。

 

配置文件详解
1.Struts.xml配置包

 

<package name="test" namespace="/test" extends="struts-default">

       <action name="helloworld" class="net.xabc.action.HelloWorldAction">

              <result name="success">/WEB-INF/page/hello.jsp</result>

       </action>

 </package>

struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。

配置包时必须指定name属性,如果其他包要继承该包,必须通过该属性进行引用。

包的namespace属性用于定义该包的命名空间。该属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为“”(空字符串)

 

通常每个包都应该继承struts-default包, struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型。Struts2很多核心的功能都是通过这些内置的拦截器实现的。如:从请求中把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。当包继承了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

 

 

Struts.xml配置Action

 

<package name="test" namespace="/test" extends="struts-default">

       <action name="helloworld" class="net.xabc.action.HelloWorldAction">

              <result name="success">/WEB-INF/page/hello.jsp</result>

       </action>

 </package>

struts1中,通过path属性指定访问该actionURL路径。在struts2中,情况就不是这样了,访问struts2中的actionURL路径由两部份组成:包的命名空间+action的名称,例如访问上面例子中名为helloworldActionURL路径为:/test/helloworld (注意:完整路径为:http://localhost:端口/内容路径/test/[x1] helloworld.action)

 

如果没有为action指定class,默认是ActionSupport。而ActionSupportexecute() 方法默认处理就是返回一个success字符串。method属性用于指定action中的那个方法,如果没有指定默认执行action中的execute() 方法。

Action名称的搜索顺序

 

1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

2.首先寻找namespace/path1/path2/path3package,如果存在这个package,则在这个package中寻找名字为testaction,如果不存在这个package则转步骤3

3.寻找namespace/path1/path2package,如果存在这个package,则在这个package中寻找名字为testaction,如果不存在这个package,则转步骤4

4.寻找namespace/path1package,如果存在这个package,则在这个package中寻找名字为testaction,如果仍然不存在这个package,就去默认的namaspacepackage下面去找名字为testaction,如果还是找不到,页面提示找不到action

 

Struts.xml配置Actionresult

 

<action name="helloworld" class="net.xabc.action.HelloWorldAction">

       <result name="success">/WEB-INF/page/hello.jsp</result>

</action>

result配置类似于struts1中的forward,但struts2中提供了多种结果类型,如: dispatcher(默认值) redirect redirectAction plainText

 

下面是redirectAction 结果类型的例子,如果重定向的action中同一个包下:

<result type="redirectAction">helloworld</result>

如果重定向的action在别的命名空间下:

<result type="redirectAction">

       <param name="actionName">helloworld</param>

       <param name="namespace">/test</param>

</result>

 

如果没有指定resultname属性,默认值为success

 

result中还可以使用${属性名}表达式,表达式里的属性名对应action中的属性。如下:

<result type="redirect">view.jsp?id=${id}</result>

指定需要Struts 2处理的请求后缀

 

FilterDispatcherStruts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户请求。默认情况下,如果用户请求的路径以.action结尾,该请求将被转入Struts 2框架处理,否则该请求将略过Struts 2框架的处理。

 

默认处理的后缀是可以通过常量”struts.action.extension“进行修改的,如下面配置Struts 2只处理以.do为后缀的请求路径:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <constant name="struts.action.extension" value="do"/>

</struts>

 

如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。如:

 <constant name="struts.action.extension" value="do,go"/>

 

Struts2的处理流程

 

指定多个配置文件

 

在大部分应用里,随着应用规模的增加,系统中Action数量也大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

       <include file="struts-user.xml"/>

       <include file="struts-order.xml"/>

</struts>

 

通过这种方式,我们就可以将Struts 2Action按模块配置在多个配置文件中。

动态方法调用

 

如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法。如下:

public class HelloWorldAction{

       private String message;

       ....

       public String execute() throws Exception{

              this.message = "我的第一个struts2应用";

              return "success";

       }

      

       public String other() throws Exception{

              this.message = "第二个方法";

              return "success";

       }

}

假设访问上面actionURL路径为: /struts/test/helloworld.action

要访问actionother() 方法,我们可以这样调用:

/struts/test/helloworld[x2] !other[x3] .action

通常不建议大家使用动态方法调用,我们可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用。

<constant name="struts.enable.DynamicMethodInvocation" value="false"/>

 

 

使用通配符定义action

 

<package name="test" namespace="/test" extends="struts-default">

       <action name="helloworld_*" class="net.xabc.action.HelloWorldAction" method="{1}">

              <result name="success">/WEB-INF/page/hello.jsp</result>

       </action>

</package>

public class HelloWorldAction{

       private String message;

       ....

       public String execute() throws Exception{

              this.message = "我的第一个struts2应用";

              return "success";

       }

      

       public String other() throws Exception{

              this.message = "第二个方法

分享到:
评论

相关推荐

    使用Struts2快速开发的步骤

    详尽的struts2 的介绍和配置,很快熟练使用的文档

    MyEclipse图文整合SSH,Struts2+Spring+Hibernate整合过程详解

    Struts2+Spring+Hibernate整合过程详解  Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。... 本文记录了使用Myeclipse8.5对Struts2、Spring、Hibernate进行整合的详细步骤:

    Struts2、Spring和Hibernate应用实例.

    现在就将笔者使用Myeclipse工具应用struts2 + spring2 + hibernate3 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将Struts2.0.6、Spring2.0.6和Hibernate3.1进行整合,希望通过...

    Spring基础和入门实例(包括struts+spring+hibernate整合开发实例)

    这是一个Spring开发入门教程 pdf格式 高清晰 包括 下载安装 配置 实例 基础讲解 很适合快速入门和了解Spring开发的步骤 思路清晰 另外还包含struts+spring+hibernate整合开发实例的配置步骤讲解与等价Spring重构

    低清版 大型门户网站是这样炼成的.pdf

    2.3.2 struts 2应用基本开发步骤—搭建eportal应用 69 2.3.3 struts 2中集成fckeditor 80 2.3.4 struts 2中集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的中文本地化 85 2.4.2 struts 2应用的...

    《Java EE技术与应用》[张军朝][电子教案(PPT版本)]

    第三篇讲解了快速开发平台的概念,并以TDFY快速开发平台为例,讲解了该平台的功能、设计思想、技术选型、安装部署以及使用步骤,同时还讲解了该平台中常用组件的使用以及手机端的基础接口知识,使读者掌握TDFY平台...

    精通Eclipse.pdf

    本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘包含整个项目的源代码,方便读者提高学习的效率。 本书适合于Eclipse的初学者和中级应用开发人员,是没有项目开发经验的读者的绝佳指导书之一。本书...

    微信开发框架wechat4j

    wechat4j是一个帮助你开发微信应用的jar包,使用它,你开发微信公众号应用只需要几秒钟的时间,完全不用关注太细节的东西。 ##wechat4j快速开始 可以去下载wechat4j示例项目[wechat4jDemo]...

    iuhyiuhkjh908u0980

    本章我们将会开发基于Struts2框架的Hello World.我们的Hello World程序是你开发基于Struts2框架程序的第一步.这里我们会提供循序渐进的教程来开发基于Struts2框架的Hello World程序. 教程包含基本的步骤像创建目录...

    整理后java开发全套达内学习笔记(含练习)

    short 16bit, -2^15~2^15-1 (2^15=32768) int 32bit, -2^31~2^31-1 (2147483648,20亿,10位有效数字) long 64bit, -2^63~2^63-1 (900亿亿,20位有效数字) float 32bit, 9位有效数字,含小数(四舍五入)(小数点算...

    UML和模式应用(架构师必备).part01.rar

    第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器...

    UML和模式应用(架构师必备).part07.rar

    第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器...

    UML和模式应用(架构师必备).part02.rar

    第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器...

    UML和模式应用(架构师必备).part06.rar

    第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器...

    UML和模式应用(架构师必备).part03.rar

    第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器...

    UML和模式应用(架构师必备).part04.rar

    第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器...

    UML和模式应用(架构师必备).part05.rar

    第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器...

    UML和模式应用(架构师必备).part08.rar

    第24章 迭代2:更多模式 24.1 从迭代1到迭代2 24.2 迭代2的需求和重点:对象设计和模式 第25章 GRASP:其他对象职责 25.1 多态 25.2 纯虚构 25.3 间接性 25.4 防止变异 第26章 应用GoF设计模式 26.1 适配器...

    SSH三大框架经典入门教程(教程文档大全) 中文PDF完整版

    SSH三大框架经典入门教程共有4章,以非常通俗易懂的方式,向我们介绍Struts、Spring、Hibernate三大现在比较流行的JAVA_WEB开发框架,非常适合刚刚接触的朋友快速入门。 资料包含:领略清晰的MVC流程- --- Struts...

    java面试题

    72.5. Struts 2框架的大致处理流程如下: 68 72.6. Struts体系结构中的组件 69 72.7. struts如何实现国际化 70 72.8. struts2.0的常用标签 71 72.9. action是单实例还是多实例,为什么? 73 72.10. Struts的validate...

Global site tag (gtag.js) - Google Analytics