- 浏览: 640854 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
lizhuang:
这个方法的内部实现主要是依赖于类加载器,一般的自己实现的类是用 ...
Java中getResourceAsStream的用法 -
prince4426:
回答评论都很精彩
Java中getResourceAsStream的用法 -
kexuetou:
美人如此多娇 写道可能这样总结更好,路径前不带'/',则是相对 ...
Java中getResourceAsStream的用法 -
guoxin91:
...
Java中getResourceAsStream的用法 -
美人如此多娇:
可能这样总结更好,路径前不带'/',则是相对路径;若带,则是绝 ...
Java中getResourceAsStream的用法
------------------------------------------------------------------
本文转载自--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 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中的配置如下:
<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类,代码如下:
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里的配置:
<?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信息:
<%@ 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请求
<action name="registerUI"> <result>/WEB-INF/page/register.jsp</result> </action>
知识提示:当访问路径/struts2.1/test/registerUI时,返回给浏览器的就是register.jsp页面.配置相当于struts1.x,如下:
<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>改成如下:
<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文件源代码的时候,我们可以使用此类型。配置如下:
<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方法:
public void setMessage(String message) { this.message = message; }
2、为了避免覆盖,将execute方法里给message赋值的那一段代码注释掉.
3、在struts.xml配置文件的<action>增加一个子标签<param name="">,配置改成如下:
<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 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、如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号隔开。如:
<constant name="struts.action.extension" value="do,htm"/>
3、常量名struts.action.extension可以在default.properties里找到,里面包含了struts2默认的常量值.default.properties可以在struts2核心包下的org.apache.struts2下找到.
发表评论
-
HTTP协议解析
2010-01-27 20:39 4523掌握HTTP虽然不是必须的,但是如果你知道它的工作原理,那么在 ... -
TOMCAT指定JDK
2010-01-14 17:13 2409在windows环境下以批处理文件方式启动tomcat,只要运 ... -
Struts2的国际化
2010-01-01 11:30 1159Struts2国际化分为三类: ... -
总结Struts2的经典输入校验
2009-12-30 16:59 21101,输入校验介绍 Struts2提供了功能强大的输入校验机制 ... -
浅谈Struts2的内建校验器
2009-12-30 16:16 1306Struts2已经为我们准备了一些内建校验器,我们可以直接使用 ... -
Struts2输入校验
2009-12-30 16:12 1631struts2的输入校验针对输入进行业务规则的校验,譬如是否必 ... -
Struts2拦截器原理
2009-12-27 21:02 33411. 什么是拦截器 拦截器,在AOP(Aspect-O ... -
Struts2多文件上传
2009-12-27 17:36 1388Struts2也可以很方便地实现多文件上传。 在输入表 ... -
Struts2文件上传
2009-12-27 16:52 15131.文件上传原理 表单元素的enctype属性指定 ... -
Struts2 访问request、session和application对象
2009-12-27 15:28 3852在传统的Web开发中,经常会用到Servlet API中的Ht ... -
Struts2类型转换
2009-12-26 23:01 1683一、 struts2类型转换一 1、struts2的类型转 ... -
Struts2请求参数的接收
2009-12-26 22:24 16291)--采用基本类型接收请求参数(get/post) ... -
Struts2动态方法调用
2009-12-26 16:48 4521Struts2支持动态方法调用,它指的是一 ... -
Struts2指定多个配置文件
2009-12-26 15:50 2887如果配置文件struts.xml的内容太多,或者是 ... -
Struts2命名空间
2009-12-26 15:24 1624Struts.xml命名空间规则 包的na ... -
Struts2框架的处理流程
2009-12-26 15:07 42661. Struts2架构图 请求首先通过F ... -
Struts2的常量详解
2009-12-26 11:43 3482通常struts2加载struts2常 ... -
HTML form包含的元素
2009-12-25 17:01 1775HTML form elements Object ... -
Struts2.1.x快速入门(二)
2009-12-23 20:02 1176------------------------------- ... -
Hibernate常见集合映射(Set,List Array,Map,Bag)
2009-12-06 14:42 3737Hibernate常见的集合映射主要有Set,List,Arr ...
相关推荐
#### 四、搭建Struts2.1项目 1. **准备项目所需文件** - 解压Struts2-blank-2.1.6.war - 复制lib目录下的jar文件至项目lib目录 - 需要除junit和spring-test之外的所有文件 - commons-io的jar包用于文件上传和...
- **docs**:包含了Struts2的相关文档,包括快速入门指南、详细文档以及API文档等。 - **lib**:包含了Struts2框架的核心库及第三方插件库。 - **src**:包含了Struts2框架的源代码。 ##### 2.2 必备JAR包 为了在...
- **框架应用**:掌握Struts1.x/Struts2.x、Spring、Hibernate等流行框架的使用方法。 - **高级主题**:深入学习搜索引擎Lucene、工作流JBPM、WebService、单点登录等高级主题。 - **新兴技术**:学习Hadoop等大数据...
### WebWork快速入门知识点 #### 一、WebWork框架简介 **WebWork**是一个由OpenSymphony组织开发的Java Web应用框架,它采用MVC(Model-View-Controller)架构模式,强调组件化和代码重用。WebWork的最新版本为2.1...
5. 《Struts 2.1 权威指南》:学习 Struts2 的一本国人写的不错的书。 6. 《Maven 实践》:从 Ant 到 Maven 现在是大势所趋,学习 Maven 是必备的。 7. 《expert one-on-one J2EE Development without EJB中文版》:...
13. **Struts 2.1**:讲解了Struts 2框架的使用,包括控制器、视图和模型的构建,适合Web应用开发的学习者。 14. **Maven实战**:介绍Maven构建工具的使用,对比Ant,阐述了Maven的项目管理和依赖管理优势。 以上...
- 在Spring 4.x中,官方提供了更多的教程和示例来帮助开发者快速上手。 **3.2 删除过时的包和方法** - 为了保持框架的简洁性和高效性,Spring 4.x移除了许多过时的包和方法。 **3.3 支持Java 8** - Spring 4.x...
- **目的**: 通过简单的HelloWorld示例快速入门WebWork。 - **步骤**: - 创建Web项目。 - 添加WebWork的依赖库至项目中。 - 配置`web.xml`文件, 注册Servlet控制器。 - 定义Action类, 实现业务逻辑。 - 配置`...
2.1 3.x模板教程之上传资源:JEECMS提供了便捷的资源上传功能,允许用户上传图片、文档等媒体资源,用于网站内容的展示。 2.2 创建资源:通过后台管理界面,可以创建各种类型的内容资源,包括文章、产品、新闻等,...
5. **《Struts 2.1权威指南》** - **简介**: Struts 2是Java Web应用开发中常用的MVC框架之一,本书详细介绍了Struts 2的配置、组件和最佳实践等内容。 6. **《Maven实战》** - **简介**: Maven是Java项目构建...
- **《Struts2.1权威指南》** 星级:★★★★☆ 适合对象:初级,中级 Struts2是一个用于构建Web应用程序的强大框架,本书详细介绍了其最新版本的功能和用法。 - **《Maven实践》** 星级:★★★★☆ ...
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 ...
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...
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...
**3.2 从Dozer 1.x迁移到2.x** 由于版本更新可能会引入不兼容的变更,因此文档中提供了一套详细的迁移指南,帮助开发者顺利过渡到新版本。 总结起来,Dozer是一款非常实用的Java Bean映射工具,通过丰富的配置选项...
数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...
**2.1 流式输入输出概述** - **概念**:流是一种数据传输方式,用于读写文件或网络数据。 - **分类**: - 字节流:处理二进制数据; - 字符流:处理文本数据。 **2.2 字节流** **2.2.1 基本字节流** - **常用类*...