二.重定向
三.访问路径
1.部署及路径的关系
2.如何获取路径
- 项目名: getContextPath()
- 访问路径: getServletPath()
- URI: getRequestURI()
- URL: getRequestURL()
3.URI和URL的区别
1)狭义的理解
- 单纯的在Java项目中理解
- URI: 绝对路径
- URL: 完整路径
URL包含了URI
2)广义的理解(*)
- 在所有的WEB项目中理解
- URI: 资源的名称(刘苍松/苍老师/二蛋/松/cang#null)
- URL: 资源的真名(刘苍松)
- URI包含了UR
4.如何配置Servlet访问路径
4.1精确匹配(/abc)
- 只有"/abc"可以访问该Servlet
- 该Servlet只能处理这一个请求
适合请求总数很少的小项目
4.2通配符(/*)
- 所有的路径都可以访问该Servlet
- 该Servlet能处理所有的请求
- 适合使用一个组件处理所有的请求
4.3后缀(*.emp)
- 所有以emp为后缀的请求都可以访问该Servlet
- 该Servlet能处理很多请求
适合使用多个组件处理所有的请求
5.如何使用一个Servlet处理多个请求
获取路径的四种方式:
package web;
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 AbcServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//通过不同的方法获取访问路径的不同部位
//http://localhost:8080/servlet2/abc
System.out.println(req.getContextPath());// /servlet2 项目名
System.out.println(req.getServletPath());// /abc 网络访问路径
System.out.println(req.getRequestURI());// /servlet2/abc 绝对路径
System.out.println(req.getRequestURL());// http://localhost:8080/servlet2/abc 完整路径
/***
* 如果没有写响应信息,服务器依然会自动向浏览器发送响应信息
* 只是响应的数据为空,浏览器会看到一片空白,并不会报错
*/
/**
* 注意事项:若采用通配符的方式来匹配访问路径,则req.getServletPath()得到的是空字符串
* getContextPath(): /servlet2
* req.getServletPath():
* req.getRequestURI(): /servlet2/abc
* req.getRequestURL(): http://localhost:8080/servlet2/abc
* 此时若需要得到网络访问路径,则可考虑采用其他路径加工处理
*/
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>servlet2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>abc</servlet-name>
<servlet-class>web.AbcServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>abc</servlet-name>
<!-- 1.精确匹配 -->
<!-- <url-pattern>/abc</url-pattern> -->
<!-- 2.通配符 -->
<!-- <url-pattern>/*</url-pattern> -->
<!-- 3.后缀:不允许以斜线"/"开头,否则报错 -->
<url-pattern>*.duang</url-pattern>
</servlet-mapping>
</web-app>