拦截器
首先新建一个拦截器的类,类实现Interceptor接口,记得是xwork2包下的
重写三个方法,在intercept的方法中执行拦截器前后需要执行的操作,
执行前后的区分为
String invoke=actionInvocation.invoke();//放行
在这行代码前就是执行前的操作,在这行代码后就是执行后的操作
然后就是配置xml文件
配置拦截器
<!--拦截器-->
<interceptors>
<interceptor name="oneInterceptor" class="com.hw.one.five.OneInterceptor"></interceptor>
</interceptors>
再就是配置需要使用拦截器的action
<action name="Interceptor" class="com.hw.one.web.Interceptor">
<interceptor-ref name="oneInterceptor"> </interceptor-ref>
</action>
拦截器就完成了
上传
配置xml就不多说了
新建action类,然后继承baseAction
设置四个属性
private File file;
private String fileFileName;
private String fileContentType;
/**
* 虚拟路径
* 虚拟路径是存在服务器中,真实路径是本地
*/
private String serverDir = "/Upload";
获取文件夹的真实路径
private String getRealPath(String Path) {
return this.request.getServletContext().getRealPath(Path);
}
上传
public String upload() throws IOException {
System.out.println("名字" + fileFileName);
System.out.println("类型" + fileContentType);
//真实路径
String realPath = getRealPath(serverDir + "/" + fileFileName);
System.out.println(realPath);
//复制
FileUtils.copyFile(file, new File(realPath));
return "Interceptor";
}
下载
public String save() throws IOException {
//数据库获得
String filename = "img1.jpg";
String filetype="image/jpg";
response.setContentType(filetype);
response.setHeader("Content-Disposition","attachment;filename=" + filename);
String realPath=getRealPath(serverDir + "/" + filename);
FileUtils.copyFile(new File(realPath),response.getOutputStream());
return null;
}
直接显示图片
public String open() throws IOException {
//数据库获得
String filename = "img1.jpg";
String filetype="image/jpg";
response.setContentType(filetype);
response.setHeader("Content-Disposition","filename=" + filename);
String realPath=getRealPath(serverDir + "/" + filename);
FileUtils.copyFile(new File(realPath),response.getOutputStream());
return null;
}
BaseAction
public class UploadsAction extends BaseAction{
private File[] file;
private String[] fileFileName;
private String[] fileContentType;
private String serverDir = "/Upload";
public File[] getFile() {
return file;
}
public void setFile(File[] file) {
this.file = file;
}
public String[] getFileFileName() {
return fileFileName;
}
public void setFileFileName(String[] fileFileName) {
this.fileFileName = fileFileName;
}
public String[] getFileContentType() {
return fileContentType;
}
public void setFileContentType(String[] fileContentType) {
this.fileContentType = fileContentType;
}
/**
* 获取文件夹的真实路径
*
* @param Path
* @return
*/
private String getRealPath(String Path) {
return this.request.getServletContext().getRealPath(Path);
}
/**
* 上传
*
* @return
*/
public String upload() throws IOException {
for (int i = 0; i < file.length; i++) {
System.out.println("名字" + fileFileName[i]);
System.out.println("类型" + fileContentType[i]);
//真实路径 ,文件名前面加上uuid是因为可能会因为文件名相同而覆盖
String realPath = getRealPath(serverDir + "/" + UUID.randomUUID().toString() +fileFileName[i]);
System.out.println(realPath);
//复制
FileUtils.copyFile(file[i], new File(realPath));
}
return "Interceptor";
}
}
BaseAction
package com.hw.one.web;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
/**
* 每一个开发的子控制器要用的属性都定义在通用的action中。
* @author Administrator
*
*/
public class BaseAction implements ServletRequestAware, ServletResponseAware{
/**
* 为了传值使用
*/
protected HttpServletResponse response;
protected HttpServletRequest request;
protected HttpSession session;
protected ServletContext application;
/**
* 为了配置跳转页面所用
*/
protected final static String SUCCESS = "success";
protected final static String FAIL = "fail";
protected final static String LIST = "list";
protected final static String ADD = "add";
protected final static String EDIT = "edit";
protected final static String DETAIL = "detail";
/**
* 具体传值字段 后端向jsp页面传值所用字段
*/
protected Object result;
protected Object msg;
protected int code;
public Object getResult() {
return result;
}
public Object getMsg() {
return msg;
}
public int getCode() {
return code;
}
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.response = arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
this.request = arg0;
this.session = arg0.getSession();
this.application = arg0.getServletContext();
}
}
单个文件上传见上篇博客