• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

XiaoXiaoli

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Servlet&jsp_环境路径

一个URI请求实际上是由三部分组成的。

  requestURI = contextPath + servletPath + pathInfo

  可以使用HttpServletRequest的getRequestURI()来获取这项信息。

  

 

环境路径

  contextPath是环境路径(Context Path)

  一个容器上可能部署多个Web应用程序,contextPath ,是容器用来决定该挑选哪个Web应用程序的依据。

  可以使用HttpServletRequest的getContextPath()来获取环境路径。

  如果应用程序路径与Web服务器环境根路径相同,则应用程序环境路径为空字符串,如果不是则应用程序环境路径以“/”开头,不包括“/”结尾。

  

  确定了是哪个Web应用程序来处理请求,接下来就是Servlet的挑选。

  Servlet必须设置URL模式(URL pattern)可以设置的模式如下:

    路径映射(Path mapping)

      以 '/' 开头但是以 '/*' 结尾的URL模式。

      如:设置URL模式为"/guest/*",则请求的URI扣去环境路径的部分为/guest/text.view、/guest/home.view等以/guest/作为开头的,都会交由Servlet处理。       

 

    扩展映射 (extension mapping)

      以 '*.' 开头的URL模式。

 

    环境根目录(Context root)

      空字符串""是个特殊的URL模式。

 

    预设Servlet

      仅包括 "/" 的URL模式

 

    完全匹配(Exact match)

       不符合以上的设置的其他字符串,都要做路径的严格对应。

 

 

Servlet路径

  在最上面的requestURI中,servletPath的部分是指Servlet路径(Servlet Path),不包括路径信息(Path Info)与请求参数(Request parameter)。

 

路径信息

  在最上面的requestURI中,pathInfo的部分是指路径信息(Path info),路径信息不包括请求参数。

  路径信息指的是不包括环境路径与Servlet路径部分的额外路径信息。

  可以使用HttpServletRequest的getPathInfo()来取得。

  如果没有额外的路径信息,则为null。

  扩展映射、预设Servlet、完全匹配的情况下,getPathInfo()就会取得null。

  如果有额外路径信息,则是一个以“/”开头的字符串。

 

 

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/servlet/*")
public class PathServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();

        out.println("<html>");
        out.println("<head>");
        out.println("<title>ContentPath</title>");
        out.println("</head>");

        out.println("<body>");
        out.println("<h1> URI路径:" + req.getRequestURI() + "</h1>");
        out.println("<h1> 环境路径:" + req.getContextPath() + "</h1>");
        out.println("<h1> Servlet路径:"+ req.getServletPath() + "</h1>");
        out.println("<h1> PathInfo:" + req.getPathInfo() + "</h1>");
        out.println("</body>");
        out.println("</html>");
        out.close();
    }
}

  

posted on 2021-08-14 16:27  XiaoXiaoli  阅读(86)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3