package cn.itcast.struts2.demo1;
创新互联自2013年起,是专业互联网技术服务公司,拥有项目成都网站设计、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元三穗做网站,已为上家服务,为三穗各地企业和个人服务,联系电话:18982081108
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 完成文件上传 (不是解析上传内容,因为上传内容 由fileUpload拦截器负责解析)
*
* @author seawind
*
*/
public class UploadAction extends ActionSupport {
// 接收上传内容
// input type="file" name="upload" /
private File upload; // 这里变量名 和 页面表单元素 name 属性一致
private String uploadContentType;
private String uploadFileName;
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
if (upload == null) { // 通过xml配置 required校验器 完成校验
// 没有上传文件
return NONE;
}
// 将上传文件 保存到服务器端
// 源文件 upload
// 目标文件
File destFile = new File(ServletActionContext.getServletContext()
.getRealPath("/upload") + "/" + uploadFileName);
// 文件复制 使用commons-io包 提供 工具类
FileUtils.copyFile(upload, destFile);
return NONE;
}
}
多文件上传
package cn.itcast.struts2.demo1;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 支持多文件上传
*
* @author seawind
*
*/
public class MultiUploadAction extends ActionSupport {
// 接收多文件上传参数,提供数组接收就可以了
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;
public void setUpload(File[] upload) {
this.upload = upload;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
for (int i = 0; i upload.length; i++) {
// 循环完成上传
File srcFile = upload[i];
String filename = uploadFileName[i];
// 定义目标文件
File destFile = new File(ServletActionContext.getServletContext()
.getRealPath("/upload" + "/" + filename));
FileUtils.copyFile(srcFile, destFile);
}
return NONE;
}
}
!-- 整合Spring --
constant name="struts.objectFactory" value="spring"/
!-- 开启使用开发模式,详细错误提示 --
constant name="struts.devMode" value="false"/
!-- 指定每次请求到达,重新加载资源文件 --
!-- constant name="struts.i18n.reload" value="true"/ --
!-- 指定每次配置文件更改后,自动重新加载 --
!-- constant name="struts.configuration.xml.reload" value="true"/ --
!-- 指定XSLT Result使用样式表缓存 --
!-- constant name="struts.xslt.nocache" value="true"/ --
!-- 设置该应用使用的解码集 --
constant name="struts.i18n.encoding" value="UTF-8"/constant
!-- struts2 中默认提供了一些访问静态成员的方式,但是默认是关闭的,所以应该在struts2的配置文件中先设置 --
constant name="struts.ognl.allowStaticMethodAccess" value="true"/
include file="struts-default.xml" /
include file="struts-action.xml" /
---------------------------------------------------
struts-action.xml:
package name="com.lj.actions" extends="struts-default"
!-- 拦截器-验证用户登录 --
interceptors
!-- interceptor name="check" class ="com.lj.interceptor.CheckLoginInterceptor" / --
interceptor name="authority" class="com.lj.interceptor.MyFilterInterceptor"/ !--上面自定义的拦截器类--
interceptor-stack name="myDefault"
interceptor-ref name="authority" !-- 引用拦截器 --
param name="includeMethods"queryByAll,queryByWhere,queryByAdId,queryByAdminAll,queryByWhere2CSV,adCheck,adDelete,delete,save,update,accredit,showInfo,appCheck/param !-- 设置需要拦截的方法,多个以逗号隔开 --
/interceptor-ref
interceptor-ref name="defaultStack"/interceptor-ref
/interceptor-stack
/interceptors
default-interceptor-ref name="myDefault"/default-interceptor-ref
!-- 全局跳转页面 --
global-results
result name="error_limit"/jsp/admin/error_limit.jsp/result
result name="list_sys_login"/jsp/admin/list_sys_login.jsp/result
/global-results
!-- 广告管理——广告审核 --
action name="AdCheck" class="com.lj.actions.AdCheckAction"
result name="list_ad_sh"/jsp/admin/list_ad_sh.jsp/result
/action
!-- 广告管理——广告列表 --
action name="AdList" class="com.lj.actions.AdListAction"
result name="list_ad_ls"/jsp/admin/list_ad_ls.jsp/result
/action
Struts2使用拦截器,Servlet使用filter,Spring使用AOP...你所说的链式的拦截器什么意思?业务需求是怎样的?你意思是struts2中使用多个拦截器吗?