1."/"的使用:
给服务器使用: "/" 表示在当前web应用的根目录(tomcat里面的指定项目中webRoot下)
给浏览器使用: "/" 表示在webapps的根目录下2.查询流程:
给浏览器使用
例子: url=/W项目名/资源名
先定位"/"然后定位项目名;之后到web.xml中寻找是否有url-pattern的值为"资源名",如果有,定位到对应的Servlet;
如果没有,到webRoot根目录下找有没有对应的资源名;如果有,定位,如果没有就报404错误;
给浏览器使用:
例子:url=/资源名
在本项目web.xml中寻找是否有url-pattern的值为"资源名",如果有,定位到对应的Servlet;
如果没有,到webRoot根目录下找有没有对应的资源名;如果有,定位,如果没有就报404错误;
3.具体问题分析:
1) 转发:
request.getRequestDispatcher("/target.html").forward(request, response);转发是服务器内部的跳转,"/"是给服务器使用的,表示当前web应用的根目录,这句代码的含义是:转发到webRoot/target.html
2)重定向
重定向是服务器给浏览器发送响应之后,浏览器根据响应头中附带location再次请求新页面的过程.这个地址是给浏览器用的:例子:response.sendRedirect("/Web_demo/target.html");
由于webapps的根目录有多个项目,所以需要指定具体的项目名;
3)html页面的超连接href
例子:/Web_demo/target.html'>超链接</a></body></html>)
由于超链接是给浏览器使用,所以"/"表示webapps根目录下
4) html页面中的form提交地址
response.getWriter().write("<html><body><form action='/Web_demo/target.html'><input type='submit'/></form></body></html>)同上
4 读取web应用下的资源文件
1)"."的使用
"." 代表java命令运行目录。 在java项目中,java命令运行目录就是根目录
在javaweb项目中java命令运行目录在tomcat/bin目录下(Servlet在服务器上运行,而打开服务器的文件startup.bat在bin目录下)
结论: 在web项目中, . 代表在tomcat/bin目录下开始,所以不能使用这种相对路径。
2)getRealPath
getRealPath读取,自动定位到本项目中的WebRoot根目录,返回资源文件的绝对路径,
String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties"); 3). getResourceAsStream()
getResourceAsStream得到资源文件,自动定位到本项目中的WebRoot根目录,返回的是输入流
InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties prop = new Properties();
prop.load(in);5 读取web应用工程名
getContextPath():
获取的是本工程名
java 从网址中获取文件名 javaweb获取文件路径
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java 根据HttpEntity 中contenttype获取文件类型
java 根据HttpEntity 中contenttype获取文件类型
apache HTTP Apache -
PHP获取网址URL路径中文件名
basename函数basename—返回路径中的文件名部分说明basename(string$path[,string$suffix]
php获取URL文件名 文件名 字符串 函数返回 -
idea javadoc 规范
一.idea是什么 有专业人士说,idea是天生适合做微软,当时我还想肯定是夸大其词了,但当你用起来的时候确实很爽,??IntelliJ IDEA提供了丰富的功能和工具,旨在提高开发人员的生产力和代码质量。 IntelliJ IDEA具有智能代码编辑器
idea javadoc 规范 intellij-idea java ide idea