Servlet的生命周期及filter,servletRequest和servletResponse
序,Web应用中,Servlet和Filter是很重要的两个概念,一定要理解透彻。
一、Servlet类
继承自HttpServlet,HttpServlet是一个抽象类,主要包含的方法有init,service,destroy,doGet,doPost等
可以重写下面方法:
public void service(HttpServletRequest request,HttpServletResponse response)方法:响应客户端的所有请求
init方法:初始化
destroy方法:销毁
1 web.xml中配置Servlet
web.xml
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>hello.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/lookhello</url-pattern>
</servlet-mapping>
</web-app>
servlet3.0开始,配置Servlet支持注解方式
@WebServlet
asyncSupported 是否支持异步操作模式
displayName 指定该Servlet的显示名
initParams 为Serlvet配置参数
loadOnStartup 配置成load-on-startup的servlet
name servlet的名称
urlPattern/value url
2 访问Servlet的三种方式
(1)直接输入url访问
(2)利用Form表单提交时访问,getNumber对应了<url-pattern></url-pattern>的值,要记住必须去掉 "/"
<FORM action="getNumber" method="post">
</FORM>
(3)通过超链接访问Servlet,helpMeShow也对应了<url-pattern></url-pattern>的值,要记住必须去掉 "/"
<A href="helpMeShow"></A>
3 doGet和doPost方法重写
如果,请求的来源是Get或者Post,则会直接定向到doGet或者doPost方法,方法声明如下:
protected void doGet(HttpServletRequest req, HttpServletResponse resp);
protected void doPost(HttpServletRequest req, HttpServletResponse resp);
4 HttpServletResponse的重定向
response.sendRedirect(String location);
(1) location为jsp页面或者servlet
(2) 页面地址会变
(3) 无法将当前jsp页面或Servlet的HttpServletRequest对象转发给新的资源
(4) 浏览器会重新发起新的请求。这是HttpServletRequest对象不能转发给下个jsp页面或Servlet的原因。
5 RequestDispatcher转发
RequestDispatcher dispatcher = request.getRequestDispatcher(string path);
dispatcher.forward(request, response);
(1)location为jsp页面或者servlet
(2)页面地址不会变
(3)可以将当前jsp页面或Servlet的HttpServletRequest对象HttpServletResponse对象转发给新的资源
(4)浏览器不会重新发起新的请求
6 session
HttpServletRequest对象调用getSession方法获取用户的session对象
浏览器中的session对象定义从一个用户打开浏览器链接到服务器的某个web服务目录,到用户关闭浏览器离开服务器称做一个会话(session)。
HttpSession session = request.getSession();
(1)session对象的ID
string id = session.getId();
(2)session对象与URL重写
(3)session对象存储数据
public void setAttribute(key, value);
public voidgetAttribute(key);
public Enumeration<String> getAttributeNames();
public long getCreationTime();
public void session.removeAttribute(key);
(4)在Tag文件中使用session对象
(5)session对象的生存期限
public long getCreationTime();
public long getLastAccessedTime();
public int getMaxInactiveInterval();获取session最长的”发呆“时间(单位是秒)
public void setMaxInactiveInterval(int interval);设置session最长的”发呆“时间(单位是秒)
public boolean isNew();是否是新建的一个对象
public void invalidate();是session失效
(6)使用session设置时间间隔
限制用户等待若干”时间“后,再次使用该页面所提供的功能。不是session提供的功能,是利用session里保存时间信息来做到。
二、Filter接口
用处
1 在HttpServletRequset到达Servlet之前,拦截客户的HttpServletRequest
2 根据需要检查HttpServletRequset,也可以修改HttpServletRequset头和数据
3 在HttpServletResponse到达客户端之前,拦截HttpServletResponse
Filter有如下几个种类
1 用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求。
2 日志Filter:详细记录某些特殊的用户请求
3 负责解码的Filter:包括对非标准编码的请求解码
4 能改变XML内容的XSTL Filter等
5 Filter可负责拦截多个请求或响应;一个请求或响应也可被多个Filter拦截
实现在javax.servlet.Filter接口
需要重写三个方法
init方法:完成Filter的初始化
destroy方法:用于Filter销毁前,完成某些资源的回收
public void doFilter(servlerRequest request,servletResponse response,FilterChanin chain)方法:实现过滤功能
配置Filter
web.xml
<filter>
<filter-name></filter-name>
<filter-class></filter-class>
</filter>
<filter-mapping>
<filter-name></filter-name>
<url-pattern></url-pattern>
</filter-mapping>
Servlet的生命周期及filter,servletRequest和servletResponse的更多相关文章
- JSP Servlet WEB生命周期
[转载] JavaWeb的生命周期是由Servlet容器来控制的总的来说分为三个阶段1.启动阶段:加载web应用相关数据,创建ServletContext对象,对Filter和servlet进行初始化 ...
- servlet的生命周期与运行时的线程模型
第 14 章 生命周期 注意 讲一下servlet的生命周期与运行时的线程模型,对了解servlet的运行原理有所帮助,这样才能避免一些有冲突的设计. 如果你不满足以下任一条件,请继续阅读,否则请跳过 ...
- Servlet/JSP-01 Servlet及其生命周期
一.起步 1.新建一个类继承Servlet接口 public class HelloServlet implements Servlet { @Override public void destroy ...
- Servlet学习(一)——Servlet的生命周期、执行过程、配置
1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过jav ...
- Servlet的生命周期及工作原理
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...
- Servlet的生命周期+实现方式
1.Servlet的生命周期: (1)被创建: 默认情况下,Servlet第一次被访问时,被服务器创建.会调用init()方法. 一个 ...
- Servlet基础(二) Servlet的生命周期
Servlet基础(二) Servlet的生命周期 Servlet的生命周期可以分为三个阶段: 1.初始化阶段 2.响应客户请求阶段 3.终止阶段 Servlet的初始化阶段 在下列时刻Servlet ...
- Servlet相关接口和Servlet的生命周期
http://www.cnblogs.com/luotaoyeah/p/3860292.html Servlet相关接口和Servlet的生命周期 创建一个Servlet类最直接的方式是实现javax ...
- Servlet的生命周期?
Servlet何时被创建: 1,默认情况下,当WEB客户第一次请求访问某个Servlet的时候,WEB容器将创建这个Servlet的实例. 2,当web.xml文件中如果<servlet> ...
随机推荐
- ubuntu 安装编译nginx,并实现HLS推送,,可以实现摄像头直播
1.安装nginx的依赖包 zlib pcre openssl(可以源码安装也可以直接系统安装) sudo apt-get install libpcre3 libpcre3-dev zlib1g- ...
- 解决装系统选中的磁盘采用的是GPT分区形式
今天给服务器重装系统碰到的问题,记录一下 当时是按正常的操作:到了装系统选盘的时候是找不到盘符的,加载了raid驱动,然后顺利找到盘符,然后格式化了以前的C盘, 结果无法选中格式化后的C盘,无法下一步 ...
- Dropbox的可用Hosts文件
108.160.167.203 www.dropbox.com 108.160.167.203 dropbox.com 108.160.165.211 dl-client677.dropbox.com ...
- Object C学习笔记20-结构体
在学习Object C中的过程中,关于struct的资料貌似非常少,查阅了C方面的资料总结了一些学习心得! 一. 定义结构 结构体是一种数据类型的组合和数据抽象.结构体的定义语法如下: struct ...
- How to use VS2012 remote debug Windows Azure Cloud Services
Background: Windows Azure Cloud Services 可以在本地调试,使用Visual Studio 2012 + 模拟器 Emulator.但是模拟器的工作状态和环境和真 ...
- 转摘http://blog.csdn.net/hulihui/article/details/3351922#s6
译文:构建DataGridView的定制NumericUpDown单元格(Cell)和表格列(Column) 分类: DataGridView控件 2008-11-22 20:58 3555人阅读 评 ...
- 编写高质量代码改善C#程序的157个建议[为类型输出格式化字符串、实现浅拷贝和深拷贝、用dynamic来优化反射]
前言 本文已更新至http://www.cnblogs.com/aehyok/p/3624579.html .本文主要学习记录以下内容: 建议13.为类型输出格式化字符串 建议14.正确实现浅拷贝和深 ...
- 每天一个linux命令(7):cp 命令
cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在, 就会询问是否覆盖,不管你是否使用-i参数.但是如 ...
- Beta冲刺阶段
Beta冲刺阶段 现阶段工作安排以及问题解决 Struts2框架配置 网上下载Struts 2 的框架代码,按照书上教程进行配置 遇到的问题:书上配置过程和实际操作有出入,按照书上过程无法完成配置过程 ...
- java设计优化--观察者模式
观察者模式介绍 观察者模式是一种非常有用的设计模式,在软件系统中,当一个对象的行为依赖于另一个对象的状态时,观察者模式就非常有用.如果不适用观察者模式,而实现类似的功能,可能就需要另外启动一个线程不停 ...