首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2从零开始(4)

2013-01-22 
struts2从零开始(四)知识点:1、文件上传2、类型转换1、文件上传:1.1、 jsp页面代码:bodyform actionuploa

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" name="code">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{@Overridepublic 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{@Overridepublic 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;}@Overridepublic 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" name="code">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>才能显示错误信息


   源码下载请点这里:

 

热点排行