`
梦想家dream
  • 浏览: 63243 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

struts2从零开始(四)

阅读更多
  知识点:1、文件上传
          2、类型转换
  

   1、文件上传:
   1.1、 jsp页面代码:
  
<body>
  
          <form action="upload.action" method="post" enctype="multipart/form-data">
             <input type="file" name="photo">
             <input type="submit" value="上传">
             
          </form>
  
  
  </body>


  1.2、 struts.xml中的代码:
  
<package name="mypackage" extends="struts-default">
	     
	        <action name="upload" class="cn.zhuojingxinxi.web.UploadAction">
	            <interceptor-ref name="fileUpload"></interceptor-ref>
	            <interceptor-ref name="defaultStack"></interceptor-ref>
	                     <result name="success">/success.jsp</result>
	                     <result name="input">/error.jsp</result>
	        </action>
	  
	     </package>


   1.3、 action中的代码:
   
package cn.zhuojingxinxi.web;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport{
	private File  photo;
	private String photoFileName;
	private String photoContentType;

	public File getPhoto() {
		return photo;
	}
	public void setPhoto(File photo) {
		this.photo = photo;
	}

	public String getPhotoFileName() {
		return photoFileName;
	}

	public void setPhotoFileName(String photoFileName) {
		this.photoFileName = photoFileName;
	}
	public String getPhotoContentType() {
		return photoContentType;
	}

	public void setPhotoContentType(String photoContentType) {
		this.photoContentType = photoContentType;
	}


	public String execute(){
//		System.out.println(photo.length());
//		System.out.println(photoFileName);
//		System.out.println(photoContentType);
		String path=ServletActionContext.getServletContext().getRealPath("/");
		  try {
			FileInputStream fis=new FileInputStream(photo);
			
			FileOutputStream fos=new FileOutputStream(path+photoFileName);
			
		    	byte[] b=new byte[512];
		    	int length=-1;
			  try {
				while((length=fis.read(b))!=-1){
					  
					fos.write(b, 0, length);
					  
					fos.flush();
				  }
				fos.close();
				fis.close();
			} catch (IOException e) {
				  
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
	
			e.printStackTrace();
		}
		
		
		return null;
		
	}

}



    2、类型转换
     2.1编写转换器,方式一继承DefaultTypeConverter(代码如下)
      
package cn.zhuojingxinxi.util;

import java.util.Map;

import cn.zhuojingxinxi.entity.Point;

import ognl.DefaultTypeConverter;

public class PointConvert extends DefaultTypeConverter{

	@Override
	public Object convertValue(Map context, Object value, Class toType) {
	
		
		if(toType==Point.class){
		    System.out.println("转入");
			  String[] str=(String[])value;
		      String[] s=str[0].split(",");
		      Point point=new Point();
		      point.setPointX(Integer.parseInt(s[0]));
		      point.setPointY(Integer.parseInt(s[1]));
			  return  point;
			
		}else{
			System.out.println("转出");
			Point p=(Point)value;
			 StringBuilder sb=new StringBuilder();
			 sb.append(p.getPointX()+","+p.getPointY());
			 return sb.toString();
			
		}
	
	}

}

       2.2、方式二继承StrutsTypeConverter(代码如下)
      
package cn.zhuojingxinxi.util;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import cn.zhuojingxinxi.entity.Point;

import ognl.DefaultTypeConverter;

public class PointConvert2 extends StrutsTypeConverter{

	
	@Override
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
		
		  String[] str=arg1;
	      String [] s=	str[0].split(",");
	      Point point=new Point();
	      point.setPointX(Integer.parseInt(s[0]));
	      point.setPointY(Integer.parseInt(s[1]));
		  return  point;
		
	}

	@Override
	public String convertToString(Map arg0, Object arg1) {
		 Point p=(Point)arg1;
		 StringBuilder sb=new StringBuilder();
		 sb.append(p.getPointX()+","+p.getPointY());
		 return sb.toString();
		
	}

}



    2.3、struts.xml中action节点的配置信息(代码如下)
      
 <action name="convert" class="cn.zhuojingxinxi.web.ConvertAction">
	          <result name="success">/success.jsp</result>
	          <result name="input">/error.jsp</result>
	        </action>


   2.4、action中的代码如下:
     
package cn.zhuojingxinxi.web;

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

import org.apache.struts2.ServletActionContext;

import cn.zhuojingxinxi.entity.Point;

import com.opensymphony.xwork2.ActionSupport;

public class ConvertAction extends ActionSupport{
	
	private Point point=null;
	


	public Point getPoint() {
		return point;
	}



	public void setPoint(Point point) {
		this.point = point;
	}



	public String execute(){
		
		System.out.println(point.getPointX()+"==========="+point.getPointY());
		return "success";
		
	}

}


    
  值得注意的是:
   
     1、文件上传的时候配置 <param name="allowedTypes">text/plain,image/jpeg,image/bmp</param>可以选择默认允许上传的文件类型。
       2、错误页面必须配置 <s:fielderror></s:fielderror>才能显示错误信息


   源码下载请点这里:

 
分享到:
评论

相关推荐

    struts2从零开始(一)

    NULL 博文链接:https://1136051009.iteye.com/blog/1768000

    struts2从零开始(六)

    Struts2从零开始系列教程旨在帮助初学者深入理解并掌握Struts2框架的应用与开发。在第六部分中,我们将探讨Struts2的核心概念、工作原理以及如何在实际项目中运用它。Struts2是一个流行的Java Web应用框架,用于构建...

    struts2从零开始(七)

    本教程将带你从零开始学习Struts2,通过第七个部分的内容,我们将深入理解其核心概念和实际应用。 首先,让我们探讨Struts2的基础知识。Struts2是Apache软件基金会的产品,它是基于Struts1的升级版,引入了更多现代...

    struts2从零开始(三)

    在"Struts2从零开始(三)"这个主题中,我们将会深入探讨Struts2的核心概念和实际应用,逐步了解如何使用Struts2来构建一个Web应用程序。 1. **MVC设计模式**:Struts2遵循Model-View-Controller(MVC)设计模式,...

    struts2从零开始(二)

    在“Struts2从零开始(二)”这个主题中,我们将会深入探讨Struts2的核心概念和实践操作,以帮助初学者更好地理解和掌握这个框架。 首先,Struts2的核心在于它的Action类,它是业务逻辑处理的主要组件。Action类...

    struts2从零开始(五)

    本篇文章将从零开始,逐步介绍如何使用Struts2进行开发,带你走进Struts2的世界。 首先,让我们理解Struts2的核心概念。Struts2是一个轻量级、可扩展的MVC框架,它继承了Struts1的优点并解决了其不足,如性能问题和...

    Struts 从零开始

    这个"Struts 从零开始"的压缩包显然是为初学者提供的一套学习资源,包含了六个基础练习工程,帮助理解并实践 Struts 框架的关键概念和功能。 首先,让我们深入了解一下 Struts 框架的核心组件和原理: 1. **控制器...

    简述STRUTS2_Convention零配置

    从Struts2.1版本开始,推荐使用Convention插件替代Codebehind插件,因为它更加自动化,几乎无需手动配置。 Convention插件的工作原理是基于“约定优于配置”(Convention over Configuration)的原则,它会自动识别...

    struts2零配置个人整理文档

    ### Struts2零配置个人整理文档 #### 一、Convention插件详解 ##### 1. 设置结果页面路径 - **背景介绍**:Struts2框架提供了便捷的方式来处理Web请求,并返回响应视图。为了简化配置过程,Struts2提供了一个名为...

    如何使用struts2的零配置插件convention

    从Struts2.1版本开始,`Codebehind`插件被`Convetion`插件取代,以提供更全面的零配置支持。`Convetion`插件通过自动扫描和推理应用程序中的类和方法来配置Action和结果映射,不需要开发者显式地在`struts.xml`或...

    struts2资源包

    使用这个“struts2资源包”,开发者可以快速搭建一个基于Struts2的Web应用,无需从零开始配置所有的依赖。通过导入这些库,你可以实现动作类的定义、拦截器的设置、结果页面的跳转、表单验证、国际化、文件上传下载...

    从零开始创建基于struts1.2 + Hibernate3.0的Web工程

    2. 例子工程说明..........................................................3 3. 建立工程..............................................................4 3.1. 创建新的Web Project ..........................

    使用Struts2和jQuery EasyUI实现简单CRUD系统

    在本文中,我们将探讨如何使用Struts2和jQuery EasyUI框架创建一个简单的CRUD(创建、读取、更新、删除)系统。首先,我们需要理解这两个技术的基础概念。 Struts2是一个基于MVC(Model-View-Controller)架构的...

    struts2零配置入门代码

    在“struts2零配置入门代码”这个主题中,我们将深入探讨如何在不编写大量XML配置文件的情况下,启动并运行一个基本的Struts2应用程序。 Struts2的核心在于它的Action类,它是业务逻辑处理的主要组件。在“零配置”...

    Struts2权威指南完整版

    12. **实战案例**:通过实际项目示例,展示如何从零开始构建一个完整的Struts2应用,涵盖需求分析、设计、编码和测试的全过程。 通过阅读《Struts2权威指南》,开发者不仅可以掌握Struts2框架的使用,还能深入理解...

    struts2参考文档(word版)

    最后,文档可能包含了一些实战示例,引导读者从零开始搭建一个完整的Struts2项目,通过实际操作加深对理论知识的理解。 总的来说,这份Struts2参考文档全面覆盖了Struts2框架的主要概念和技术,对于想要学习或已经...

    轻松入门之struts2 3.0版

    10. **实战项目**:通过一个实际的小型项目,展示如何从零开始搭建一个基于Struts2 3.0的应用,涵盖了上述所有知识点的综合运用。 通过阅读“轻松入门之Struts2 3.0版”,开发者不仅能掌握Struts2的基本用法,还能...

    ajax与Struts2交互实例

    使用Struts2和jQuery EasyUI实现简单CRUD系统,从零开始,从基础的ajax与Struts2的交互开始。

Global site tag (gtag.js) - Google Analytics