struts2获取工程根目录

最近学习struts2的文件上传和下载,由于书中的方法ServletActionContext.getRequest().getRealPath("/")已经过时,所以寻找了其它获取工程根目录方法。

在尝试过程中曾试过使用相对路径方法,结果相对路径为eclipse的根目录,所以此方法行不通。

由于工程路径封装在了Servlet的ServletContext中,我们可以在Action中直接访问Servlet API进行操作:struts2提供的Actioncontext不能直接访问servlet API实例,所以为了直接访问servlet API,struts2提供了如下三个接口:

1. SerlvetContextAware:实现接口的Action可以访问web应用的ServletContext实例。

2. ServletRequestAware:实现接口的Action可以访问用户请求的HttpServletRequest实例。

3. ServletResponseAware: 实现接口的Action可以访问服务器响应的HttpServletResponse实例。

获取路径需要让Action实现SerlvetContextAware接口,Action代码如下:

package org.struts2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.servlet.ServletContext;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionContext;

public class FileUpLoadAction implements ServletContextAware{
	private String title;
	private File uploadFile;
	private ServletContext servletcontext;

	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public File getUploadFile() {
		return uploadFile;
	}
	public void setUploadFile(File uploadFile) {
		this.uploadFile = uploadFile;
	}

    private String getPath(){
        return servletcontext.getRealPath("files");
    }
    
    public String execute() throws Exception {
    	String name = getTitle();
    	String path = getPath() + "\\" + getTitle();
    	FileOutputStream fos = new FileOutputStream(path);
    	FileInputStream fis = new FileInputStream(getUploadFile());
    	byte[] buffer = new byte[1024];
    	int len;
    	while( (len = fis.read(buffer)) > 0){
    		fos.write(buffer, 0, len);
    	}
    	ActionContext.getContext().put("path", path);
    	return "success";
    
    }
	@Override
	public void setServletContext(ServletContext arg0) {
		this.servletcontext = arg0;

	}

}

serlvetcontext.getRealPath("files")为获取根目录下files文件夹的路径,files文件夹必须存在,可以在action中判断是否存在该文件夹,若不存在则创建该文件夹。此函数获取的路径后不带"\\"。

若获取跟目录则将files换成"/"即可。

时间: 2024-07-28 20:21:51

struts2获取工程根目录的相关文章

ASP.NET获取工程根目录的方法集合

1.取得控制台应用程序的根目录方法     方法1.Environment.CurrentDirectory //取得或设置当前工作目录的完整限定路径     方法2.AppDomain.CurrentDomain.BaseDirectory //获取基目录,它由程序集冲突解决程序用来探测程序集2.取得Web应用程序的根目录方法 方法1.HttpRuntime.AppDomainAppPath.ToString(); //获取承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径.用于A

Java获取工程目录

背景:程序执行时,会涉及到去读取配置文件等操作,那就需要了解怎么获得文件路径 Java目录映射关系 说明一点:在Java代码执行时,会将编译生成的classes文件,以及配置文件等信息生成到target目录下.最终执行的文件实际是target下的class文件 以上图的例子为例: 工程名:zzappqa 工程所在目录:/opt/script/zzappqa 生成的target目录:target 下面是一个工程文件到生成的target目录的一个映射关系 zzappqa工程下的文件target下的文

js获取网站根目录

<script type="text/javascript"> function getRootPath() { var strFullPath = window.document.location.href; var strPath = window.document.location.pathname; var pos = strFullPath.indexOf(strPath); var prePath = strFullPath.substring(0, pos);

如何在servlet刚启动时候获取服务器根目录?

public class InitServlet extends HttpServlet{ public static String root; @Override public void init() throws ServletException { root = getServletContext().getRealPath("/"); } 如何在servlet刚启动时候获取服务器根目录?,布布扣,bubuko.com

Struts2 获取项目相关路径

Struts2 获取项目路径 package actions.app; import java.io.File; import org.apache.struts2.ServletActionContext; public class GetImagesPathAction { public String execute(){ String bathPath=System.getProperty("user.dir"); System.out.println(bathPath); //

struts2获取服务器临时目录

CreateTime--2017年9月7日08:57:39 Author:Marydon struts2获取服务器(tomcat.WebLogic)的临时目录 需要导入: import java.io.File; import org.apache.struts2.ServletActionContext; 方法封装 // 指定服务器的用于临时存储的目录 public static final String TEMP_DIR_CONTEXT_ATTRIBUTE = "javax.servlet.

struts2入门之struts2获取表单数据

在上一篇博文中分享了action如何获取表单数据,在本篇博文中分享一下用struts2这个框架如何来获取表单数据. struts2获取表单数据可以分为三种方式: 1.属性封装 2.模型驱动封装 3.表达式封装 分别介绍以上三种方式: 属性封装的步骤:首先在action中定义成员变量,并写set方法(这里为了避免和后面的混淆,把get和set方法都写上得了),然后该action要访问的form表单中的属性值要和定义的成员变量名称一样,在action访问到jsp页面时,form表单中的数据都已经拿到

解决javaassist 出现的类没找到异常ClassNotFoundException,获取工程下任意class对象

项目中要对工程下任意class文件进行解析,但是使用javaassist中经常出现类没找到异常.当然最主要的还是ClassPool()没找到这东西,而搜索范围是整个项目的class, 所以就做了一个处理,通过,项目下的classpath这个文件,获取所有jar路径在,再通过文件递归搜索获取所有java编译后的class文件路径,将所有路径都添加到对象池中.当然这一步是很费时的,所以最好只初始化一次. /*** * * 静态存储 */ private static ClassPool pool;

PHP中如何获取网站根目录物理路径

在php程序开发中经常需要获取当前网站的目录,我们可以通过常量定义获取站点根目录物理路径,方便在程序中使用. 下面介绍几种常用的获取网站根目录的方法. php获取网站根目录方法一: <?php define("WWWROOT",str_ireplace(str_replace("/","\\",$_SERVER['PHP_SELF']),'',__FILE__)."\\"); echo WWWROOT ; ?> p