文章没继续写是因为,去专心学习框架了,ls
来源:互联网 发布:淘宝付款方式怎么改 编辑:程序博客网 时间:2024/05/16 18:04
既然学习了就要去总结不能颓废 当复习了框架的重点都是配置文件
Struts2框架的应用
二、struts.xml配置文件详解
package:包,将Action(应用控制器)在逻辑上进行隔离,完成包中功能上的继承
name:给package起的名字,就是通过name属性完成继承
namespace:命名空间,action请求url的前缀(url的构成部分)包在地址栏的反应。
extends:值必须为某个包的名字,完成包之间的继承
abstract:抽象的 ,如果一个package是abstract=“true”,该package必须被继承,不能包含action节点。
Action:描述javabean(应用控制器,具体处理请求的javabean) name:该javabean的请求路径 class: javabean的完成限定名(通过反射创建javabean的对象) method: 指定的是处理本次请求的方法 result:Action执行完成后需要响应的结果 name:需要响应的结果逻辑名称 type:表示响应的结果的类型(ajax响应,通过的跳转响应) 请求转化: dispatcher(默认值),只能跳转到jsp chain:跳转到javabean(应用控制器) 重定向: redirect : jsp redirectAction : javabean 产生一个流对象: stream : 通过流对象的方式给客户端做出响应 plainText:响应到客户单的内容为view的源码 param: 参数,给struts2系统中定义的类的属性赋值 name: 需要赋值的属性名称
1.
2.在src下新建struts的配置文件,名称为struts.xml并添加dtd的引用(struts2-core-2.5.10.1.jar中struts-2.5.dtd找到)
3**.预处理拦截器(prepare)**
在action 方法执行前,调用prepare方法。(只对实现了prepareAble接口的aciton有效)。
4.action链拦截器(chain)
能将所有实例的所有属性都拷贝到当前执行的对象的valueStack中。除非该对象实现了Unchainable接口。该连接器同 action返回类型为chain联合使用。
5.debug拦截器(debugging)
6.scopedModelDriven:该拦截器只对实现了ScopedModelDriven 接口的action实例起作用。
7.modelDriven类:com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor
该拦截器同上面原理一样,是只对实现了ModelDriven接口的action起作用
8.文件上传拦截器(fileUpload)
类:org.apache.struts2.interceptor.FileUploadInterceptor
9:checkBox处理拦截器(checkbox)
类:org.apache.struts2.interceptor.CheckboxInterceptor
此拦截器是针对checkbox表单控件的。
10:多选拦截器(multiselect)
类:org.apache.struts2.interceptor.MultiselectInterceptor
同checkbox一样,如果没有选中,则设置默认的值。
11:静态参数拦截器(staticParams)
类:com.opensymphony.xwork2.interceptor.StaticParametersInterceptor
该拦截器将action中配置的静态参数添加到action中。如果action实现了Parameterizable接口,那么,一个map的静态参数也将会设置到action中。
12:静态参数拦截器(staticParams)
类:com.opensymphony.xwork2.interceptor.StaticParametersInterceptor
该拦截器将action中配置的静态参数添加到action中。如果action实现了Parameterizable接口,那么,一个map的静态参数也将会设置到action中。
拦截器和过滤器的对比
拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别。其主要区别为以下几点:
1)拦截器是基于JAVA反射机制的,而过滤器是基于函数回调的。
2)过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器
3)拦截器只能对Action请求起作用,而过滤器可以对几乎所有的请求起作用。
4)拦截器可以访问Action上下文、值栈里的对象,而过滤器不能
5)在Action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
文件上传和下载的页面
如果要获取上传文件的名称: 上传文件的属性名+FileName
如果要获取上传文件的文件类型: 上传文件的属性名+ContentType
package cn.zzsxt.action;
import java.io.File;
import org.apache.commons.io.FileUtils;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport {
private File myfile;//接受上传的文件
private String myfileFileName;//上传文件的属性+FileName获取上传文件的名称,并绑定到该属性上
private String myfileContentType;//上传文件的属性+ContentType获取上传文件的类型,并绑定到该属性上
public File getMyfile() {
return myfile;
}
public void setMyfile(File myfile) {
this.myfile = myfile;
}
public String getMyfileFileName() {
return myfileFileName;
}
public void setMyfileFileName(String myfileFileName) {
this.myfileFileName = myfileFileName;
}
public String getMyfileContentType() {
return myfileContentType;
}
public void setMyfileContentType(String myfileContentType) { this.myfileContentType = myfileContentType;}@Overridepublic String execute() throws Exception { System.out.println(myfileFileName+"---"+myfileContentType); File uploadDir = new File("D:/upload"); //如果上传文件的保存目录不存在,则创建该目录 if(!uploadDir.exists()) uploadDir.mkdirs();//创建目录 //上传 FileUtils.copyFile(myfile, new File(uploadDir,myfileFileName)); return this.SUCCESS;}
}
编写处理下载的业务逻辑Action
package cn.zzsxt.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.opensymphony.xwork2.ActionSupport;
/**
* 利用stream结果视图完成下载
* @author Think
*
*/
public class DownloadAction extends ActionSupport {
private String fileName;//获取要下载的文件名称
private InputStream inputStream;//输入流(将要下载的问题转换为输入流,结合stream结果视图完成下载操作)
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream() { return inputStream;}public void setInputStream(InputStream inputStream) { this.inputStream = inputStream;}@Overridepublic String execute() throws Exception { File file = new File("D:/upload",fileName);//将要下载的文件转为File对象 inputStream = new FileInputStream(file);//转换为输入流 return this.SUCCESS;}
}
- 文章没继续写是因为,去专心学习框架了,ls
- 好久没写文章了~~
- 写的文章没了
- 好久没写文章了,
- 好久没写文章了
- 一年没写文章了!
- 很久没写文章了。。。
- 最近博客没怎么写,因为开始学习ios了,就此开篇
- 当程序员没了互联网,该如何继续学习写代码?
- 当程序员没了互联网,该如何继续学习写代码
- 当程序员没了互联网,该如何继续学习写代码?
- 当程序员没了互联网,该如何继续学习写代码?
- 当程序员没了互联网,该如何继续学习写代码?
- 当程序员没了互联网,该如何继续学习写代码?
- 好长时间没登陆写文章了
- 没写过文章,今天开篇了
- 好久没上来写文章了
- 为什么我写的文章没了?
- 图片缩小与放大
- [Lintcode] #150 买卖股票的最佳时机 II
- Logstash
- 微信小程序 加载网页 加载web-view
- aidl 源码编译提示找不到import
- 文章没继续写是因为,去专心学习框架了,ls
- ODBC 初涉及
- 利用虚拟机的hadoop原生集群搭建
- LintCode 不同的路径II
- Spring(5)Bean标签的常用属性
- Redis学习笔记(一)
- 单位转换
- 文章标题
- ubuntu 系统更新源设置是什么意思