本系列博客汇总在这里:请求对象 request 和响应对象 response 汇总
目录
一、请求和相应的路径问题
- 新建一个 java web 工程后在 WebRoot/dir1( dir1 需要新建) 下新建 1.html ;在 WebRoot 下新建 2.html
- 新建 servlet,命名为 HelloServlet,继承 HttpServlet
- 修改配置文件
- 在 1.html 和 2.html 分别通过超链接访问 HelloServlet
二、路径分为相对路径和绝对路径两种写法
相对路径,根据当前资源路径与目标资源路径,寻找相对位置关系,通过
" . "
(当前目录) 和 " . . "
(上一级目录) 访问目标资源。
(1)html 访问 HelloServlet
当前路径 http://localhost/reqresp_demo/dir1/1.html
目标路径 http://localhost/reqresp_demo/hello
重新启动 tomcat ,地址栏访问 http://localhost/reqresp_demo/dir1/1.html ,然后点击通过相对路径(相对地址栏输入路径)的方式跳转访问 servlet
(2)html 访问 HelloServlet
当前路径 http://localhost/reqresp_demo/2.html
目标路径 http://localhost/reqresp_demo/hello
重新启动 tomcat ,地址栏访问 http://localhost/reqresp_demo/2.html ,然后点击通过相对路径(相对地址栏输入路径)的方式跳转访问 servlet
说明:相对路径,总需要分析当前路径与目标路径对应关系,编写规则会根据当前路径不同而不同,实际项目当中我们可能很少使用!绝对路径(完整路径)不需要考虑当前路径与目标路径之间的关系
(1)1.html
重新启动 tomcat ,地址栏访问 http://localhost/reqresp_demo/dir1/1.html ,然后点击通过绝对路径(完整路径)的方式跳转访问 servlet
(2)2.html
重新启动 tomcat ,地址栏访问 http://localhost/reqresp_demo/2.html ,然后点击通过绝对路径(完整路径)的方式跳转访问 servlet
带有协议完整路径 (跨网站):http://localhost/reqresp_demo/hello
以 / 开始路径 (同一个站点内) :/reqresp_demo/hello
服务器端和客户端对于 / 的区别
客户端访问路径:/reqresp_demo/hello
服务器内部路径:/hello, 多用于服务器跳转, 页面包含(jsp)
三、以上操作完整源码
- HelloServlet
- web.xml
- 1.html
- 2.html
- 工程文件下载
package com.wyx.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
System.out.println("doGet被访问了");
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
doGet(req, resp);
}
}
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.wyx.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<!-- /相当于 http://localhost:8080/reqresp_demo/ -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>1.html相对路径</h1>
<a href="../hello">点击访问Servlet</a>
<hr>
<h1>1.html绝对路径</h1>
<!--
绝对路径访问目标地址的方式1
缺点:写死了ip和端口,这样的不灵活,一旦ip和端口改变,所有的链接就都废了,不建议使用该种方式
-->
<a href="http://localhost/reqresp_demo/hello">绝对路径点击访问Servlet第一种方式</a>
<br>
<!--
使用/项目名称/目标路径, /代表绝对路径项目名称之前的路径
-->
<a href="/reqresp_demo/hello">绝对路径点击访问Servlet第二种方式</a>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>2.html相对路径</h1>
<a href="./hello">相对路径点击访问Servlet</a>
<br>
<a href="hello">相对路径点击访问Servlet1</a>
<hr>
<h1>2.html绝对路径</h1>
<!--
绝对路径访问目标地址的方式1
缺点:写死了ip和端口,这样的不灵活,一旦ip和端口改变,所有的链接就都废了,不建议使用该种方式
-->
<a href="http://localhost/reqresp_demo/hello">绝对路径点击访问Servlet第一种方式</a>
<br>
<!--
使用/项目名称/目标路径, /代表绝对路径项目名称之前的路径
-->
<a href="/reqresp_demo/hello">绝对路径点击访问Servlet第二种方式</a>
</body>
</html>
如有错误,欢迎指正!