Servlet原理和mapping分析
一---Servlet原理分析图
Servlet是由web服务器调用,web服务器在收到浏览器请求之后,会:
二---Mapping问题
1)一个servlet请求可以指定一个映射路径
<!--servlet的请求路径 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> <!-- 网址模式--> </servlet-mapping>
2)一个servlet请求可以指定多个映射路径
<!--servlet的请求路径 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> <!-- 网址模式--> </servlet-mapping> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello1</url-pattern> <!-- 网址模式--> </servlet-mapping> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello2</url-pattern> <!-- 网址模式--> </servlet-mapping> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello3</url-pattern> <!-- 网址模式--> </servlet-mapping> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello4</url-pattern> <!-- 网址模式--> </servlet-mapping>
3)一个servlet请求可以指定通用映射路径(使用通配符*)
<!--servlet的请求路径 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello/*</url-pattern> <!-- 网址模式--> </servlet-mapping>
4)默认请求路径,虽然进的是s1模块,但这时访问的不再是index.jsp.而是HelloServlet
5)指定一些后缀或者前缀等等
<!--servlet的请求路径 注意点,*前面不能加项目映射的路径--> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>*.do</url-pattern> <!-- 网址模式--> </servlet-mapping>
6)修改默认的404页面
public class ErrorServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); // 设置响应的文本格式 resp.setCharacterEncoding("utf-8"); // 设置字符集 PrintWriter writer = resp.getWriter(); // 构造输出对象 writer.print("<h1>哥!这次真的找不到了。</h1>"); // 输出内容 } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
注册:
<!-- 404页面 --> <!--注册servlet --> <servlet> <servlet-name>error</servlet-name> <servlet-class>com.kuang.servlet.ErrorServlet</servlet-class> </servlet> <!--servlet的请求路径--> <servlet-mapping> <servlet-name>error</servlet-name> <url-pattern>/*</url-pattern> <!-- 网址模式--> </servlet-mapping>
测试:
输入/hello试试
6)优先级问题
指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求。
posted on 2021-03-30 11:53 Love&Share 阅读(692) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~