百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

JavaWeb开发基础Servlet API javaweb开发基础王斐课后答案

suiw9 2024-10-29 16:42 33 浏览 0 评论

Servlet版本

Oracle将Java EE(Java SE还自己保留)交给开源组织,Eclipse基金会接手。但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生。

正是因为组织变化,Servlet被割裂为了2个版本,javax.servletjakarta.servlet

javax.servlet已经停止维护,但它仍然是一个非常有用和重要的技术,特别是在许多现有项目中,学习和使用它将为你提供坚实的Web开发基础。

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>

如果希望使用Jakarta EE 9或更高版本的Servlet API,则需要切换到javax.servlet

<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>

本文将基于javax.servlet来介绍Servlet,从Usages来看,它仍然是使用最广泛的。

Servlet API

Servlet API主要有2个包,javax.servlet包含了servlet和web container使用的接口和类。javax.servlet.http包含了http相关的接口和类。

javax.servlet接口列表:

  1. Servlet
  2. ServletRequest
  3. ServletResponse
  4. RequestDispatcher
  5. ServletConfig
  6. ServletContext
  7. SingleThreadModel
  8. Filter
  9. FilterConfig
  10. FilterChain
  11. ServletRequestListener
  12. ServletRequestAttributeListener
  13. ServletContextListener
  14. ServletContextAttributeListener

javax.servlet类列表:

  1. GenericServlet
  2. ServletInputStream
  3. ServletOutputStream
  4. ServletRequestWrapper
  5. ServletResponseWrapper
  6. ServletRequestEvent
  7. ServletContextEvent
  8. ServletRequestAttributeEvent
  9. ServletContextAttributeEvent
  10. ServletException
  11. UnavailableException

javax.servlet.http接口列表:

  1. HttpServletRequest
  2. HttpServletResponse
  3. HttpSession
  4. HttpSessionListener
  5. HttpSessionAttributeListener
  6. HttpSessionBindingListener
  7. HttpSessionActivationListener
  8. HttpSessionContext (deprecated now)

javax.servlet.http类列表:

  1. HttpServlet
  2. Cookie
  3. HttpServletRequestWrapper
  4. HttpServletResponseWrapper
  5. HttpSessionEvent
  6. HttpSessionBindingEvent
  7. HttpUtils (deprecated now)

Servlet接口

Servlet Interface定义了所有servlet必须具有的行为。主要方法如下:

  1. public void init(ServletConfig config) 初始化,只会被web container调用1次

  2. public void service(ServletRequest request, ServletResponse response) 接收请求,返回响应,每次请求都会调用1次

  3. public void destroy() 销毁,只会被web container调用1次

  4. public ServletConfig getServletConfig() Servlet配置

  5. public String getServletInfo() Servlet信息

以下是代码示例:

import java.io.*;
import javax.servlet.*;

public class First implements Servlet {
ServletConfig config = ;

/**
* 初始化
* @param config
*/

public void init(ServletConfig config) {
this.config = config;
System.out.println("servlet is initialized");
}

/**
* 服务
* @param req
* @param res
* @throws IOException
* @throws ServletException
*/

public void service(ServletRequest req, ServletResponse res)
throws IOException, ServletException
{

res.setContentType("text/html");

PrintWriter out = res.getWriter();
out.print("<html><body>");
out.print("<b>hello simple servlet</b>");
out.print("</body></html>");
}

/**
* 销毁
*/

public void destroy() {
System.out.println("servlet is destroyed");
}

/**
* 配置
* @return
*/

public ServletConfig getServletConfig() {
return config;
}

/**
* 信息
* @return
*/

public String getServletInfo() {
return "copyright 2007-1010";
}
}

GenericServlet类

GenericServlet是个抽象类,实现了Servlet, ServletConfig, Serializable接口,能处理任何请求,支持任何协议。主要方法如下:

  1. public void init(ServletConfig config) 初始化
  2. public abstract void service(ServletRequest request, ServletResponse response) 接收请求,返回响应,每次请求都会调用1次
  3. public void destroy() 销毁,只会被web container调用1次
  4. public ServletConfig getServletConfig() Servlet配置
  5. public String getServletInfo() Servlet信息
  6. public void init() 无参初始化
  7. public ServletContext getServletContext() Servlet上下文
  8. public String getInitParameter(String name) 根据参数name返回value
  9. public Enumeration getInitParameterNames() web.xml所有参数
  10. public String getServletName() Servlet名称
  11. public void log(String msg) 记录Servlet日志
  12. public void log(String msg,Throwable t) 记录Servlet日志和异常堆栈

以下是代码示例:

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class First extends GenericServlet {
public void service(ServletRequest req, ServletResponse res)
throws IOException, ServletException
{

res.setContentType("text/html");

PrintWriter out = res.getWriter();
out.print("<html><body>");
out.print("<b>hello generic servlet</b>");
out.print("</body></html>");
}
}

HttpServlet类

