首页 > 代码库 > 各类地址及资源获取的方式
各类地址及资源获取的方式
搭建虚拟主机后,而不是利用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目录
各类地址及资源获取的方式