JavaWeb-Servlet学习
servlet前后端传递参数的编码格式
servlet的继承关系以及service()方法-重点
-
继承关系
javax.servlet.Servlet接口
————javax.servlet.GenericServlet抽象类
————————javax.servlet.http.HttpServlet抽象子类 -
相关方法
javax.servlet.Servlet接口:
· void init(config) - 初始化方法
· void service(request,response) - 服务方法
· void destory() - 销毁方法javax.servlet.GenericServlet抽象类:
· void service(request,response) - 仍然是抽象的javax.servlet.http.HttpServlet 抽象子类:
· void service(request,response) - 不是抽象的
//1. String method = req.getMethod(); 获取请求的方式
//2. 各种if判断,根据请求方式不同,决定去调用不同的do方法
if (method.equals("GET")) {
this.doGet(req,resp);
} else if (method.equals("HEAD")) {
this.doHead(req, resp);
} else if (method.equals("POST")) {
this.doPost(req, resp);
} else if (method.equals("PUT")) {
//3. 在HttpServlet这个抽象类中,do方法都差不多:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String protocol = req.getProtocol();
String msg = lStrings.getString("http.method_get_not_supported");
if (protocol.endsWith("1.1")) {
resp.sendError(405, msg);
} else {
resp.sendError(400, msg);
}
}
小结
- 继承关系: HttpServlet -> GenericServlet -> Servlet
- Servlet中的核心方法: init() , service() , destroy()
- 服务方法:
当有请求过来时,service方法会自动响应(其实是tomcat容器调用的)
在HttpServlet中我们会去分析请求的方式:到底是get、post、head还是delete等等
然后再决定调用的是哪个do开头的方法
那么在HttpServlet中这些do方法默认都是405的实现风格-要我们子类去实现对应的方法,否则默认会报405错误 - 因此,我们在新建Servlet时,我们才会去考虑请求方法,从而决定重写哪个do方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!