struts2入门3
来源:互联网 发布:js鼠标悬停事件 编辑:程序博客网 时间:2024/06/05 08:47
1.文件上传: 浏览器三要素, 服务器端: commons-fileupload.jar fileuploadinterceptor拦截器
1. 继承模型驱动类, 创建 file, contenttype , filename, 成员属性, 在execute方法内将文件copy就可上传.
2.命名规范: file 属性命名: jsp页面name, jsp name+Contenttype , jsp name+FileName ; 这里name自定义的
3.为以上属性提供get,set方法.
在方法内, io工具类:fileutiles.copyfile(upload,new file(servletcontext.getrealpath(/upload));
4.注意事项: 文件上传有限制大小,在default.properties中,有一个struts.multipart.maxsize=2M;
1.在struts2 中配置常量,改变值就可以了.这是对整个工程设置
2. 针对某个action设置 在action下,设置拦截器标签<interceptor-ref name="fileUpload">
<param name="maximumsize"> <param name="allowedextensions">设置类型, 还要引入默认的拦截器;
3.上传时如何允许上传多个: 可以在action类中,把三个成员属性设置成集合或数组.在方法内循环数组,完成文件 上传 , 还有就是在jsp中name名称一致;
2. 如果拦截器出现问题,会把错误信息存在action, 然后跳到指定的input视图.可以自定义一个error.jsp,
然后在struts.xml中配置 result标签的name="input";就会把错误信息显示到.
将.jsp中两个标签,<s:fielderror> ,<s:actionerror>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
3. json数据格式: 对象和数组可以互相嵌套.
* 1.fastjson json工具在json和java之间转换, JSONobjct.toJSONString(对象); JSONArray.toJSONString(集合);
1. 以上解决日期格式: 注解@JSONField(format="yyyy-mm-dd"); 阿里独有的注解
2. 处理不想要的属性JSONobjct.toJSONString(对象,new propertyfilter(
重写 apply(要转换成json的对象,属性名称,属性值){
if属性名称.equal() return false;
}));
2. 另一种jackson 工具类, 导入jar包,new ObjectMapper.writevalueasstring(对象或数组);重载的方法特别多
mapper.writeValue(ServletActionContext.getResponse().getWriter(), 对象或数组);
1. 解决日期: mapper.setDateFormat(new Simpledatformat());设置日期格式器;
2. 过滤属性: 注解@JsonIgnoreproperties({"属性1","属性2"})在类上面;这是使用这个类的全部过滤
处理一个类的过滤属性 mapper.setfilter(new simplefilterprovider.addfilter(
注解的自定名 ,simplebeanpropertyfilter.serializeallexcept(不想要的属性1,...)));
在类上加注解@JsonFilter("自定义名")
4.当出现死循环转换时候, 例如订单关联客户,客户关联订单, 当转客户为json格式时候,
1.除了fastjson,都会内存溢出;
如果关闭fastJson,JSON.toJSONString(customer,SerializerFeature.DisableCircularReferenceDetect)
不想用哪个属性, @JSONField(serialize=false) 在这个属性上面private Customer c;
2.其他工具内存溢出解决,直接不要那个属性了,加注解@JsonIgnore
5.struts.xml分文件, <include file="..xml"/>
6.struts2处理ajax请求.创建一个result类, 两个属性: 描述是否可用,错误信息; 把result类转换为json
mapper.writervalue( response.getwriter,result);注意解决乱码;
js代码中eval("("+data+")")将data转为js对象;括号一定要加;
7. struts2框架的json插件. 导入jar包,将struts.xml <package extends="json-defalut">
action的返回视图<result type="json"> , struts2框架就会将valuestack的"栈顶"元素转为json格式.
响应到浏览器,所以不用response转为json了,只需要把集合或对象压入栈顶就可以了.
8.关于响应json的处理, 忽略属性 : 在jsonresult类中有两个属性; includeproperties包含 不包含exclude....
在struts.xml中 的result标签下,设置root,<param name="root">ps 这样会把ps后面的[]取出来;
<param name="excludeproperties">\[\d+\]\.属性名 要把[] 转义 所以 \[\]
javascript:void(0); 相当于#;
9.注解开发;
导入convention-plugin-2.3.24.jar包, 2.1版本以后才能
1.在类上面@Namespace("/") 相当于namspace="/" @parentPackage("struts-defult")
2.在方法上面@action(value="hello",results={@result(name="" ,type="",location=".jsp")})
10.在类上面:actions: 可以用过多个映射来访问同一个action. results : 全局返回视图
他默认只会扫描包名为action,actions,sturts,staurts2. 类名: Action结尾:
如果别的名字,就需要在xml中配置常量 name="struts.convention.package.locators" action.suffix类名
阅读全文
0 0
- struts2入门(3)
- struts2入门3
- Struts2学习笔记(3)-----Struts2入门
- Struts2入门(3): 配置文件
- Struts2入门
- struts2 入门
- struts2入门
- struts2-入门
- struts2入门
- struts2入门
- Struts2入门
- struts2入门
- Struts2入门
- struts2 入门
- struts2-入门
- Struts2入门
- struts2 入门
- struts2入门
- mysql命令总结
- TCP/IP详解学习笔记 这位仁兄写得太好了.
- struts2入门2
- MPEG音频编码实验报告
- cmd修改UTF-8编码
- struts2入门3
- azkaban-2.5.0 启动报错Invalid maximum heap size: -Xmx4G 解决
- POJ2431 Expedition【贪心+优先队列】
- java中变量、代码块、构造执行顺序
- Verilog语言设计增加延时的正确方法
- ${pageContext.request.contextPath} :JSP取得绝对路径方法
- hibernate入门1
- SDIO驱动(15)使用DMA传输数据1
- Linux搭建Git服务器