servlet基础
1、什么是Servlet
Servlet 是一个 Java程序,是在服务器上运行以处理客户端请求并做出响应的程序
Servlet 运行于服务器端
1.1、初识Servlet
2、Servlet与JSP的关系
3、Servlet体系结构
4、Servlet接口
Servlet概述
定义了所有Servlet需要实现的方法
Servlet接口的常用方法
方法名称 | 功能描述 |
---|---|
public void init(ServletConfig config) | 由 servlet 容器调用,用于完成Servlet对象在处理客户请求前的初始化工作 |
public void service(ServletRequest req**,** ServletResponse res) | 由 servlet 容器调用,用来处理客户端的请求 |
public void destroy() | 由 servlet 容器调用,释放Servlet对象所使用的资源 |
public ServletConfig getServletConfig**()** | 返回****ServletConfig 对象**,该对象包含此** servlet 的初始化和启动参数。返回的 ServletConfig 对象是传递给 init() 方法的对象 |
public String getServletInfo**()** | 返回有关 servlet 的信息,比如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(比如 HTML**、XML,等等)** |
4.1、ServletConfig接口
ServeltConfig概述
在Servlet初始化过程中获取配置信息
一个Servlet只有一个ServletConfig对象
ServletConfig的常用方法
方法名称 | 功能描述 |
---|---|
public String getInitParameter**(String** name) | 获取web.xml中设置的以name命名的初始化参数值 |
public ServletContext getServletContext**( )** | 返回Servlet的上下文对象引用 |
4.2、GenericServlet抽象类
GenericServlet概述
提供了Servlet与ServletConfig接口的默认实现方法
GenericServlet的常用方法
方法名称 | 功能描述 |
---|---|
public void init(ServletConfig config) | 调用Servlet接口中的init()方法。此方法还有一无参的重载方法,其功能与此方法****相同 |
public String getInitParameter**(Stringname)** | 返回名称为name的初始化参数的值 |
public ServletContext getServletContext**()** | 返回ServletContext对象的引用 |
4.3、HttpServlet抽象类
HttpServlet概述
继承于GenericServlet
处理HTTP协议的请求和响应
HttpServlet的常用方法
方法名称 | 功能描述 |
---|---|
public void service(ServletRequest req**,** ServletResponse res) | **调用GenericServlet类中****service()**方法的实现 |
public void service(HttpServletRequest req, HttpServletResponseres**)** | 接收****HTTP 请求,并将它们分发给此类中定义的 doXXX 方法 |
public void doXXX**(HttpServletRequestreq,HttpServletResponse** res) | **根据请求方式的不同,分别调用相应的处理方法,例如doGet()****、doPost()**等 |
4.4、请求、响应相关接口
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oeqbHPEf-1635037261596)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210922084542859.png)]
4.5、ServletRequest接口
ServletRequest概述
获取客户端的请求数据
ServletRequest的常用方法
方法名称 | 功能描述 |
---|---|
public Object getAttribute**(String** name**)** | 获取名称为name的属性值 |
public void setAttribute**(String** name, Object object**)** | 在请求中保存名称为name的属性 |
public void removeAttribute**(String** name) | 清除请求中名字为name的属性 |
4.6、HttpServletRequest接口
HttpServletRequest概述
除了继承ServletRequest接口中的方法,还增加了一些用于读取请求信息的方法
HttpServletRequest的常用方法
方法名称 | 功能描述 |
---|---|
public String getContextPath**()** | 返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分 |
public Cookie**[ ]** getCookies**()** | 返回客户端在此次请求中发送的所有cookie对象 |
public HttpSession getSession**()** | 返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的****session |
public String getMethod**()** | **返回此次请求所使用的HTTP方法的名字,如GET、**POST |
4.7、ServletResponse接口
ServletResponse概述
向客户端发送响应数据
ServletResponse接口的常用方法
方法名称 | 功能描述 |
---|---|
public PrintWriter getWriter**()** | 返回PrintWrite对象,用于向客户端发送文本 |
public String getCharacterEncoding**()** | 返回在响应中发送的正文所使用的字符编码 |
public void setCharacterEncoding**()** | 设置发送到客户端的响应的字符编码 |
public void setContentType**(String type)** | 设置发送到客户端的响应的内容类型,此时响应的状态属于尚未提交 |
4.8、HttpServletResponse接口
HttpServletResponse概述
除了继承ServletResponse接口中的方法,还增加了新的方法
HttpServletResponse的常用方法
方法名称 | 功能描述 |
---|---|
public void addCookie**(Cookie** cookie**)** | 增加一个cookie到响应中,这个方法可多次调用,设置多个****cookie |
public void addHeader**(String** name,String value) | 将一个名称为name,值为value的响应报头添加到响应中 |
public void sendRedirect**(String location)** | 发送一个临时的重定向响应到客户端,以便客户端访问新的****URL |
public void encodeURL**(String** url**)** | 使用session ID对用于重定向的URL进行编码 |
5、Servlet的生命周期
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n3mXny2N-1635037261600)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210922084813567.png)]
生命周期的各个阶段
6、Servlet的应用
创建Servlet
实现doPost()或doGet()方法
部署Servlet
编辑部署描述文件web.xml(添加< servlet>和< servlet-mapping>)
启动Tomcat,访问Servlet
7、获取Servlet初始化参数
7.1、Servlet初始化参数配置
7.2、获取初始化参数
8、ServletContext接口
ServletContext概述
获取Servlet上下文
ServletContext的常用方法
方法名称 | 功能描述 |
---|---|
public String getInitParameter**(String** name) | 获取名称为name的系统范围内的初始化参数值,系统范围内的初始化参数可以在部署描述符中使用**<context-param>**元素定义 |
public void setAttribute**(String** name, Object object**)** | 设置名称为name的属性 |
public Object getAttribute**(String name)** | 获取名称为name的属性 |
public String getRealPath**(String path)** | 返回参数所代表目录的真实路径 |
public void log(String message) | 记录一般日志信息 |