Web工程中各类地址的写法
1)总体原则
在java web开发中,只要是url地址,那么最好以“/”开头,也就是绝对路径的方式。那么这个“/”到底代表什么呢?
如果“/”是给服务器用的,则代表当前web工程;如果是给浏览器用的,则代表webapps目录,webapps目录的/后面还得加上项目名。
(2)给服务器用的场景
1.使用ServletContext获取资源的绝对路径
String realPath = this.getServletContext().getRealPath("/WEB-INF/测试图片.jpg");
也就是当前web项目的WebContent目录
2.请求转发
request.getRequestDispatcher("/index.html").forward(request, response);
(3)给浏览器使用的场景
1.请求重定向,因为重定向是客户端行为,是由浏览器发起请求,所以地址是webapps的,具体重定向的请求流程查看上一篇的文章介绍。
response.sendRedirect("/LearnServlet/index.html");
因为/表示webapps目录,所以需要指定项目
2.页面超链接
<a href="/LearnServlet/index.html">跳转到首页</a>
这是浏览器使用的超链接,这个“/”是给浏览器用的,所以代表的是webapps目录,所以需要指定webapps目录
使用超链接为了避免出现项目名称,可以使用pageContext.request.contextPath来替换
String name = this.getServletContext().getContextPath();
3.form表单
<form action="/LearnServlet/FirstServlet" method="POST">
<input type="text" name="name"/ >
<input type="submit" name="submit"/>
</form>
理由类似上面的超链接。