Servlet生命周期
Web服务器接收到HTTP请求后将请求委托给Servlet容器,然后
Servlet容器处理请求
war文件
欢迎文件优先级:指定文件->index.html->
加载优先级:context-param -> listener -> filter -> servlet ,同类型按mapping顺序进行调用。
加载过程如下:
元素详解:
向ServletContext提供键值对(上下文信息),getServletContext().getInitParameter(“context/param”)可得到。
监听客户端请求、服务端操作,可自动激发一些操作。常用监听接口、类有。
将一个名字与一个实现javaxs.servlet.Filter接口的类相关联。
是的子元素,代表servlet。
是的子元素,表示servlet的名称。
是的子元素,表示servlet的类。
是的子元素。它用于映射servlet。
是的子元素。客户端使用此模式来调用servlet。
1可传递正值负值,servlet将在项目部署或服务器启动时加载。
其他元素
其他
Listener
RequestDispatcher接口接收来自客户端的请求并将它们发送到服务器上的任何资源(比如 servlet、HTML 文件或 JSP 文件)的对象。
获取RequestDispatcher对象:调用ServletRequest接口的getRequestDispatcher()方法返回RequestDispatcher的对象,它充当位于给定路径上的资源的包装器。可以使用 RequestDispatcher 对象将请求转发到资源,或者在响应中包含资源。
使用:
1)forward(请求转发,由第二个资源给客户端响应)
2)include(在调用资源的响应中包含另一个资源的响应内容)
serialVersionUID
HttpServletResponse接口的sendRedirect()方法可以用于将响应重定向到另一个资源,资源可能是servlet,jsp或html文件。与forward()不同的是方法在客户端工作。response.sendRedirect("http://www.yiibai.com");
ServletConfig 从web.xml文件获取配置信息传递给servlet,提供了初始化参数
获取:调用Servlet接口的getServletConfig()
<servlet>
......
<init-param>
<param-name>parameter_name</param-name>
<param-value>parameter_value</param-value>
</init-param>
ServletContext配置信息
ServletContext对象由Web容器在部署一个项目时创建一个ServletContext对象,可用于从web.xml文件获取配置信息。
如果有信息要共享给多个servlet使用,最好在web.xml文件中使用元素提供它。
ServletContext的优点如果有任何信息要共享给所有的servlet使用,并且要让它容易维护,最好的办法就是在web.xml文件中提供这些信息,所以如果信息要更改直接在web.xml中修改,而不需要修改servlet代码。
ServletContext接口的使用
获取对象:
<web-app>
......
<context-param>
<param-name>parameter_name</param-name>
<param-value>parameter_value</param-value>
</context-param>
......
属性设置
Servlet中有以下4种属性方法,它们具体如下:
public void setAttribute(String name,Object object)
在应用程序范围内设置给定的对象。
public Object getAttribute(String name)
返回指定名称的属性。
public Enumeration getInitParameterNames()
返回上下文的初始化参数的名称,转为String对象的枚举。
public void removeAttribute(String name)
从servlet上下文中删除具有给定名称的属性。
过滤器在web.xml中被定义,在预加载或后加载时被调用对web资源进行拦截从而实现转换、日志记录、压缩、加解密、输入验证等过滤任务。
Filter
Filter开发
过滤器API
Filter接口提供了生命周期方法(init、doFilter、destory)。
FilterChain接口负责调用链中下一个过滤器或资源(doFilter)。
FilterConfig对象由Web容器创建,可用于获取web.xml文件中的配置信息(init、getInitParameter、getInitParameterNames、getServletContext)。
过滤器配置
用于为过滤器指定一个名字,该元素的内容不能为空。
元素用于指定过滤器的完整的限定类名。
元素用于为过滤器指定初始化参数,它的子元素指定参数的名字,指定参数的值。
在过滤器中,可以使用FilterConfig接口对象来访问初始化参数。
元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径
子元素用于设置filter的注册名称。该值必须是在元素中声明过的过滤器的名字
设置 filter 所拦截的请求路径(过滤器关联的URL样式)
指定过滤器所拦截的Servlet名称。
HTTP协议是无状态的,需要一种方式来维护用户状态,即会话跟踪。
常用技术:Cookies 隐藏表格域 网址重写 HttpSession
Cookies
Cookie是由Server产生在客户端维护用于唯一地标识客户端的一段信息,具有名称,单个值和一些属性如注释路径域限定符版本号等。
类型
javax.servlet.http.Cookie提供了Cookie功能,有以下方法
构造:
使用
隐藏表格字段
在隐藏表单字段的情况下,一般使用隐藏(不可见)文本字段来维护用户的状态。在服务器维护,每个页面需要额外提交表单字段。
URL重写
在URL重写中,我们将令牌或标识符附加到下一个Servlet或下一个资源的URL。
当用户单击超链接时,参数名称/值对将被传递到服务器。 从Servlet中可以使用getParameter()方法获取指定参数的值。
在链接上工作,只限于文本,不需要额外提交表单。
HttpSession
HttpSession对象在容器中为每个用户创建会话ID。容器使用此标识来识别特定的用户。
HttpSession的一个对象可用于执行两个任务:
HttpServletRequest接口提供了两种获取HttpSession对象的方法:
HttpSession接口的常用方法
更改对象的状态称为事件。事件发生时可以执行一些操作:计数总数和当前登录的用户数,在部署项目时创建数据库的表,创建数据库连接对象等。
事件类
事件接口
servlet初始化时ServletConfig作为配置对象由容器提供给servlet,ServletContext对象包含在ServletConfig对象中实现servlet与容器的通信,容器在ServletContext对象之后创建ServletContextEvent的对象用于通知有关 Web 应用程序的 servlet 上下文更改的信息。
ServletContextEvent和ServletContextListener
Web应用部署时会通知ServletContextEvent事件,如果在部署时创建数据库连接、创建项目所有表需要给ServletContextListener接口提供方法实现。