`
Riddick
  • 浏览: 640161 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Struts2.1.x快速入门(一)

阅读更多

------------------------------------------------------------------

本文转载自--http://yulon.iteye.com/blog/551982

------------------------------------------------------------------

 

开发环境:MyEclipse+Tomcat6.x

一、第一个struts2应用开发

  1.1、开发Struts 2程序最少需要的JAR如下:

      struts2-core-2.x.x.jar :Struts 2框架的核心类库
      xwork-core-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.x.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
      commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件

 

  1.2、Struts2默认的配置文件为struts.xml ,该文件需要存放在WEB-INF/classes下,该文件的配置模板如下:   

Xml代码 复制代码
<?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>
</struts>

    知识提示:此模板可在struts-2.1.6\apps\struts2-blank-2.1.6.war的空白项目里面拷.

    

  1.3、struts2框架是通过Filter启动的。他在web.xml中的配置如下:

     

Xml代码 复制代码

 

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 <!-- 自从Struts 2.1.3以后,下面的FilterDispatcher已经标注为过时
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> --> 
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

    知识提示:在StrutsPrepareAndExecuteFilter的init()方法中将会加载类路径下默认的配置文件struts.xml完成初始化操作,些初始化工作只做一次,在服务器启动过程中完成.

 

  1.4、第一个Struts2版HelloWorld.

      

        1.4.1、新建cn.gkit.action.HelloWorldAction类,代码如下:

        

Java代码 复制代码

 

public class HelloWorldAction {
	
	private String message;
	public String getMessage() {
		return message;
	}
                 //返回的是一个字符串
	public String execute(){
		message = "struts2版的HelloWorld";
		return "success";
	}
}

    知识提示:可以看到此Action类并没有继承其它类,是一个简单的POJO类.

 

        1.4.2、action在struts.xml里的配置:

      

Java代码 复制代码

 

<?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="cn.gkit.action.HelloWorldAction" method="execute" >
	<result name="success">/WEB-INF/jsp/helloworld.jsp</result>
        </action>
    </package>   
</struts>

    知识提示:<package>表示一个包,类似java包. 此包可以被其它包继承.继承的属性是extends. test包就继承了一个struts的默认包struts-default.struts-default包定义在struts-defautl.xml配置文件里,可以在struts2核心包根路径下面找到.namespace属性表示命名空间,可以把请求路径相同的一部分抽取出来。如访问helloworld请求的路径为:/struts2.1/test/helloworld,其中struts2.1是指向该应用程序的虚拟目录(即内容路径).<result>表示返回的视图,具体配置会在第三章中讲到.

 

         1.4.3、在helloworld.jsp显示message信息:

 

Java代码 复制代码

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>struts2.1版HelloWorld</title>
  </head>
  <body>
    ${message}
  </body>
</html>

     知识提示:用el表达式可以将action里的属性取出来.

            

二、Action配置(struts.xml--<action>)的各项默认值

 1>如果没有为action指定class属性,默认是ActionSupport。

 2>如果没有为action指定method属性,默认执行action中的execute() 方法。
 3>如果没有指定result的name属性,默认值为success。

    如在test包里增加如下一个action请求

Xml代码 复制代码

 

<action name="registerUI">
     <result>/WEB-INF/page/register.jsp</result>
</action>

    知识提示:当访问路径/struts2.1/test/registerUI时,返回给浏览器的就是register.jsp页面.配置相当于struts1.x,如下:

Xml代码 复制代码

 

<action path="/test/regiterUI" forward="/WEB-INF/page/register.jsp"/>

 

三、配置的各种视图转发类型

    <result>配置类似于struts1中的<forward>,但struts2中提供了多种结果类型,常用的类型有: dispatcher(默认值)、   redirect(重定向) 、 redirectAction 、 plainText (文本).

 

    3.1、redirect

           但在<result>中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性。

    将1.4.2里的struts.xml配置文件里的<result>改成如下:

Xml代码 复制代码

 

<result type="redirect">/helloworld.jsp?message=${message}</result>

    知识提示: 此时的helloworld.jsp应放在WebRoot目录下才可重定向访问.而在struts1.x的配置文件里的是做不到这一点的.  除非使用urlrewrite重写url,但也不能传一个action里的属性值.  重新访问/struts2.1/test/helloworld请求,浏览器地址将变为/struts2.1/helloworld.jsp?message=struts2H凥elloWorld.这里先忽略中文乱码问题.

 

     3.2、plaintext:显示原始文件内容,例如:当我们需要原样显示jsp文件源代码的时候,我们可以使用此类型。配置如下:

Java代码 复制代码

 

<result name="source" type="plainText ">
	<param name="location">/view.jsp</param>
	<param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->   
</result>

    知识提示:当访问该请求时,返回的一个jsp页面代码文体视图,即jsp页面代码将不会被执行.

    

      3.3、redirectAction作用与redirect类似,不同的是它重定向的是一个action.

四、Action属性注入值

 

 属性注入类似于spring的属性注入,原理上是一样的, 都是通过反射技术将xml对应的值设值到相对应的java属性里.被注入的属性也要有对应的setter方法.

1、在HelloWorldAction 类里增加一下setter方法:

 

Java代码 复制代码

 

public void setMessage(String message) {
		this.message = message;
	}

 2、为了避免覆盖,将execute方法里给message赋值的那一段代码注释掉.

 

 3、在struts.xml配置文件的<action>增加一个子标签<param name="">,配置改成如下:

Xml代码 复制代码

   

<package name="test" namespace="/test" extends="struts-default">
    <action name="helloworld" class="cn.gkit.action.HelloWorldAction" method="execute" >
         <param name="message">属性注入</param>
         <result name="success">/WEB-INF/jsp/helloworld.jsp</result>
     </action>
</package> 

    

此时访问该请求,页面显示的mesage属性值为:   属性注入

五、Struts 2处理的请求

      1、指定需要Struts 2处理的请求后缀,配置文件struts.xml配置里增加一下常量标签<constant>

  

Xml代码 复制代码

 

<?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>

      

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

   

Xml代码 复制代码

 

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

 

     3、常量名struts.action.extension可以在default.properties里找到,里面包含了struts2默认的常量值.default.properties可以在struts2核心包下的org.apache.struts2下找到.

分享到:
评论

相关推荐

    Strtus2学习笔记

    #### 四、搭建Struts2.1项目 1. **准备项目所需文件** - 解压Struts2-blank-2.1.6.war - 复制lib目录下的jar文件至项目lib目录 - 需要除junit和spring-test之外的所有文件 - commons-io的jar包用于文件上传和...

    struts2笔记

    - **docs**:包含了Struts2的相关文档,包括快速入门指南、详细文档以及API文档等。 - **lib**:包含了Struts2框架的核心库及第三方插件库。 - **src**:包含了Struts2框架的源代码。 ##### 2.2 必备JAR包 为了在...

    新手如何学习编程.doc

    - **框架应用**:掌握Struts1.x/Struts2.x、Spring、Hibernate等流行框架的使用方法。 - **高级主题**:深入学习搜索引擎Lucene、工作流JBPM、WebService、单点登录等高级主题。 - **新兴技术**:学习Hadoop等大数据...

    webwork快速入门

    ### WebWork快速入门知识点 #### 一、WebWork框架简介 **WebWork**是一个由OpenSymphony组织开发的Java Web应用框架,它采用MVC(Model-View-Controller)架构模式,强调组件化和代码重用。WebWork的最新版本为2.1...

    JavaEE程序员必读图书大推荐参照.pdf

    5. 《Struts 2.1 权威指南》:学习 Struts2 的一本国人写的不错的书。 6. 《Maven 实践》:从 Ant 到 Maven 现在是大势所趋,学习 Maven 是必备的。 7. 《expert one-on-one J2EE Development without EJB中文版》:...

    java书目集

    13. **Struts 2.1**:讲解了Struts 2框架的使用,包括控制器、视图和模型的构建,适合Web应用开发的学习者。 14. **Maven实战**:介绍Maven构建工具的使用,对比Ant,阐述了Maven的项目管理和依赖管理优势。 以上...

    spring官方文档

    - 在Spring 4.x中,官方提供了更多的教程和示例来帮助开发者快速上手。 **3.2 删除过时的包和方法** - 为了保持框架的简洁性和高效性,Spring 4.x移除了许多过时的包和方法。 **3.3 支持Java 8** - Spring 4.x...

    webwork2.0参考资料

    - **目的**: 通过简单的HelloWorld示例快速入门WebWork。 - **步骤**: - 创建Web项目。 - 添加WebWork的依赖库至项目中。 - 配置`web.xml`文件, 注册Servlet控制器。 - 定义Action类, 实现业务逻辑。 - 配置`...

    JEECMS3.0.4使用教程

    2.1 3.x模板教程之上传资源:JEECMS提供了便捷的资源上传功能,允许用户上传图片、文档等媒体资源,用于网站内容的展示。 2.2 创建资源:通过后台管理界面,可以创建各种类型的内容资源,包括文章、产品、新闻等,...

    java推荐书籍

    5. **《Struts 2.1权威指南》** - **简介**: Struts 2是Java Web应用开发中常用的MVC框架之一,本书详细介绍了Struts 2的配置、组件和最佳实践等内容。 6. **《Maven实战》** - **简介**: Maven是Java项目构建...

    JavaEE程序员必读图书大推荐

    - **《Struts2.1权威指南》** 星级:★★★★☆ 适合对象:初级,中级 Struts2是一个用于构建Web应用程序的强大框架,本书详细介绍了其最新版本的功能和用法。 - **《Maven实践》** 星级:★★★★☆ ...

    spring security 参考手册中文版

    2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 Gradle存储库 23 使用Spring 4.0.x和Gradle 24 2.4.3项目模块 25 ...

    Spring攻略(第二版 中文高清版).part2

    6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...

    Spring攻略(第二版 中文高清版).part1

    6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4 将Spring与JSF集成 226 6.4.1 问题 226 6.4.2 解决方案 226 6.4.3 工作原理 227 6.5 将Spring与DWR...

    dozer(PDF)

    **3.2 从Dozer 1.x迁移到2.x** 由于版本更新可能会引入不兼容的变更,因此文档中提供了一套详细的迁移指南,帮助开发者顺利过渡到新版本。 总结起来,Dozer是一款非常实用的Java Bean映射工具,通过丰富的配置选项...

    JAVA上百实例源码以及开源项目源代码

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

    JAVA程序开发技术

    **2.1 流式输入输出概述** - **概念**:流是一种数据传输方式,用于读写文件或网络数据。 - **分类**: - 字节流:处理二进制数据; - 字符流:处理文本数据。 **2.2 字节流** **2.2.1 基本字节流** - **常用类*...

Global site tag (gtag.js) - Google Analytics