黑马程序员技术交流社区
标题: 【郑州校区】三大框架之Struts2-3 [打印本页]
作者: 我是色色 时间: 2017-12-19 16:54
标题: 【郑州校区】三大框架之Struts2-3
本帖最后由 我是色色 于 2017-12-20 10:52 编辑
一、 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介绍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. 搭建环境创建库与表DROP DATABASE exam;
CREATE DATABASE exam;
USE exam;
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
PASSWORD VARCHAR(20)
);
INSERT INTO USER VALUES(NULL,'tom','123');
INSERT INTO USER VALUES(NULL,'fox','456');
CREATE TABLE product(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
COUNT INT,
price DOUBLE
);
INSERT INTO product VALUES(NULL,'电视机',100,1200);
INSERT INTO product VALUES(NULL,'洗衣机',800,2200);
INSERT INTO product VALUES(NULL,'空调机',10,3200);
导入jar包Struts2框架的jar包 基本jar包 插件包
C3p0连接池jar包 mysql驱动jar
Dbutils
Jquery的js文件
配置文件Web.xml文件中配置StrutsPrepareAndExecuteFilter
Src/struts.xml
Src/c3p0.properties
创建package3.2. 登录操作login.jspUserActionUserServiceUserDaoproduct.jsp
3.3. 商品显示product.jsp页面完成部分功能
ActionServicedao
在product.jsp页面上处理服务器响应json并展示
控制用户登录后可以访问商品展示Interceptor步骤
1. 创建一个类来实现Interceptor接口或继承MethodFilterInterceptor
2. 在struts.xml文件中声明
3. 在action的配置中引用
我们将所有响应到浏览器的数据都封装到Result类中
正确情况下响应的数据
错误情况下数据
作者: 我是色色 时间: 2017-12-19 17:10
{:8_507:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |