2015-11-18 23:42:09 u014492098 阅读数 9593

1.需要创建一个servlet继承ServletContextListener监听器

2.web.xml配置监听器,

<listener>
<listener-class>com.stee.configurationmanagement.init.TestWebPath</listener-class>
</listener>

3.如果需要servlet在web容器启动的时候就实例化,可以配置<load-on-startup>1</load-on-startup>,大于0.

4.监听器在servlet实例化的时候会调用contextInitialized(ServletContextEvent servletContextEvent)方法,然后在这个方法中使用这个方法的参数即可获取webapp路径

String webRootPath = servletContextEvent.getServletContext()
		        .getRealPath("/");
		 System.out.println(webRootPath);
		if (webRootPath == null) {
		    try {
		        webRootPath = servletContextEvent.getServletContext()
		                .getResource("/").getFile();
		        System.out.println(webRootPath);
		    } catch (MalformedURLException e) {
		        LoggerUtil.logger.info(("获取WEBROOT失败!"));
		    }
		}

2015-04-14 23:14:00 weixin_30588907 阅读数 19

1. 如果是Servlet, Action, Controller, 或者 Filter, Listener, 拦截器等相关类时,我们只需要获得 ServletContext,然后通过request.getSession().getServletContext.getRealPath("/")来获取当前应用在服务器上的物理地址;

2.通过配置文件:

在web.xml中的<web-app>节点内加入:

<context-param>
<param-name>webAppRootKey</param-name>
<param-value>plantree.root</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
</listener>

然后在普通的Java类中(不是action中),就可以通过System.getProperty("plantree.root")获取了web根目录了。

转载于:https://www.cnblogs.com/focusahaha/p/4427280.html

2013-12-25 17:27:49 sd4015700 阅读数 715
1. 配置web.xml
添加如下:
<servlet>
        <servlet-name>ServletInit</servlet-name>
        <servlet-class>xx.xx.xx.xx.ServletInit</servlet-class>
        <!--
            定义初始化参数
            在ServletInit使用String debug = getServletConfig().getInitParameter("debug");获取
        -->
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <!--
            关键:设置该servlet随webapp启动
            2代表毫秒,即webapp启动2毫秒后启动此servlet
        -->         
        <load-on-startup>2</load-on-startup>
</servlet>

2.
public class ServletInit extends HttpServlet {
    public void init(ServletConfig config) throws ServletException {
       // 使用config.getInitParameter(param-name)获取初始化参数
       // 初始化
    }

    public void destroy() {
       // 做一些webapp退出时的工作
    }
}

在初始化读取配置文件时还遇到一个问题,init函数会调用其他类的方法,当程序执行到其他类的方法
时,找不到当前目录下的配置文件,后来才发现servlet在随tomcat启动后,当前路径已经变成了tomcat
安装目录的bin了,所以找不到配置文件了,后来经人指点只要在init函数里加入:
       ServletContext>        // 获取当前绝对路径
       String> 这样一来,rootPath是tomcat部署此webapp的路径,假设tomcat安装目录记为$TOMCAT,其目录结果如下:
$TOMCAT
    bin/
    common/
    conf/
    其他目录/
    webapps/
       myOwnApp/
          conf/
          WEB-INF/
          其他/
那么rootPath为"$TOMCAT/webapps/myOwnApp/",这样不管此app部署到哪里都能找到此目录下的conf配置文件。

对于jsp也有一个类似的函数:String root_path = application.getRealPath("/");
2012-05-15 17:27:07 xuhaihua1990 阅读数 1181

    //取得webapp上下文对象   

   org.directwebremoting.WebContext web= WebContextFactory.get();   

   //得到servlet中的request/response对象   

    javax.servlet.http.HttpServletRequest request=web.getHttpServletRequest();   

    javax.servlet.http.HttpServletResponse response=web.getHttpServletResponse();   

 

记得把dwr.jar包加入build path中,才不会报编译出错的问题!

2012-09-25 16:10:16 hqu_wxf 阅读数 20

http://10.188.181.248:84/approve-plugin-webapp/download.do?USERID=0001AA1000000007L7NE&nodepath=YXB8%2FYXB81209250293%2F%E5%85%B6%E4%BB%96%E8%AF%B4%E6%98%8E.txt

如果在Servlet以request.getParameter("nodepath")获取参数,得到的值可能乱码。因为以GET方式传值默认使用服务器的默认编码(如tomcat默认为ISO-8859-1)。为了获取正确的值,应该做特殊处理

nodePath = new String(nodePath.getBytes("ISO-8859-1"), "UTF-8");
没有更多推荐了,返回首页