servlet笔记

本文深入探讨Servlet的基本结构,详解request对象的使用,包括getParameter、getParameterNames和getParameterValues方法的功能。介绍Servlet框架的组成,包括关键接口和类的作用,如ServletConfig、ServletContext、ServletRequest和ServletResponse。同时,解析HttpServlet类的运作机制,包括doGet和doPost方法的重写,以及如何处理多线程访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet笔记
1、servlet基本结构

2、request.getParameter
request.getParameter(String name) 返回参数name对应的参数值
request.getParameterNames() 返回一个Enumeration对象,包含所有参数名
request.getParameterValues(String Name)返回一个Enumeration对象,包含所有参数值
3、Servlet的框架是由两个Java包组成:
javax.servlet包:定义了所有的Servlet类都必须实现或扩展的通用接口和类。
javax.servlet.http包:定义了采用HTTP协议通信的HttpServlet类。
4、javax.servlet的接口
ServletConfig接口  – 在初始化过程中由Servlet容器使用 ,获取初始化参数信息
ServletContext接口  – 定义Servlet上下文对象,用于获取容器为当前Web应用提供的信息
ServletRequest接口 – 向服务器请求信息
ServletResponse接口 –  响应客户端请求
Servlet接口 – 定义所有Servlet必须实现的方法
5、ServletRequest接口的主要方法

  • getAttribute 根据参数给定的属性名返回属性值
  • getParameter 根据给定的参数名返回参数值
  • getWriter 返回可以向客户端发送字符数据的PrintWriter对象
  • setContentType 设置Servlet发送的响应数据的MIME类型

6、javax.servlet.http的接口:
HttpServletRequest接口  ---- 提供http请求
 HttpServletResponse接口  ---- 提供http响应
HttpSession接口  ---- 用于标识客户端并存储有关客户信息
HttpSessionAttributeListener接口  ----实现这个侦听接口用户获取会话的属性列表的改变的通知
javax.servlet.http的类:
HttpServlet类 ---- 扩展了 GenericServlet的抽象类,用于扩展创建Http Servlet
Cookie类  ---- 创建一个Cookie,用于存储Servlet发送给客户端的信息

7、HttpServlet
HttpServlet是一个抽象类,用来创建用户自己的 HTTP Servlet。
HttpServlet类的子类必须至少重写2个方法中的一个:doGet()和doPost()。
public void doXXX(HttpServletRequest req, HttpServletResponse resp)
public void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException
Service()方法被HttpServlet类用做HTTP 请求的分发器,该方法在任何时候都不能被重载。当客户请求到来时, service() 方法决定调用其对应的方法。
若编写的Servlet类扩展了HttpServlet类,通常不必实现service方法,因为HttpServlet类已经实现了service方法,该方法的声明形式如下:
protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;

在HttpServlet 的service 方法中, 首先从HttpServletRequest对象中获取HTTP请求方式的信息,然后再根据请求方式调用相应的方法。例如:如果请求方式为GET,那么调用doGet方法;如果请求方式为POST,那么调用doPost方法

8、HttpServletRequest

  • request.getParameter(String paramName)
    返回查询字符串中paramName首次出现时对应的值,
    无论GET和POST请求都以相同的方式工作
    如果在查询数据中没有这个参数,则返回null
    如果在查询数据中有参数却没有赋值, 则返回空字符串
  • request.getParameterValues(String paramName)
    有多个值时以数组形式把所有值都读进来
    返回查询字符中parmName对应的所有值构成的数组
    如果参数没有重复出现,则返回仅有一个元素的数组
    如果在查询中没有这个参数或参数没有被赋值,则返回null
  • request.getParameterNames()或request.getParameterMap()
    获得所有input元素的名字,然后用它们作为参数来调用getParameter()或getParameterValues()
    返回请求参数构成的Enumeration或Map
    常常仅用于调试

9、同一个Servlet的的多个请求到来时,可能发生多线程同时访问同一资源的情况,数据可能变的不一致
实现 SingleThreadModel 接口
public class XXXXX extends HttpServlet implements SingleThreadModel {
…………
}
一个Servlet被该接口指定, 在这个Servlet中的service方法将不会有两个线程被同时执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值