码迷,mamicode.com
首页 > 其他好文 > 详细

SSH系列:(13)抽取BaseAction

时间:2016-08-11 22:56:01      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:ssh


action中继承了ActionSupport和其它一些公共属性,如selectedRow等;可能以后还会产生更多公共的内容,所以应该把这些共有的抽取出来,放入到一个基本action中,我们命名为BaseAction,让它去继承ActionSupport和其它公共属性,其它的action只要继承它就可以了。


BaseAction.java

package com.rk.core.action;

import com.opensymphony.xwork2.ActionSupport;

public abstract class BaseAction extends ActionSupport {
	protected String[] selectedRow;	
	public String[] getSelectedRow() {
		return selectedRow;
	}
	public void setSelectedRow(String[] selectedRow) {
		this.selectedRow = selectedRow;
	}
}


注意:String[] selectedRow使用protected修饰符,因为它要在子类中能够访问到



UserAction.java

package com.rk.tax.action;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opensymphony.xwork2.ActionSupport;
import com.rk.core.action.BaseAction;
import com.rk.tax.entity.User;
import com.rk.tax.service.UserService;

public class UserAction extends BaseAction {
	/***** 1、业务数据 *****/
	private List<User> userList;	//用于显示用户列表
	private User user;				//用于添加、修改和删除单个用户
	
	
	//用户头像
	private File headImg;
	private String headImgContentType;
	private String headImgFileName;

	//导入Excel
	private File userExcel;
	private String userExcelContentType;
	private String userExcelFileName;

	/***** 2、业务实现类 *****/
	private UserService userService;
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	
	/***** 3、页面响应操作 *****/
	//列表页面
	public String listUI()
	{
		userList = userService.findAll();
		return "listUI";
	}
	//跳转到新增页面
	public String addUI()
	{
		return "addUI";
	}
	//保存新增
	public String add()
	{
		try {
			if(user != null)
			{
				if(headImg != null)
				{
					//1、保存头像到upload/user
					String filePath = ServletActionContext.getServletContext().getRealPath("upload/user/");
					String fileName = UUID.randomUUID().toString().replaceAll("-", "") + headImgFileName.substring(headImgFileName.lastIndexOf("."));

					FileUtils.copyFile(headImg, new File(filePath,fileName));
					//2、设置用户头像路径
					user.setHeadImg("user/" + fileName); 
				}
				userService.save(user);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "list";
	}
	
	//跳转到编辑页面
	public String editUI()
	{
		if(user != null && user.getId() != null)
		{
			user = userService.findById(user.getId());
		}
		return "editUI";
	}
	
	//保存编辑
	public String edit()
	{
		try {
			if(user != null)
			{
				if(headImg != null)
				{
					//1、保存头像到upload/user
					String filePath = ServletActionContext.getServletContext().getRealPath("upload/user/");
					String fileName = UUID.randomUUID().toString().replaceAll("-", "") + headImgFileName.substring(headImgFileName.lastIndexOf("."));

					FileUtils.copyFile(headImg, new File(filePath,fileName));
					//2、设置用户头像路径
					user.setHeadImg("user/" + fileName); 
				}
				userService.update(user);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "list";
	}
	
	//删除
	public String delete()
	{
		if(user != null && user.getId() != null)
		{
			userService.delete(user.getId());
		}
		return "list";
	}
	
	//批量删除
	public String deleteSelected()
	{
		if(selectedRow != null)
		{
			for(String id : selectedRow)
			{
				userService.delete(id);
			}
		}
		return "list";
	}
	
	private String encodeFilename(final String filename)
	{
	  try{        
	    URI uri = new URI(null, null, filename, null);      
	    String encodedName = uri.toASCIIString(); 
	    return encodedName;
	  }
	  catch(URISyntaxException ex){
	      return filename;
	  }
	}
	
	////导出用户列表
	public void exportExcel()
	{
		try {
			//1、查找用户列表
			userList = userService.findAll();
			//2、导出
			HttpServletRequest request = ServletActionContext.getRequest();
			String userAgent = request.getHeader("user-agent");
			System.out.println(userAgent);
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentType("application/octet-stream");
//			response.setHeader("Content-Disposition", "attachment;filename=" + new String("用户列表.xls".getBytes(),"ISO-8859-1"));
//			String fileName = URLEncoder.encode("用户列表.xls", "UTF-8");
//			response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
//			String fileName = URLEncoder.encode("用户列表.xls", "UTF-8");
//			response.setHeader("Content-Disposition", "attachment;filename*=\"UTF8‘‘" +  fileName + "\"");
//			System.out.println("attachment;filename*=\"UTF8‘‘" +  fileName + "\"");
			
			String fileName = encodeFilename("用户列表.xls");
			response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
//			String fileName = URLEncoder.encode("用户列表.xls", "UTF-8");
//			response.setHeader("Content-Disposition", "attachment;filename="+new String("中国.xls".getBytes(),"ISO-8859-1")+";filename*=UTF8‘‘" +  fileName);
			ServletOutputStream outputStream = response.getOutputStream();
			userService.exportExcel(userList,outputStream);
			if(outputStream != null){
				outputStream.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	//导入用户列表
	public String importExcel(){
		//1、获取文件,并判断是否为excel文件
		if(userExcel != null && userExcelFileName.matches("^.+\\.(?i)((xls)|(xlsx))$")){
			//2、导入
			userService.importExcel(userExcel,userExcelFileName);
		}
		return "list";
	}
	
	public void verifyAccount(){
		
		try {
			//1、获取账号
			if(user != null && StringUtils.isNotBlank(user.getAccount())){
				//2、根据帐号到数据库校验是否存在该帐号对应的用户
				List<User> list = userService.findUserByAccountAndId(user.getId(),user.getAccount());
				String strResult = "true";
				if(list != null && list.size()>0){
					//说明该帐号已经存在
					strResult = "false";
				}
				
				//输出
				HttpServletResponse response = ServletActionContext.getResponse();
				response.setContentType("text/plain");
				ServletOutputStream outputStream = response.getOutputStream();
				outputStream.write(strResult.getBytes());
				outputStream.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	// {{ Properties
	public List<User> getUserList() {
		return userList;
	}
	public void setUserList(List<User> userList) {
		this.userList = userList;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}

	public File getHeadImg() {
		return headImg;
	}

	public void setHeadImg(File headImg) {
		this.headImg = headImg;
	}

	public String getHeadImgContentType() {
		return headImgContentType;
	}

	public void setHeadImgContentType(String headImgContentType) {
		this.headImgContentType = headImgContentType;
	}

	public String getHeadImgFileName() {
		return headImgFileName;
	}

	public void setHeadImgFileName(String headImgFileName) {
		this.headImgFileName = headImgFileName;
	}

	public File getUserExcel() {
		return userExcel;
	}

	public void setUserExcel(File userExcel) {
		this.userExcel = userExcel;
	}

	public String getUserExcelContentType() {
		return userExcelContentType;
	}

	public void setUserExcelContentType(String userExcelContentType) {
		this.userExcelContentType = userExcelContentType;
	}

	public String getUserExcelFileName() {
		return userExcelFileName;
	}

	public void setUserExcelFileName(String userExcelFileName) {
		this.userExcelFileName = userExcelFileName;
	}
	
	// }}
}





SSH系列:(13)抽取BaseAction

标签:ssh

原文地址:http://lsieun.blog.51cto.com/9210464/1837067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!