目录
使用JSP技术编写服务器动态网页:
在JSP技术出现之前——编写服务器动态网页
1、Servlet
1、什么是Servlet
Servlet 是一种独立于平台和协议的服务器端Java应用程序,通过Servlet可以生成动态的Web页面。同时,使用Servlet还可以在服务器端对客户端的请求进行处理,控制程序的执行。Servlet的主要作用就是交互式地浏览和更新数据,并生成动态的页面内容展示。
2、Servlet与JSP的关系
JSP在被Web容器解析的时候,最终会编译成一个Servlet类。
3、Servlet API
Servlet其实是两个单词的合成:server和applet,所以它是一种服务器端的Java应用程序。但不是所有在服务器上的的Java应用程序都是Servlet,只有当服务器使用Servlet API 时,才能算是一个Servlet。Servlet又被称为Java Servlet应用程序接口,包含了很多Servlet中重要的接口和类,如下:
1、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,等等) |
2、ServletConfig接口
- 在Servlet初始化过程中获取配置信息
- 一个Servlet只有一个ServletConfig对象
方法名称 | 功能描述 |
public String getInitParameter(String name) | 获取web.xml中设置的以name命名的初始化参数值 |
public ServletContext getServletContext( ) | 返回Servlet的上下文对象引用 |
3、GenericServlet抽象类
提供了Servlet与ServletConfig接口的默认实现方法
方法名称 | 功能描述 |
public void init(ServletConfig config) | 调用Servlet接口中的init()方法。此方法还有一无参的重载方法,其功能与此方法相同 |
public String getInitParameter(Stringname) | 返回名称为name的初始化参数的值 |
public ServletContext getServletContext() | 返回ServletContext对象的引用 |
4、HttpServlet抽象类
- 继承于GenericServlet
- 处理HTTP协议的请求和响应
方法名称 | 功能描述 |
public void service(ServletRequest req, ServletResponse res) | 调用GenericServlet类中service()方法的实现 |
public void service(HttpServletRequest req, HttpServletResponseres) | 接收HTTP 请求,并将它们分发给此类中定义的 doXXX 方法 |
public void doXXX(HttpServletRequest req,HttpServletResponse res) | 根据请求方式的不同,分别调用相应的处理方法,例如doGet()、doPost()等 |
请求、响应相关接口:
1、ServletRequest接口
获取客户端的请求数据
方法名称 | 功能描述 |
public Object getAttribute(String name) | 获取名称为name的属性值 |
public void setAttribute(String name, Object object) | 在请求中保存名称为name的属性 |
public void removeAttribute(String name) | 清除请求中名字为name的属性 |
2、HttpServletRequest接口
除了继承ServletRequest接口中的方法,还增加了一些用于读取请求信息的方法
方法名称 | 功能描述 |
public String getContextPath() | 返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分 |
public Cookie[ ] getCookies() | 返回客户端在此次请求中发送的所有cookie对象 |
public HttpSession getSession() | 返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的session |
public String getMethod() | 返回此次请求所使用的HTTP方法的名字,如GET、POST |
3、ServletResponse接口
向客户端发送响应数据
方法名称 | 功能描述 |
public PrintWriter getWriter() | 返回PrintWrite对象,用于向客户端发送文本 |
public String getCharacterEncoding() | 返回在响应中发送的正文所使用的字符编码 |
public void setCharacterEncoding() | 设置发送到客户端的响应的字符编码 |
public void setContentType(String type) | 设置发送到客户端的响应的内容类型,此时响应的状态属于尚未提交 |
4、HttpServletResponse接口
除了继承ServletResponse接口中的方法,还增加了新的方法
方法名称 | 功能描述 |
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进行编码 |
4、Servlet的生命周期
在了解Servlet生命周期之前,需要先了解一个名词:Servlet容器。
Servlet容器是用来装载Servlet对象的一种容器,是负责管理Servlet的一类组件。
Servlet生命周期是指Servlet从创建到销毁的过程,这包括以下几个环节:
1、加载和实例化
Servlet容器根据Servlet类的位置加载Servlet类,加载成功后,由容器创建Servlet实例。
2、初始化
对于每一个Servlet实例,init方法只被调用一次。
3、提供服务,请求处理
4、销毁
5、生命周期的各个阶段
5、 Servlet的应用
1、创建Servlet
2、Servlet的部署与运行
3、初始化参数设置
4、Servlet的运行
2、过滤器
1、过滤器概述
1、过滤器简介
1、过滤器
2、过滤器链
3、过滤器的应用场合
2、过滤器的生命周期
2、过滤器的应用
1、使用过滤器的步骤
2、Filter接口
实现过滤器的过程与实现Servlet有些类似。在开发过滤器时,需要实现Filter接口,这个接口存在于javax.servlet包下
Filter接口提供了一个不带参数的构造方法,还有三个方法如下:
Filter接口没有相应的实现类进行继承,所以在编写过滤器时,必须实现Filter接口。
3、过滤器的配置
<filter>
<filter-name>charSet</filter-name>
<filter-class>filter.CharSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>charSet</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
3、监听器