1.配置servlet
注意:需要在web.xml进行操作。
2.执行原理
3.五个方法
1.init
在servlet创建的时候,执行,并且只执行一次。
init
方法可以用来执行 Servlet 的初始化逻辑,比如:
- 读取配置参数
- 初始化数据库连接
- 加载资源文件
- 设置日志记录器
细节:
初始化参数:
init
方法可以通过ServletConfig
对象获取初始化参数。这些参数通常在web.xml
配置文件中定义,或者通过@WebServlet
注解的属性设置。异常处理:
init
方法可以抛出ServletException
,这在初始化过程中发生错误时很有用。如果初始化失败,可以在init
方法中抛出异常,以通知容器初始化失败。生命周期:
init
方法只在 Servlet 实例创建时被调用一次,之后 Servlet 的生命周期将继续,直到destroy
方法被调用。
2.service
每一次被访问时,执行多次。
每次请求到达时调用,用于处理客户端请求并生成响应。
请求处理:
service
方法接收HttpServletRequest
和HttpServletResponse
对象,通过这些对象可以访问请求数据并生成响应。调用具体的 HTTP 方法:
Servlet 容器会根据请求的 HTTP 方法(如 GET、POST、PUT、DELETE 等)调用相应的doGet
、doPost
、doPut
、doDelete
等方法,这些方法是HttpServlet
类中的抽象方法,你可以在你的 Servlet 中覆盖这些方法来实现具体的处理逻辑。
注意:
请求调度:
service
方法负责将请求调度到适当的处理方法(如doGet
、doPost
)。通常不需要直接重写service
方法,除非你需要在所有请求处理之前或之后执行一些特定的逻辑。异常处理:
在service
方法中,如果发生异常,可能会抛出ServletException
或IOException
。确保在doGet
、doPost
等方法中妥善处理这些异常,以确保 Servlet 的稳定性和可靠性。响应:
在service
方法中,你可以设置响应的内容类型和编码,以及通过HttpServletResponse
对象写入响应数据。
3.destory
销毁方法,在servlet服务器关闭时执行,执行一次。
资源释放:
释放init
方法中创建的资源,例如数据库连接、文件句柄、线程池等。执行清理操作:
执行任何其他需要在 Servlet 被销毁前完成的清理任务,例如关闭网络连接、保存状态等。
注意:
调用时机:
destroy
方法在 Servlet 实例生命周期的末尾被调用,通常是在应用服务器关闭或 Servlet 被从内存中移除时。异常处理:
destroy
方法不应该抛出异常,因为它是清理过程的一部分,容器需要确保它能够正常执行。多次调用:
每个 Servlet 实例只会调用一次destroy
方法,即使有多个请求被处理。
4.getServletConfig
获取ServletConfig对象,即Servlet的配置对象
获取配置:
通过ServletConfig
对象,你可以访问初始化参数,这些参数在部署描述符(web.xml
)中定义。访问初始化参数:
ServletConfig
对象提供了getInitParameter
方法,用于获取单个初始化参数的值。你也可以通过getInitParameterNames
方法获取所有初始化参数的名称列表。
注意:
在
通常在init
方法中使用:init
方法中调用getServletConfig
来初始化时获取配置参数。配置文件:
初始化参数通常在web.xml
中配置,或在 Servlet 3.0+ 中使用注解配置。无法直接调用:
在doGet
、doPost
等方法中,getServletConfig
通常不是直接调用的,因为HttpServlet
类的getServletConfig
方法已通过Servlet
接口提供。
5.getServletInfo
获取Servlet的一些信息,版本,作者等等。
返回 Servlet 信息:
提供关于 Servlet 的基本信息,如名称、版本、作者等。这通常是用于展示或记录目的,而不是用于实际的业务逻辑。默认实现:
HttpServlet
类提供了一个默认实现,通常返回一个空字符串或基本描述。你可以在自己的 Servlet 中重写此方法来提供更多的自定义信息。
注意:
用途:
常用于提供有关 Servlet 的基本描述信息,有助于管理和调试。无实际业务逻辑:
getServletInfo
不用于处理请求或响应,仅用于提供描述性的信息。调用方式:
通常由容器调用,用于管理界面或日志记录,而不是直接在请求处理过程中调用。
4.@webServlet
使用@webServlet注解进行配置,@webServlet("资源路径")
5.请求消息
这些方法可以帮助你在
doGet()
或doPost()
方法中处理请求。例如,在处理表单提交时,你可以使用request.getParameter()
获取表单字段的值。在处理文件上传时,你可以使用request.getInputStream()
或request.getReader()
读取请求体中的内容。
1.获取请求参数:String parameterValue = request.getParameter("parameterName")
2.获取所有请求参数:Map<String, String[]> parameters = request.getParameterMap();
3.获取请求头:String headerValue = request.getHeader("headerName");
4.获取请求的内容类型:String contentType = request.getContentType();
5.获取请求的内容长度:int contentLength = request.getContentLength();
6.获取请求的协议和版本:String protocol = request.getProtocol();
7.获取客户端的 IP 地址:String remoteAddr = request.getRemoteAddr();
8.获取URI:/demo1
String getRequestURI() /demo
StringBuffer getRequestURL() :http://localhost/demo
Request获取行数据
URL:统一资源定位符 http://localhost/demo1_Web_exploded/request1
URI:同意资源标识符 /demo1_Web_exploded
请求转发:一种在服务器内部的资源跳转的方式
步骤
1:通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2.使用RequestDispatcher对象来进行转发