HttpServlet继承了GenericServlet抽象类。主要方法如下:

  1. public void service(ServletRequest req,ServletResponse res) dispatches the request to the protected service method by converting the request and response object into http type.(这里结合英文解释比较清楚,转换类型后,调用第2个service)

  2. protected void service(HttpServletRequest req, HttpServletResponse res) receives the request from the service method, and dispatches the request to the doXXX() method depending on the incoming http request type.(这里结合英文解释比较清楚,根据不同method,调用doXXX()方法)

  3. protected void doGet(HttpServletRequest req, HttpServletResponse res) 处理GET请求,web container调用

  4. protected void doPost(HttpServletRequest req, HttpServletResponse res) 处理POST请求,web container调用

  5. protected void doHead(HttpServletRequest req, HttpServletResponse res) 处理HEAD请求,web container调用

  6. protected void doOptions(HttpServletRequest req, HttpServletResponse res) 处理OPTIONS请求,web container调用

  7. protected void doPut(HttpServletRequest req, HttpServletResponse res) 处理PUT请求,web container调用

  8. protected void doTrace(HttpServletRequest req, HttpServletResponse res) 处理TRACE请求,web container调用

  9. protected void doDelete(HttpServletRequest req, HttpServletResponse res) 处理DELETE请求,web container调用

  10. protected long getLastModified(HttpServletRequest req) 上次修改时间

如果想深入学习Servlet API,可以在Maven pom.xml引入servlet包依赖,External Libraries查看源码。

?

参考资料:

https://www.javatpoint.com/servlet-api

https://www.javatpoint.com/Servlet-interface

https://www.javatpoint.com/GenericServlet-class

https://www.javatpoint.com/HttpServlet-class

ChatGPT

相关推荐

5款Syslog集中系统日志常用工具对比推荐

一、为何要集中管理Syslog?Syslog由Linux/Unix系统及其他网络设备生成,广泛分布于整个网络。因其包含关键信息,可用于识别网络中的恶意活动,所以必须对其进行持续监控。将Sys...

跨平台、多数据库支持的开源数据库管理工具——DBeaver

简介今天给大家推荐一个开源的数据库管理工具——DBeaver。它支持多种数据库系统,包括Mysql、Oracle、PostgreSQL、SLQLite、SQLServer等。DBeaver的界面友好...

强烈推荐!数据库管理工具:Navicat Premium 16.3.2 (64位)

NavicatPremium,一款集数据迁移、数据库管理、SQL/查询编辑、智能设计、高效协作于一体的全能数据库开发工具。无论你是MySQL、MariaDB、MongoDB、SQLServer、O...

3 年 Java 程序员还玩不转 MongoDB,网友:失望

一、什么场景使用MongoDB?...

拯救MongoDB管理员的GUI工具大赏:从菜鸟到极客的生存指南

作为一名在NoSQL丛林中披荆斩棘的数据猎人,没有比GUI工具更称手的瑞士军刀了。本文将带你围观五款主流MongoDB管理神器的特性与暗坑,附赠精准到扎心的吐槽指南一、MongoDBCompass:...

mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?

前言最近在做neo4j相关的同步处理,因为产线的可视化工具短暂不可用,发现写起来各种脚本非常麻烦。...

solidworks使用心得,纯干货!建议大家收藏

SolidWorks常见问题...

统一规约-关乎数字化的真正实现(规范统一性)

尽管数字化转型的浪潮如此深入人心,但是,对于OPCUA和TSN的了解却又甚少,这难免让人质疑其可实现性,因为,如果缺乏统一的语义互操作规范,以及更为具有广泛适用的网络与通信,则数字化实际上几乎难以具...

Elasticsearch节点角色配置详解(Node)

本篇文章将介绍如下内容:节点角色简介...

产前母婴用品分享 篇一:我的母婴购物清单及单品推荐

作者:DaisyH8746在张大妈上已经混迹很久了,有事没事看看“什么值得买”已渐渐成了一种生活习惯,然而却从来没有想过自己要写篇文章发布上来,直到由于我产前功课做得“太过认真”(认真到都有点过了,...

比任何人都光彩照人的假期!水润、紧致的肌肤护理程序

图片来源:谜尚愉快的假期临近了。身心振奋的休假季节。但是不能因为这种心情而失去珍贵的东西,那就是皮肤健康。炙热的阳光和强烈的紫外线是使我们皮肤老化的主犯。因此,如果怀着快乐的心情对皮肤置之不理,就会使...

Arm发布Armv9边缘AI计算平台,支持运行超10亿参数端侧AI模型

中关村在线2月27日消息,Arm正式发布Armv9边缘人工智能(AI)计算平台。据悉,该平台以全新的ArmCortex-A320CPU和领先的边缘AI加速器ArmEthos-U85NPU为核心...

柔性——面向大规模定制生产的数字化实现的基本特征

大规模定制生产模式的核心是柔性,尤其是体现在其对定制的要求方面。既然是定制,并且是大规模的定制,对于制造系统的柔性以及借助于数字化手段实现的柔性,就提出了更高的要求。面向大规模定制生产的数字化业务管控...

创建PLC内部标准——企业前进的道路

作者:FrankBurger...

标准化编程之 ----------- 西门子LPMLV30测试总结

PackML乃是由OMAC开发且被ISA所采用的自动化标准TR88.00.02,能够更为便捷地传输与检索一致的机器数据。PackML的主要宗旨在于于整个工厂车间倡导通用的“外观和感觉”,...

取消回复欢迎 发表评论: