首页 > 代码库 > 各类地址及资源获取的方式

各类地址及资源获取的方式

搭建虚拟主机后,而不是利用eclipse把工程发布到tomcat中的一些错误

1.首先jstl,standard.jar包得导入,否则运行会出现异常 org.apache.jasper.JasperException: This absolute uri http://java.sun.com/jsp/jstl/core) cannot

    be resolved in either web.xml or the jar files deployed with this application,而不能依靠javaEE 5 Libraries里的jstl.jar

 

2.搭建虚拟主机之后,所有的工程名地址都可以省略了,并且 this.getServletContext.getContextPath()或request.getContentPath()为""空串;

   我想这也是能够省略的原因吧

3.获取SevletContext的常见方式  

1)config.getServletContext();  

2).this.getServletContext();  

3).request.getSession().getServletContext()  

4).监听器中通过ServletContextListener监听器的事件获取事件源--ServletContext

    public void contextInitialized(ServletContextEvent sce) {  //服务器启动时执行  ServletContext context = sce.getServletContext();  }

 

4.获取工程路径的写法----显示/工程名  如/day09

  servletContext.getContextPath(); request.getContextPath();

5.获取客户端提交的URL地址

对于地址 http://localhost/hh/servlet/TestServlet?aa=2

http://localhost/hh/servlet/TestServlet-----URL

/hh/servlet/TestServlet-----------URI

诸如www.baidu.com,localhost-----主机

1)request.getRequestURL()   该方法返回客户端发出请求时的完整URL。http://localhost/hh/servlet/TestServlet

2)request.getRequestURI()   该方法返回客户端发出请求时的完整URI   /hh/servlet/TestServlet

3)request.getQueryString() 方法返回请求行中的参数部分 aa=2

4)如果我们想要获得某个资源的相对路径,也就是不要工程名那部分 String path = request.getRequestURI().subString(request.getContextPath().length())

   这样path的值就是/servlet/TestServlet

 

6获取资源的几种方式

1)利用ServletContext   

1.URL getResource(String path)  String lu = getResource(String path).getFile();   

2.InputStream getResourceAsStream(String path)

其中path是资源所在的路径,且必须是以/开头,否则会报异常  /代表工程所在路径

2)利用类加载器的方式   

1.String lu = this.getClass().getResource(String path).getFile();   

2.InputStream in = this.getClass().getResourceAsStream(String path);

其中path是资源所在的路径,且必须是以/开头,否则会报异常  /代表src或classes目录

注意的地方:web Project中慎用io包中的流读取资源,应用以上方式读取资源,可用缓冲区类包装加快读取速度,

因为IO包中的读取流的相对路径是java虚拟机启动的目录,也就是说在tomcat服务器中bin目录

各类地址及资源获取的方式