解决硬编码的上传文件的方式及配置文件传值、url传值的中文乱码

来源:互联网 发布:c递归算法经典实例 编辑:程序博客网 时间:2024/06/03 13:13

配置文件:

<action name="download3" class="action.FileDownLoadAction3"><!-- <param name="inputPath">/upload/struts2中文.txt</param>   这里有中文,在action中getter方法 中,需要转成iso-8859-1      --><result name="success" type="stream"><param name="contentType">${contentType}</param><param name="inputName">targetFile</param><param name="contentDisposition">attachment;filename="${fileName}"</param><param name="buffersize">4096</param></result><result name="login">/loginForm.jsp</result></action>

action:

package action;import java.io.InputStream;import java.io.UnsupportedEncodingException;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class FileDownLoadAction3 extends ActionSupport {    private String fileName;    private String inputPath="/upload/";    public String getFileName() throws UnsupportedEncodingException {//解决配置文件有中文的乱码return new String(fileName.getBytes(),"ISO-8859-1");}public void setFileName(String fileName) {try {//解决url中有中文的乱码fileName=new String(fileName.getBytes("ISO-8859-1"),"GBK");} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}this.fileName = fileName;}    public InputStream getTargetFile() throws Exception{inputPath+=fileName;return ServletActionContext.getServletContext().getResourceAsStream(inputPath);}@Overridepublic String execute() throws Exception {// TODO Auto-generated method stubActionContext ctx=ActionContext.getContext();String user=(String)ctx.getSession().get("user");if(user!=null&&user.equals("dxl")){   return SUCCESS;   }this.addActionError("登录后方可允许下载文件");return LOGIN;}    }



0 0