Servlet从定向和路径匹配

二.重定向



三.访问路径

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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值