本帖最后由 我是色色 于 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类中 正确情况下响应的数据 错误情况下数据
|