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) 收藏 举报
浙公网安备 33010602011771号