zoukankan      html  css  js  c++  java
  • struts2 一个简洁的struts.xml

    struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    	<constant name="struts.ui.theme" value="simple"></constant>
    
    	<package name="rx" extends="struts-default" namespace="/*">
    		<action name="*_*" class="{1}Action" method="{2}">
    			<result name="success">${successResultValue}</result>
    			<result name="redirect" type="redirectAction" >${redirectResultValue}</result>
    		</action>
    	</package>
    </struts>    
    

    BaseAction.java

    package com.yl.action;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    
    public class BaseAction extends ActionSupport {
    
    	/**
    	 * 序列化ID
    	 */
    	private static final long serialVersionUID = 1L;
    
    	protected String successResultValue;
    
    	public String getSuccessResultValue() {
    		return successResultValue;
    	}
    
    	public void setSuccessResultValue(String successResultValue) {
    		this.successResultValue = successResultValue;
    	}
    
    	protected String redirectResultValue;
    
    	public String getRedirectResultValue() {
    		return redirectResultValue;
    	}
    
    	public void setRedirectResultValue(String redirectResultValue) {
    		this.redirectResultValue = redirectResultValue;
    	}
    
    	protected String chainResultValue;
    
    	public String getChainResultValue() {
    		return chainResultValue;
    	}
    
    	public void setChainResultValue(String chainResultValue) {
    		this.chainResultValue = chainResultValue;
    	}
    
    	/**
    	 * 返回request对象
    	 * 
    	 * @return
    	 */
    	protected HttpServletRequest getRequest() {
    		return ServletActionContext.getRequest();
    	}
    
    	/**
    	 * 返回response对象
    	 * 
    	 * @return
    	 */
    	protected HttpServletResponse getResponse() {
    		return ServletActionContext.getResponse();
    	}
    
    	/**
    	 * 返回session对象
    	 * 
    	 * @return
    	 */
    	protected HttpSession getSession() {
    		return getRequest().getSession();
    	}
    }
    

    一个样例action:

    package com.yl.action;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.annotation.Resource;
    
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    
    import com.yl.biz.ImgBiz;
    import com.yl.config.SysConfig;
    import com.yl.cons.UploadResult;
    import com.yl.entity.Img;
    import com.yl.util.CipherUtil;
    
    @Component("imgAction")
    @Scope("prototype")
    /**
     * 图片Action
     */
    public class ImgAction extends BaseAction {
    
    	/**
    	 * 序列化ID
    	 */
    	private static final long serialVersionUID = 1L;
    
    	/**
    	 * 路径
    	 */
    	private File upload;
    
    	public File getUpload() {
    		return upload;
    	}
    
    	public void setUpload(File upload) {
    		this.upload = upload;
    	}
    
    	/**
    	 * 图片实体
    	 */
    	private Img img;
    
    	public Img getImg() {
    		return img;
    	}
    
    	public void setImg(Img img) {
    		this.img = img;
    	}
    
    	/**
    	 * 注入
    	 */
    	@SuppressWarnings("unused")
    	@Resource(name = "imgBiz")
    	private ImgBiz imgBiz;
    
    	/**
    	 * 图片上传
    	 * 
    	 * @return
    	 */
    	@SuppressWarnings("deprecation")
    	public String uploadFile() {
    		@SuppressWarnings("unused")
    		String paths = getRequest().getRealPath("/");
    		// 推断路径是否为空
    		if (this.upload == null || !this.upload.isFile()
    				|| !this.upload.canRead()) {
    			this.addActionError(UploadResult.NULLFILE.getTitle());
    			return SUCCESS;
    		}
    		try {
    			FileInputStream fis = new FileInputStream(this.upload);
    			// 获得图片大小
    			int fileSize = fis.available();
    			// 推断图片大小
    			if (fileSize > SysConfig.MAX_FILE_SIZE) {
    				this.addActionError(UploadResult.TooLargeFile.getTitle());
    			} else {
    				// 保存路径
    				String path = SysConfig.PUBLIC_PATH;
    				// 获取图片名字
    				String fileName = this.upload.getName();
    				// 推断是否有点
    				if (!fileName.contains(".")) {
    					this.addActionError(UploadResult.NOTIMG.getTitle());
    				}
    				// 截取文件类型
    				fileName = fileName.substring(fileName.lastIndexOf("."));
    				SimpleDateFormat sdf = new SimpleDateFormat(
    						"yyyy-MM-dd HH:mm:ss aa");
    				// 从新给图片命名
    				fileName = CipherUtil.md5Encoding(sdf.format(new Date()))
    						+ fileName;
    				// 保存图片路径+图片名字
    				fileName = path + "\" + fileName;
    				// New一个新的地址.
    				File file = new File(fileName);
    				// 输出图片到新的地址
    				FileOutputStream fos = new FileOutputStream(file);
    				int c;
    				byte b[] = new byte[4 * 1024];
    				while ((c = fis.read(b)) != -1) {
    					fos.write(b, 0, c);
    				}
    				// 关闭相关操作
    				fos.flush();
    				fis.close();
    				// 保存成功信息
    				this.addActionError(UploadResult.SUCCESS.getTitle());
    			}
    		} catch (FileNotFoundException e) {
    			// 保存失败信息
    			this.addActionError(UploadResult.NULLFILE.getTitle());
    			e.printStackTrace();
    		} catch (IOException e) {
    			// 保存失败信息
    			this.addActionError(UploadResult.UPLOADFAIL.getTitle());
    			e.printStackTrace();
    		}
    		// 设置返回页面
    		setSuccessResultValue("/index.jsp");
    		return SUCCESS;
    
    	}
    
    }
    

    常量:

    package com.yl.config;
    
    
    import org.apache.struts2.ServletActionContext;
    import org.springframework.beans.factory.InitializingBean;
    
    /**
     * 图片系统类
     * 
     */
    public class SysConfig implements InitializingBean {
    
    	public static Boolean IS_DEBUG = true;
    	
    
    	/**
    	 * 上传图片大小控制
    	 */
    	public static int MAX_FILE_SIZE = 1024 * 1024 * 100;
    
    	/**
    	 * 上传图片路径控制
    	 */
    	
    	@SuppressWarnings("deprecation")
    	public static String PUBLIC_PATH = ServletActionContext.getRequest().getRealPath("/") + "upload";
    
    	private SysConfig() {
    	}
    
    	public static boolean isDebug() {
    		return IS_DEBUG != null && IS_DEBUG;
    	}
    
    	public void setIS_DEBUG(Boolean iS_DEBUG) {
    		IS_DEBUG = iS_DEBUG;
    	}
    
    	public void afterPropertiesSet() throws Exception {
    	}
    }
    

    一个错误的结果enum封装,使用见action:

    package com.yl.cons;
    
    /**
     * 上传返回标志
     * 
     */
    public enum UploadResult {
    	SUCCESS((short) 0, "成功"), NULLFILE((short) 1, "找不到文件"), NOTIMG((short) 2,
    			"非图片文件"), UPLOADFAIL((short) 3, "上传失败"), TooLargeFile((short) 4,
    			"文件过大");
    	/**
    	 * 错误类型
    	 */
    	private short type;
    
    	/**
    	 * 错误名称
    	 */
    	private String title;
    
    	private UploadResult(short type, String title) {
    		this.type = type;
    		this.title = title;
    	}
    
    	public short getType() {
    		return type;
    	}
    
    	public String getTitle() {
    		return title;
    	}
    
    }
    


  • 相关阅读:
    侧边工具栏
    proguard 使用说明
    人员组成
    google play
    大数据平台相关
    HttpClient
    库克
    html5 开发 android 注意点
    htm5 动画制作 工具
    JAVA取得WEBROOT物理路径
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4024501.html
Copyright © 2011-2022 走看看