本帖最后由 htb52110 于 2018-1-9 13:46 编辑
10、利用Struts2进行文件上传
10.1、前提
浏览器端注意事项:
表单提交方式method=post
表单中必须有一个<input type=”file”>组件
表单中必须设置enctype=”multipart/form-data”
服务器端
Commons-fileupoad.jar包完成。
Struts2框架本身支持文件上传
Struts2框架使用一个fileupload的interceptor来完成文件上传,而我们要使用它
在action中我们可以提供类似以下的操作就能完成文件上传操作
在execute方法中将文件copy就可以完成文件上传。
10.2、文件上传的案例
第一步:创建一个upload.jsp页面
第二步:创建action
10.3、注意事项
文件上传时出现了问题
现在的问题是我们的action中没有设置input视图
在页面上可以通过
在default.properties中
struts.multipart.maxSize=2097152 (2m)
它是描述文件上传时允许的最大值
只需要在struts.xml文件中
我们还可以查看FileuploadInterceptor
如果我们上传时,允许上传多个文件如何操作?
Action如何处理?
也可以使用List<File> List<String>来控制属性,在方法中
11、Struts2框架Ajax开发
11.1、JSON介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
11.2、JSON结构
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
11.3、Java中json工具使用介绍
11.3.1、FastJson
a、导入jar包
b、对于User对象
c、对于List<User>
如果对Date类型进行格式化输出
关于属性是否生成在json串中设置
11.3.2、Jackson简单使用介绍
Spring mvc它的底层使用的就是jackson
a、导入jar包
b、使用
处理日期类型
过滤属性
编码方案实现
需要在类上添加一个注解
11.3.3、使用Struts2框架内部转换json
1)、首先要导入插件包
2)、将我们自己配置文件中的<package extends=”json-default”>.
Action的返回视图<result name=”” type=”json”>
因为我们配置了上面两步,那么struts2框架就会将valueStack中的栈顶元素转换成json响应到浏览器
注意:
处理响应的JSON时:
忽略属性
提醒:
上面这种方案有弊端
在org.apache.struts2.json.JSONResult类中有两个属性
它们可以设置响应的数据中是否包含或不包含属性
设置root:
没有设置root前返回的json结构 ps:[{},{}]
设置root它的根为ps后的返回的json [{},{}]
12、Struts2的注解开发
12.1、前提
导入jar包
注意:包和类的命名是结尾必须是“.action”或“.actions”或 “struts”或“struts2”(个人总结,这样写绝对不会出错)
12.2、开发
在Action的类中加注解例如:
解释:
@Namespace来代替<package namespace=””>
@ParentPackage来代替<package extends=””>
@Action来描述关于<action>配置
value属性<action name=””>
使用@Action的results来描述关于结果类型的配置<result>
<result name=”” type=””>
@Action(results={@Result(name=””,type=””,location=””)})
12.3、其他注解
12.3.1、@Actions
作用:
可以通过多个映射来访问同一个action
举例:
12.3.2、@Results
作用:
类似于全局的结果视图
12.3.3、@InterceptorRef
作用:
用于处理拦截器的
举例:
|
|