目录
Java Web的核心技术—Servlet
基本概念
- Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是Java语言编写的服务器端程序,换句话说,Servlet就是运行在服务器上的Java类。
- Servlet用来完成B/S架构下客户端请求的响应处理,也就是交互式地浏览和生成数据,生成动态Web内容。
Servlet编程步骤
- 建立一个Java Web Application项目并配置Tomcat服务器。
- 自定义类实现Servlet接口或继承 HttpServlet类(推荐) 并重写service方法。
- 将自定义类的信息配置到 web.xml文件并启动项目,配置方式如下:
在浏览器上访问的方式为:
Servlet接口
javax.servlet.Servlet
接口用于定义所有servlet必须实现的方法。
常用的方法
Servlet生命周期
- 构造方法只被调用一次,当第一次请求Servlet时调用构造方法来创建Servlet的实例。
- init方法只被调用一次,当创建好Servlet实例后立即调用该方法实现Servlet的初始化。
- service方法被多次调用,每当有请求时都会调用service方法来用于请求的响应。
- destroy方法只被调用一次,当该Servlet实例所在的Web应用被卸载前调用该方法来释放当前占用的资源。
POST和GET请求
GET请求
POST请求
ServletRequest接口
javax.servlet.ServletRequest
接口主要用于向servlet提供客户端请求信息,可以从中获取到任何请求信息。- Servlet容器创建一个ServletRequest对象,并将其作为参数传递给Servlet的service方法。
常用的方法
HttpServletRequest接口
javax.servlet.http.HttpServletRequest
接口是ServletRequest接口的子接口,主要用于提供HTTP请求信息的功能。- 不同于表单数据,在发送HTTP请求时,HTTP请求头直接由浏览器设置。
- 可直接通过HttpServletRequest对象提供的一系列get方法获取请求头数据。
常用的方法
ServletResponse接口
javax.servlet.ServletResponse
接口用于定义一个对象来帮助Servlet向客户端发送响应。- Servlet容器创建ServletResponse对象,并将其作为参数传递给servlet的service方法。
常用的方法
HttpServletResponse接口
javax.servlet.http.HttpServletResponse
接口继承ServletResponse接口,以便在发送响应时提供特定于HTTP的功能。
常用方法
Java Web过滤器——filter
Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,如下所示:
Filter开发步骤
Filter开发分为二个步骤:
- 编写java类实现Filter接口,并实现其doFilter方法。
- 在 web.xml文件中使用
<filter>和<filter-mapping>
元素对编写的filter类进行注册,并设置它所能拦截的资源。
Filter生命周期
Filter的创建
Filter的创建和销毁由WEB服务器负责。 web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作,filter对象只会创建一次,init方法也只会执行一次。通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
Filter的销毁
Web容器调用destroy方法销毁Filter。destroy方法在Filter的生命周期中仅执行一次。在destroy方法中,可以释放过滤器使用的资源。
FilterConfig接口
用户在配置filter时,可以使用为filter配置一些初始化参数,当web容器实例化Filter对象,调用其init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。因此开发人员在编写filter时,通过filterConfig对象的方法,就可获得:
String getFilterName():得到filter的名称。
String getInitParameter(String name): 返回在部署描述中指定名称的初始化参数的值。如果不存在返回null.
Enumeration getInitParameterNames():返回过滤器的所有初始化参数的名字的枚举集合。
public ServletContext getServletContext():返回Servlet上下文对象的引用。