2026/4/18 8:24:30
网站建设
项目流程
朝阳做网站的公司,英文建站多少钱,找人做网站 多少钱,微信小程序在哪里制作目录
上下文路径
假如Application Context /#xff08;根路径#xff09;
假设此时 Application Context /app。
浏览器访问必须加前缀
代码中处理路径的规则#xff08;核心#xff1a;区分框架语法 / 原生标签#xff09;
静态资源访问的特殊场景#xff08;S…目录上下文路径假如Application Context /根路径假设此时 Application Context /app。浏览器访问必须加前缀代码中处理路径的规则核心区分框架语法 / 原生标签静态资源访问的特殊场景SSM 项目区分「本地 Tomcat 部署」/「IDEA 开发启动」场景 1部署到本地独立 TomcatSSM 项目场景 2IDEA 中启动 SSM 项目上下文路径 app情况 1未配置 DispatcherServlet使用默认 Servlet情况 2配置 DispatcherServlet 的 url-pattern 为 /覆盖默认 Servlet未处理静态资源情况 3配置 DispatcherServlet 的 url-pattern 为 /且处理静态资源springmvc.xml 配置上下文路径Deployment 中的 Application Context应用上下文就是 Tomcat 中项目的 “上下文路径”它直接决定了浏览器访问项目、代码中处理路径时必须带的 “前缀”。Application Context 设置浏览器访问示例代码中路径处理方式/apphttp://IP:端口/app/login普通项目手动拼接 /app框架项目仅对框架语法自动加 /app原生 HTML 标签需手动加/根路径http://IP:端口/login无需加前缀直接写路径即可所有请求路径直接映射到服务器根路径假如Application Context /根路径如果将 Application Context 设为 /根路径此时上下文路径为空访问时就不需要加任何前缀浏览器访问http://IP: 端口 /index.jsp、http://IP: 端口 /login代码中写路径JSP 中可省略 ${pageContext.request.contextPath}框架语法如 Thymeleaf{/xxx}也会自动匹配根路径原生 HTML 标签/直接写/xxx即可。假设此时 Application Context /app。浏览器访问必须加前缀浏览器访问项目的所有资源页面、接口、静态文件URL 中必须包含 /app 这个上下文路径否则 Tomcat 找不到对应的项目访问首页http://IP:端口/app/index.jsp而非 http://IP:端口/index.jsp访问 Servlet/Controllerhttp://IP:端口/app/login而非 http://IP:端口/login访问静态资源http://IP:端口/app/css/style.css而非 http://IP:端口/css/style.css。代码中处理路径的规则核心区分框架语法 / 原生标签框架仅对「框架语法生成的路径」自动拼接上下文路径原生 HTML 标签的路径由浏览器解析框架无法自动处理。1普通 Servlet 项目无框架需手动加前缀因为原生 Servlet 没有自动处理上下文路径的能力必须手动拼接 contextPath即 /appJSP 中写超链接 / 表单!-- 错误路径缺失 /app 前缀会访问 http://IP:端口/login -- a href/login登录/a !-- 正确用 ${pageContext.request.contextPath} 自动获取 /app最终路径是 /app/login -- a href${pageContext.request.contextPath}/login登录/aServlet 中重定向 / 转发// 错误重定向到 http://IP:端口/success缺失 /app response.sendRedirect(/success); // 正确用 request.getContextPath() 获取 /app最终重定向到 /app/success response.sendRedirect(request.getContextPath() /success);2SSM 项目有框架框架语法自动拼接原生标签需手动拼接1.Controller 中 RequestMapping写 RequestMapping(/login)框架自动拼接上下文路径最终匹配 URLhttp://IP: 端口 /app/login2.前端框架标签如 Thymeleaf!-- Thymeleaf 自动加/app前缀最终路径是/app/user/list -- a th:href{/user/list}用户列表/a3.前端原生标签link/script/img/ 普通a框架无法自动拼接必须手动添加上下文路径否则 404!-- 错误浏览器解析为 http://IP:端口/css/portal/reset.css缺失/app -- link relstylesheet href/css/portal/reset.css !-- 正确拼接/app最终请求 http://IP:端口/app/css/portal/reset.css -- link relstylesheet href${pageContext.request.contextPath}/css/portal/reset.css静态资源访问的特殊场景SSM 项目区分「本地 Tomcat 部署」/「IDEA 开发启动」场景 1部署到本地独立 TomcatSSM 项目无论是否配置 DispatcherServlet只要上下文路径≠/原生标签路径必须手动拼接上下文路径否则 404错误请求→ 浏览器请求 http://localhost:端口/css/portal/reset.css缺失 /app正确请求→ 浏览器请求 http://localhost:端口/app/css/portal/reset.css。场景 2IDEA 中启动 SSM 项目上下文路径 app分 3 种情况核心DispatcherServlet 是否拦截静态资源 是否配置静态资源处理情况 1未配置 DispatcherServlet使用默认 Servlet现象不改代码路径写/css/xxx.css依然 404原因IDEA 开发模式下上下文路径 app 时默认 Servlet 的映射路径是/app/*仅处理 http://localhost:端口/app/css/xxx.css无法处理 http://localhost:端口/css/xxx.css例外若 IDEA 中上下文路径配置为 /则默认 Servlet 映射到服务器根路径/css/xxx.css可正常访问这是上下文路径的作用非 IDEA 特殊映射。情况 2配置 DispatcherServlet 的 url-pattern 为 /覆盖默认 Servlet未处理静态资源现象静态资源请求 404原因DispatcherServlet 拦截所有请求包括静态资源但它仅处理RequestMapping映射的 Controller 方法找不到对应方法则返回 404示例请求/app/css/base.css时DispatcherServlet 会找RequestMapping(/css/base.css)的 Controller 方法无匹配则 404。情况 3配置 DispatcherServlet 的 url-pattern 为 /且处理静态资源springmvc.xml 配置需在 springmvc.xml 中添加静态资源配置让 SpringMVC 处理静态资源请求!-- 方式一指定静态资源位置location的/对应webapp根目录 -- mvc:resources mapping/css/** location/css/ / mvc:resources mapping/js/** location/js/ / mvc:resources mapping/images/** location/images/ / !-- 方式二放行静态资源请求给Tomcat默认Servlet -- mvc:default-servlet-handler /方式一SpringMVC 直接处理/app/css/xxx.css请求去 webapp/css 目录找文件并返回方式二DispatcherServlet 无法处理的静态资源请求如/app/css/xxx.css转发给默认 Servlet 处理注意即使配置了静态资源处理原生标签路径仍需手动拼接上下文路径否则请求路径是/css/xxx.css而非/app/css/xxx.css。