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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【郑州校区】三大框架笔记之Struts2-day03
一、 Struts2文件上传1. 文件上传介绍
浏览器端注意事项:
表单提交方式method=post
表单中必须有一个<input type=”file”>组件
表单中必须设置enctype=”multipart/form-data”
服务器端
         Commons-fileupoad.jar包完成。
Struts2框架本身支持文件上传
问题:struts2框架如何完成文件上传?
Struts2框架使用一个fileupload的interceptor来完成文件上传,而我们要使用它
在action中我们可以提供类似以下的操作就能完成文件上传操作
在execute方法中将文件copy就可以完成文件上传。
2. 文件上传快速入门
第一步:创建一个upload.jsp页面
第二步:创建action
3. 文件上传注意事项
文件上传时出现了问题
现在的问题是我们的action中没有设置input视图
在页面上可以通过
在default.properties中
struts.multipart.maxSize=2097152  (2m)
它是描述文件上传时允许的最大值
只需要在struts.xml文件中
我们还可以查看FileuploadInterceptor
如果我们上传时,允许上传多个文件如何操作?
Action如何处理?
也可以使用List<File>  List<String>来控制属性
在方法中
二、 Struts2框架Ajax开发1. JSON介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#Java、JavaScript、PerlPython等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
1.1. JSON结构
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。
1.2. Java中json工具介绍Fastjson简单使用介绍
1. 导入jar包
2. 对于User对象
3. 对于List<User>
如果对Date类型进行格式化输出
关于属性是否生成在json串中设置
Jackson简单使用介绍
Spring mvc它的底层使用的就是jackson
1.导入jar包
2.使用
处理日期类型
过滤属性
编码方案实现
需要在类上添加一个注解
2. Strtus2框架如果处理ajax请求2.1. 可以使用HttpServletResponse响应数据
在struts2框架中可以获取HttpServletResponse对象,就可以通过response来完成将数据(json)响应到浏览器过程
浏览器端
需要使用onblure失去焦点事务来处理文本框,向服务器发送ajax请求(jquery完成)
服务器端
数据响应没有问题,处理中文乱码
在浏览器端处理服务器响应的数据
2.2. 使用strtus2框架的json插件来完成ajax操作
首先要导入插件包
我们怎样使用struts2提供的json插件?
1. 将我们自己配置文件中的<package extends=”json-default”>.
2. Action的返回视图<result name=”” type=”json”>
3. 因为我们配置了上面两步,那么struts2框架就会将valueStack中的栈顶元素转换成json响应到浏览器
2.3. 案例---查找商品信息浏览器端操作
服务器端
关于响应的json处理:
1. 怎样忽略属性
上面这种方案有弊端
在org.apache.struts2.json.JSONResult类中有两个属性
它们可以设置响应的数据中是否包含或不包含属性
2. 设置root
没有设置root前返回的json结构 ps:[{},{}]
设置root它的根为ps后的返回的json  [{},{}]
处理服务器响应数据到浏览器展示
三、 Struts2注解开发
注意:要想使用struts2的注解,我们必须单独在导入一个jar包。
它是在strtus2的2.1版本后引入
<package name=”” namespace=””  extedns=”>
<action name=”” class=”” method>
<result name=”” type=””>
1. 快速入门
@Namespace来代替<package  namespace=””>
@ParentPackage来代替<package extends=””>
@Action来描述关于<action>配置
value属性<action name=””>
使用@Action的results来描述关于结果类型的配置<result>
<result name=”” type=””>
@Action(results={@Result(name=””,type=””,location=””)})
2. 其它注解:
@Actions
作用:可以通过多个映射来访问同一个action
@Results
类似于全局的结果视图
@InterceptorRef
它是用于处理拦截器的
问题:我们在action类中定义了注解,strtus2框架怎样识别它们?
原因:我们必须查看插件包中的配置
是在action,actions,struts,struts2这样的包下扫描注解
3. 案例-使用注解来完成登录与显示商品3.1. 搭建环境创建库与表
游客,如果您要查看本帖隐藏内容请回复

创建package
3.2. 登录操作login.jsp
UserAction
UserService
UserDao
product.jsp
3.3. 商品显示product.jsp页面完成部分功能
Action
Service
dao
在product.jsp页面上处理服务器响应json并展示
控制用户登录后可以访问商品展示
Interceptor步骤
1. 创建一个类来实现Interceptor接口或继承MethodFilterInterceptor
2. 在struts.xml文件中声明
3. 在action的配置中引用
我们将所有响应到浏览器的数据都封装到Result类中
正确情况下响应的数据
错误情况下数据


【郑州校区】Hibernate入门------HelloWord
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

5 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
{:8_507:}
回复 使用道具 举报
我要数据库和表
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马