A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 htb52110 于 2018-1-9 13:46 编辑

10、利用Struts2进行文件上传
10.1、前提
浏览器端注意事项:
表单提交方式method=post
表单中必须有一个<input type=”file”>组件
表单中必须设置enctype=”multipart/form-data”
服务器端
          Commons-fileupoad.jar包完成。
    Struts2框架本身支持文件上传

Struts2框架使用一个fileuploadinterceptor来完成文件上传,而我们要使用它
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、Javajson工具使用介绍
        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=””>
使用@Actionresults来描述关于结果类型的配置<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
作用:
用于处理拦截器的
举例:



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马