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;
- }
- }
struts2 一个简洁的struts.xml的更多相关文章
- Struts2系列笔记(2)---Struts.XML
Struts2.xml 本篇博客主要讲Struts2.xml中package下的标签和标签属性,主要分以下四个部分说明: (1)action的配置基本属性 (2)同一个Action类中不同方法满足不同 ...
- struts2简单入门-配置文件-struts.xml
struts.xml 作用:配置struts中的action,result,package,全局action,result,等等. 基本文件格式: <?xml version="1.0 ...
- struts2核心配置之struts.xml
struts.xml -常量配置 -包配置 -包含配置 一.常量配置 struts2常量的配置通常采用三种方式: 1.在struts.xml中使用<constant>元素配置常量 < ...
- struts2 从一个action跳转到另一个action的struts.xml文件的配置
解释: 想要用<result>跳转到另一个action,原来的配置代码是: <action name="insertDept" class="strut ...
- struts2:struts.xml配置文件详解
1. 几个重要的元素 1.1 package元素 package元素用来配置包.在Struts2框架中,包是一个独立的单位,通过name属性来唯一标识包.还可以通过extends属性让一个包继承另一个 ...
- Struts2初学 struts.xml详解 一
一.简介 Struts 2是一个MVC框架,以WebWork设计思想为核心,吸收了Struts 1的部分优点 二.详解 首先让我们看一下一个简单的struts.xml文件的结构 < ...
- Struts.xml讲解
解决在断网环境下,配置文件无提示的问题我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为” http://struts.apache.org/d ...
- Struts2的一个问题: 找不到struts.xml的路径问题
一. 最近在学习Struts2的一些知识,在使用Struts2搭建框架的时候,部署到服务器上的时候出现上面的问题: 三月 19, 2016 1:43:24 下午 org.apache.tomcat.u ...
- struts2学习笔记--struts.xml配置文件详解
这一节主要讲解struts2里面的struts.xml的常用标签及作用: 解决乱码问题 <constant name="struts.i18n.encoding" value ...
随机推荐
- C#构架之基础学习----动态添加窗体和 控件
仿照窗体应用程序编写: 任务一:生成一个Form类的窗体对象frm using System.Windows.Forms; //using指令使用Form对象创建所需的命名空间 //如 ...
- ASP.NET MVC 5 学习教程:数据迁移之添加字段
原文 ASP.NET MVC 5 学习教程:数据迁移之添加字段 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符 ...
- lucene 索引查看工具
luke 是 lucene 索引查看工具,基于 swing 开发的,是 lucene.solr.nutch 开发过程中不可或缺的工具.在测试搜索过程,进程出现搜不到东西或者搜到的东西不是想要的结果时, ...
- Computer Transformation(规律,大数打表)
Computer Transformation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- 【转】CentOS6.5 增加一个SFTP上传的用户
原文链接地址:http://www.msits.com/archives/4477.html #创建sftp组groupadd sftp#创建一个用户zjhpuseradd -g sftp -s /b ...
- Python之路day4
坚持就是胜利.今天零下14度,从教室出来的路上真的很冷很冷,希望这个冬天自己不会白过,春暖花开的时候一定要给世界一个更好的自己. 原本以为day3的作业自己做得挺好的,没想到只得了B+.必须要加油了, ...
- 32位程序在64位系统上获取系统安装时间(要使用KEY_WOW64_64KEY标记)
众所周知,取系统的安装时间可取注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的子项InstallDate,此值是个 ...
- InputStream中read()与read(byte[] b)
原文:InputStream中read()与read(byte[] b) read()与read(byte[] b)这两个方法在抽象类InputStream中前者是作为抽象方法存在的,后者不是,JDK ...
- Git命令非主流札记
使用git做开发的版本管理也有一年半之多了,但是始终都是常用的branch commit status diff push等一些再常用不过的命令,最近闲下来,打算学习一下高端用法,所以就静下心来好好读 ...
- oracle 11gR2 在VM中安装步骤
oacle的安装 一.在oracle官网可以免费下载oracle的软件和安装文档,如果是在虚拟机中的linux系统里安装,可以用FileZilla Client把软件发送到系统中. linux_11g ...