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方法将不会有两个线程被同时执行