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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是楠楠 黑马粉丝团   /  2017-12-13 10:49  /  2929 人查看  /  5 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

【郑州校区】三大框架笔记之Struts2-day03
一、 Struts2文件上传1. 文件上传介绍
浏览器端注意事项:
表单提交方式method=post
表单中必须有一个<input type=”file”>组件
表单中必须设置enctype=”multipart/form-data”
服务器端
         Commons-fileupoad.jar包完成。
Struts2框架本身支持文件上传
问题:struts2框架如何完成文件上传?
图片1.png
Struts2框架使用一个fileupload的interceptor来完成文件上传,而我们要使用它
在action中我们可以提供类似以下的操作就能完成文件上传操作
图片2.png
在execute方法中将文件copy就可以完成文件上传。
2. 文件上传快速入门
第一步:创建一个upload.jsp页面
图片3.png
第二步:创建action
图片4.png
图片5.png
图片6.png
3. 文件上传注意事项
文件上传时出现了问题
图片7.png
现在的问题是我们的action中没有设置input视图
图片8.png
在页面上可以通过
图片9.png
在default.properties中
struts.multipart.maxSize=2097152  (2m)
它是描述文件上传时允许的最大值
只需要在struts.xml文件中
图片10.png
我们还可以查看FileuploadInterceptor
图片11.png
如果我们上传时,允许上传多个文件如何操作?
图片12.png
Action如何处理?
图片13.png
也可以使用List<File>  List<String>来控制属性
在方法中
图片14.png
二、 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包
图片15.png
2. 对于User对象
图片16.png
3. 对于List<User>
图片17.png
如果对Date类型进行格式化输出
图片18.png
关于属性是否生成在json串中设置
图片19.png
Jackson简单使用介绍
Spring mvc它的底层使用的就是jackson
1.导入jar包
图片20.png
2.使用
图片21.png
图片22.png
图片23.png
处理日期类型
图片24.png
过滤属性
图片25.png
编码方案实现
图片26.png
需要在类上添加一个注解
图片27.png
2. Strtus2框架如果处理ajax请求2.1. 可以使用HttpServletResponse响应数据
在struts2框架中可以获取HttpServletResponse对象,就可以通过response来完成将数据(json)响应到浏览器过程
浏览器端
需要使用onblure失去焦点事务来处理文本框,向服务器发送ajax请求(jquery完成)
图片28.png
服务器端
图片29.png
数据响应没有问题,处理中文乱码
图片30.png
在浏览器端处理服务器响应的数据
图片31.png
2.2. 使用strtus2框架的json插件来完成ajax操作
首先要导入插件包
图片32.png
我们怎样使用struts2提供的json插件?
1. 将我们自己配置文件中的<package extends=”json-default”>.
2. Action的返回视图<result name=”” type=”json”>
3. 因为我们配置了上面两步,那么struts2框架就会将valueStack中的栈顶元素转换成json响应到浏览器
2.3. 案例---查找商品信息浏览器端操作
图片33.png
服务器端
图片34.png
图片35.png
图片36.png
关于响应的json处理:
1. 怎样忽略属性
图片37.png
上面这种方案有弊端
在org.apache.struts2.json.JSONResult类中有两个属性
图片38.png
它们可以设置响应的数据中是否包含或不包含属性
图片39.png
2. 设置root
没有设置root前返回的json结构 ps:[{},{}]
设置root它的根为ps后的返回的json  [{},{}]
图片40.png
处理服务器响应数据到浏览器展示
图片41.png
三、 Struts2注解开发
注意:要想使用struts2的注解,我们必须单独在导入一个jar包。
图片42.png
它是在strtus2的2.1版本后引入
<package name=”” namespace=””  extedns=”>
<action name=”” class=”” method>
<result name=”” type=””>
1. 快速入门
图片43.png
@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
图片44.png
@Results
类似于全局的结果视图
图片45.png
@InterceptorRef
它是用于处理拦截器的
图片46.png
问题:我们在action类中定义了注解,strtus2框架怎样识别它们?
原因:我们必须查看插件包中的配置
图片47.png
是在action,actions,struts,struts2这样的包下扫描注解
3. 案例-使用注解来完成登录与显示商品3.1. 搭建环境创建库与表
游客,如果您要查看本帖隐藏内容请回复

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


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

5 个回复

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