package com.midai.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileI
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行配置,甚至不需要使用Annotation进行配置,而是由struts2根据约定自动配置。 如何使用Convention
一、准备工作及实例1.解压struts-2.1.6-all.zipapps目录:struts2自带的例子程序docs目录:官方文档。lib目录:存放所有jar文件。Src目录:源文件存放地2.六个基本包struts2-core-2.1.6.jar:开发的核心类库freemarker-2.3.13.jar:struts2的UI标签的模板使用freemarker编写commons-logging-1.0.4.jar:日志包ognl-2.6.11.jar:对象图导航语言,通过它来读写对象属性xwork-2.1.2.jar:xwork类库,struts2在其上进行构建commons-fileupload-1.2.1.jar:文件上传组件
核心分发器(Dispatcher)的核心驱动作用Dispatcher之所以被称之为Struts2的核心分发器,主要是基于它在整个Struts2框架中的特殊地位。我们经常会使用“起-承-转-合”这4个不同的阶段来描述一个事件的整个过程,对于Struts2而言,Dispatcher实际上就是囊括这4个阶段的核心分发器。
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。
对于 IoC来说,常见的就是Spring框架的了。并且在目前Java EE开发中,使用SSH框架时,也主要依赖于Spring框架所提供的IoC功能。但Struts2框架本身也提供了IoC的功能。本人对于Spring 框架的IoC功能的实现没怎么做了解,所以也不对此发表什么见解。这里主要是对Struts2框架的IoC的使用方法和实现原理进行分析。纯属个人学习兴趣。。。。
众所周知,现代电子计算机由5大部件组成:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器合称CPU,是计算机中最为核心的部分。如果我们把整个Struts2框架比作是一个计算机,那么XWork则是Struts2框架中的CPU,是Struts2运行机制的核心。
STRUTS2对JSON的做了很好的封装。基本上不需要对原始程序做太多修改即可变成JSON方式。以下是一个例子。
struts.xml配置文件最大的作用就是配置Action和请求之间的对应关系,并配置逻辑视图名和物理视图资源之间的对应关系。除此之外,struts.xml文件还有一些额外的功能,例如Bean配置、配置常量、导入其他配置文件等。
Struts2是基于MVC 的一个非常优秀的框架。Struts2的使用非常简单,这里举出一个简单的Struts2框架的使用步骤。
一、将struts 2的lib文件夹下地commons-fileupload.jar、commons-io.jar、freemarker.jar、javassist.jar、ognl.jar、struts2-core.jar和xwork-core.jar必需类复制到web应用的WEB-INF/lib路径下。如果需要在web应用中使用struts 2的更多特性,则需要将相应的JAR文件复制到web应用的WEB-INF/lib路径下。
Struts2之使用通配符5.4 使用通配符5.4.1 使用通配符前面学过,可以在定义action元素的name属性的时候使用通配符,使这个action元素不仅仅可以匹配一个URL,还可以匹配一类URL。而action的class属性和method属性能使用通配符的值。
在Action中execute方法的方法签名为public String execute() throws Exception,这样,Action可以抛出任何Exception,那么,Exception抛给谁呢?
1) 在软件设计上struts2没有struts1那样跟ServletApi和StrutsApi有着紧密的耦合,Struts2的应用可以不因爱ServletApi和StrutsApi.struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计<br> public class OrderListAction ectends Action//struts依赖于java 2) Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能
Struts2是在WebWork2基础发展而来的。和struts1一样, Struts2也属于MVC框架。不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但Struts2和struts1在代码编写风格上几乎是不一样的。那么既然有了struts1,为何还要推出struts2。
Struts2框架使用包来管理Action和其它组件。每个包就是多个Action和其它一些组件的集合。
之前折腾了下CKEditor和CKFinder实现上传功能,今想来把这个文本编辑器应用到一个自己在做的练手项目中,实现与Struts2的整合,整合的过程so easy.但图片死活上传不上去.那个整合啊,那个蛋疼啊. 经过不懈的努力问题发现了,原来是被struts2搞了.此问题的原因就是struts2的拦截器,在web.xml中,可以清楚的看到: <filter-mapping>
1,在Action实现类方面: Struts1要求Action类继承一个抽象基类;Struts1的一个具体问题是使用抽象类编程 而不是接口。Struts2Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制服务成为可能。 Struts2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含 execute方法的POJO类都可以用作Struts2的Action。
思路如下:多个文件上传,需要注入多个文件对象中,所以Action中定义多个文件,因此是定义文件数组。在这个实例中,我们应用List来实现。其实,在上传文件,无论是单个文件还是多个文件,就是从上传的临时文件或文件组(循环)读到本地中。因此,java的io基础是关键。遇到文件的读写,发现io流基础不牢固,回头又重新看了马士兵的io流并实践io流小例子。