Servlet是在服务器端运行的Java程序,可以接收客户端请求并做出响应。Servlet可以动态生成HTML内容对客户端进行响应。
Servlet接口:定义了所有Servlet需要实现的方法
void init (ServletConfig config) 由 Servlet 容器调用,用于完成Servlet对象在处理客户请求前的初始化工作
void service ( ServletRequest req, ServletResponse res) 由 Servlet 容器调用,用来处理客户端的请求
void destroy ( ) 由 Servlet 容器调用,释放Servlet对象所使用的资源
ServletConfig getServletConfig ( ) 返回ServletConfig 对象,该对象包含此 Servlet 的初始化和启动参数。返回的 ServletConfig 对象是传递给 init( ) 方法 的对象
String getServletInfo ( ) 返回有关 Servlet 的信息,比如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(如 HTML、 XML等)
GenericServlet抽象类:提供了Servlet与ServletConfig接口方法的默认实现(service( )方法除外)
public void init (ServletConfig config ) 对Servlet接口中init()方法的实现,对ServletConfig 实例进行了保存。此方法还有一个无参的重载方法,可用于子类中重写
public String getInitParameter (String name ) 返回web.xml中名称为name的初始化参数的值 public ServletContext getServletContext ( ) 返回ServletContext对象的引用
HttpServlet抽象类:继承自GenericServlet 处理HTTP协议的请求和响应
public void service ( ServletRequest req, ServletResponse res ) 对GenericServlet类中service()方法的实现,将请求分 发给protected void service (HttpServletRequest req, HttpServletResponse res )
protected void service ( HttpServletRequest req, HttpServletResponse res ) 接收HTTP 请求,并将它们分发给此类中定义的 doXXX( ) 方法
protected void doXXX ( HttpServletRequest req, HttpServletResponse res ) 根据请求方式的不同分别调用的相应处理方法,如 doGet()、doPost()等 HttpServlet抽象类 在Servlet初始化过程中获取配置信
ServletRequest接口:获取客户端请求的数据
Object getAttribute ( String name ) 获取名称为name的属性值
void setAttribute (String name, Object object ) 在请求中保存名称为name的属性
void removeAttribute (String name) 清除请求中名字为name的属性
String getCharacterEncoding ( ) 返回请求体所使用的字符编码
void setCharacterEncoding (String charset ) 设置请求体的字符编码
String getParameter ( String name ) 返回指定请求参数的值
String[ ] getParameterValues (String name ) 返回指定请求参数的全部值
RequestDispatcher getRequestDispatcher( String path ) 返回指向指定路径的请求分发对象
HttpServletRequest接口:除了继承ServletRequest接口中的方法,还增加了一些用于读取 HTTP请求信息的方法
String getContextPath( ) 返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开 始部分
Cookie[ ] getCookies( ) 返回客户端在此次请求中发送的所有cookie对象
HttpSession getSession( ) 返回和此次请求相关联的session,如果没有给客户端分配session, 则创建一个新的session
String getMethod( ) 返回此次请求所使用的HTTP方法的名字,如GET、POST
String getHeader( String name ) 返回指定的请求头信息
HttpSession接口:session对象常用方法
String getId() 获取sessionid
void setMaxInactiveInterval(int interval) 设定session的非活动时间
int getMaxInactiveInterval() 获取session的有效非活动时间(以秒为单位)
void invalidate() 设置session对象失效
void setAttribute(String key, Object value) 以key/value的形式保存对象值
Object getAttribute(String key) 通过key获取对象值
void removeAttribute(String key) 从session中删除指定名称(key)所对应的对象
ServletResponse接口:设置响应参数和向客户端发送响应数据
PrintWriter getWriter ( ) 返回PrintWriter对象,用于向客户端发送文本
String getCharacterEncoding ( ) 返回在响应中发送的正文所使用的字符编码
void setCharacterEncoding (String charset ) 设置响应的字符编码
void setContentType ( String type ) 设置发送到客户端的响应的内容类型,此时响应的状态属于尚未提交”text/html;charset=UTF-8”
HttpServletResponse接口:除了继承ServletResponse接口中的方法,还增加了适用于HTTP响应的新方法
void addCookie ( Cookie cookie ) 增加一个cookie到响应中,这个方法可多次调用,设置多个cookie
void addHeader ( String name,String value ) 将一个名称为name,值为value的响应报头添加到响应中
void sendRedirect(String location) 发送一个临时的重定向响应到客户端,以便客户端访问 新的URL
void encodeURL ( String url ) 使用session ID对用于重定向的URL进行编码
Servlet生命周期:
实例化:Servlet 容器创建 Servlet 的实例
初始化:该容器调用 init ( ServletConfig ) 方法 执行一次
服务:如果请求 Servlet,则容器调用 service() 方法 反复执行
销毁:销毁实例之前调用 destroy() 方法 执行一次
cookie与session的对比:
session 在服务器端保存用户信息 cookie 在客户端保存用户信息
session中保存的是Object 类型 cookie保存的是 String类型
随会话的结束而将其存储的数据销毁 cookie可以长期保存在客户端
保存重要的信息 保存不重要的用户信息
转发:
转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递客户端浏览器的地址栏不会显示转向后的地址
重定向:
重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向在地址栏中可以显示转向后的地址