`

struts2代码实现过滤

阅读更多

1.UploadAction.java

 

package lee;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
   private String title;
   private File upload;
   private String uploadContentType;
   private String uploadFileName;
   //接爱依赖注入的属性
   private String savePath;
   private String allowTypes;
public String getSavePath() {
 return ServletActionContext.getRequest().getRealPath(savePath);
}
//接受依赖注入的方法
public void setSavePath(String savePath) {
 this.savePath = savePath;
}
public String getTitle() {
 return title;
}
public void setTitle(String title) {
 this.title = title;
}
public File getUpload() {
 return upload;
}
public void setUpload(File upload) {
 this.upload = upload;
}
public String getUploadContentType() {
 return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
 this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
 return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
 this.uploadFileName = uploadFileName;
}
public String getAllowTypes() {
 return allowTypes;
}
public void setAllowTypes(String allowTypes) {
 this.allowTypes = allowTypes;
}
//过滤方法
public String filterType(String[] types){
 String fileType=this.getUploadContentType();
 for(String type:types){
  if(type.equals(fileType)){
   return null;
  }
 }
 return INPUT;
}

public String execute()throws Exception{
 String filterResult=filterType(this.getAllowTypes().split(","));
 if(filterResult!=null){
  ActionContext.getContext().put("typeError", "您要上传的文件类型不正确");
  return filterResult;
 }
 System.out.println("文件大小---------------"+this.getUpload().length());
 //以服务器的文件保存地址和原文件名建立上传文件输出流
 FileOutputStream fos=new FileOutputStream(this.getSavePath()+"\\"+this.getUploadFileName());
 FileInputStream fis=new FileInputStream(this.getUpload());
 byte[] buffer=new byte[1024];
 int len=0;
 while((len=fis.read(buffer))>0){
  fos.write(buffer,0,len);
 }
 return SUCCESS;
}

  
}

2.struts.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>

 <constant name="struts.custom.i18n.resources" value="globalMessages"/>
 <constant name="struts.i18n.encoding" value="GBK"/>

 <package name="upload" extends="struts-default">
 
  <action name="upload" class="lee.UploadAction">
  <param name="allowTypes">image/bmp,image/png,image/gif,image/jpeg</param>
     <param name="savePath">/upload</param>
     <result name="input">/upload.jsp</result>
     <result>/succ.jsp</result>
  </action>  
 </package>
</struts> 

 

3.upload.jsp

 

<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>利用拦截器实现文件过滤</title>
</head>
<body>
${requestScope.typeError}
<form action="upload.action" method="post" enctype="multipart/form-data">
   文件标题:<input type="text" name="title" /><br>
   选择文件:<input type="file" name="upload" /><br>
 <input value="上传" type="submit" />
</form>
</body>
</html>

 

4.succ.jsp

 

<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <title>上传成功!</title>
  </head>
 
  <body>
  上传成功!<br>
  文件标题:<s:property value="+ title"/>
  文件为:<img src="<s:property value="'upload/' + uploadFileName"/>"/><br>
  </body>
</html>

分享到:
评论

相关推荐

    struts2实例 自定义过滤器 文件上传下载 登录功能

    本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...

    struts2代码演示

    - **web.xml**:在Web应用中,通常需要配置过滤器`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`来启动Struts2。 3. **Struts2的生命周期** - 用户发起HTTP请求。 - Struts2 Filter捕获请求,解析请求...

    struts2源代码分析

    Struts2的设计思路和工作流程与Struts1.x有很大的区别,这使得深入理解其源代码变得至关重要。 在分析Struts2的源代码之前,你需要首先获取Struts2的源代码,可以通过访问...

    Struts2 拦截器过滤方法(二十八)

    在"Struts2 拦截器过滤方法(二十八)"这个主题中,我们将深入探讨Struts2拦截器的工作原理、如何创建自定义拦截器以及它们在实际应用中的作用。 首先,拦截器是基于Java的动态代理机制实现的,它们在Action执行...

    Struts2项目代码

    3. **Interceptor拦截器**:这是Struts2的一个重要特性,它可以像过滤器一样在Action执行前后插入自定义逻辑。例如,可以使用拦截器实现权限验证、日志记录、性能监控等功能。Struts2内置了一些常用的拦截器,如...

    Struts2拦截器实现权限控制demo

    在Struts2中,拦截器是实现业务逻辑控制和增强功能的重要机制,它们扮演着类似于AOP(面向切面编程)的角色,允许在动作执行前后插入自定义逻辑。在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何...

    struts2开源代码

    3. **配置文件**:例如web.xml,这是Servlet容器的配置文件,通常会包含Struts2的过滤器配置。 4. **测试代码**:可能包含JUnit测试用例,帮助理解Action的正确行为和预期结果。 5. **文档**:可能包括开发者指南...

    struts2.3.4源代码

    2. **StrutsPrepareAndExecuteFilter**: 从Struts2.2开始,FilterDispatcher被这个新的过滤器替代,它整合了准备和执行两个阶段,提高了性能。 3. **ActionContext**: 它在请求处理过程中起着重要作用,存储了请求...

    struts代码

    标题“struts代码”及描述“不错的struts代码,可以使新手上路的必经之道”指向了一段关于Struts框架使用的代码示例,特别关注于Struts2实现多文件上传和下载的功能。这段代码对于初学者而言是宝贵的资源,能够帮助...

    Struts2 技术内幕——深入解析Struts2架构设计与实现原理

    在实现原理上,Struts2 采用了一个基于过滤器(Filter)的请求处理机制。当用户发起一个HTTP请求时,请求首先会被Struts2的过滤器捕获,然后过滤器会根据配置文件(struts.xml)中的映射规则,将请求分派给相应的...

    struts2用cookie实现自动登录中用过滤器执行读取上下文方法

    在Struts2中,可以通过实现`Filter`接口或者继承`FilterDispatcher`类来自定义过滤器。在这个过滤器的`doFilter`方法中,我们可以检查请求是否带有自动登录相关的Cookie。如果找到该Cookie,就从Cookie中解析出用户...

    Struts2框架实现图书管理系统

    在Struts2中,拦截器可以看作是Action执行前后的过滤器,通过定义拦截器栈,我们可以实现如登录检查、权限验证等功能。例如,我们可以创建一个自定义的权限拦截器,确保只有已登录用户才能执行某些Action。 ```xml ...

    过滤器 Struts2全局变量 action转化do

    标题中的“过滤器 Struts2全局变量 action转化do”可能指的是Struts2框架中的ActionMapping和FilterDispatcher配置,以及全局结果(Global Results)的概念。 1. **过滤器(Filter)**:在Java Web开发中,过滤器是...

    用struts2拦截器实现输入数据过滤前后空格

    在这个场景中,我们将探讨如何使用Struts2拦截器来实现输入数据的过滤,特别是去除前后空格。 首先,我们需要理解拦截器的工作原理。在Struts2中,拦截器是基于责任链模式设计的,它们按照配置的顺序形成一个链条,...

    Struts2实现分页代码

    ### Struts2 实现分页代码详解 #### 一、背景与目的 在Web应用程序的开发过程中,数据分页是一项非常重要的功能。特别是在处理大量数据时,为了提高用户体验及减轻服务器压力,通常需要将数据分成若干个小部分进行...

    Struts2编写的通用(拦截器,过滤器)Filter

    在Struts2中,可以通过拦截器和过滤器实现这一功能。拦截器可以在动作执行前检查会话中的登录信息,如果发现用户未登录,可以重定向到登录页面。过滤器则可以在请求进入应用之前检查请求路径,防止未经认证的用户...

    Struts2技术内幕 深入解析Struts架构设计与实现原理

    1. **过滤器(Filter)设计模式**:Struts2采用Servlet容器中的过滤器模式作为入口点,这使得Struts2可以被部署到任何支持Servlet规范的Web容器中。 2. **动态代理**:Struts2使用动态代理技术实现了AOP(面向切面编程)...

    Struts权限过滤器

    Struts权限过滤器是Java Web开发中用于控制用户访问权限的关键组件,主要应用于基于Struts 2框架的应用程序。...理解过滤器的工作原理并掌握其配置和实现方法,是提升Struts 2应用安全性不可或缺的一部分。

Global site tag (gtag.js) - Google Analytics