Servlet知识点回顾
一、Servlet生命周期
服务器调用一个Servlet的8个步骤:
1、在服务器启动时,当Servlet被配置好或者被客户首次请求时,由服务器加载servlet,这一步相当于下列代码:
Class c=Class.forName("com.source.MyServlet");
2、服务器创建一个Servlet类的实例来为所有的请求服务。利用多线程,可以由单个servlet类的实例来服务于并行的请求,此步相当于下列代码:
Servlet s=(Servlet)c.newInstance();
3、服务器调用Servlet的init方法,用来对客户端的首次请求提供服务之前,完成一些初始化的工作。
4、服务器从包含在客户请求中的数据里构造一个ServletRequest或者HttpServletRequest对象,还构造一个ServletResponse或者HttpServletResponse对象来为返回响应提供方法。到底生成哪一种类型的对象,取决于Servlet是扩展了GenericServlet还是扩展了HttpServlet。
5、服务器调用Servlet的service方法,将步骤4中的对象作为参数传递进去。当并行的请求到来时,多个service方法能够同时运行在独立的线程中。
6、通过分析ServletRequestt或者HttpServletRequest对象,service方法处理客户端的请求,并用ServletResponse或者HttpServletResponse对象来响应。
7、如果服务器收到另一个对该Servlet的请求,处理过程从步骤5重复。
8、一旦Servlet容器检测到一个Servlet要被卸载(可能是因为停止Servlet容器或者web应用要被卸载掉),服务器会在所有的Servlet的service线程完成之后调用Servlet的destory方法。
二、doGet和doPost方法
1、通过表单提交到的servlet,看form的method是get还是post
2、通过链接<a href...>访问的servlet调用doGet方法
3、直接在浏览器地址栏键入的servlet地址调用也是doGet方法
get方式:
post方式:将各个表单字段元素及其数据作为http消息的实体内容发送给web服务器端,传送的数据量要比get方式传送的数据量大的多。
三、ServletContext接口
Servlet引擎为每个Web应用都会创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中。
由于一个Web应用程序中的所有Servlet都共享一个ServletContext对象,所以,ServletContext对象被称之为application对象。
功能:
- 获取web应用程序的初始化参数
- 记录日志
- application域范围的属性
- 访问资源文件
- 获取虚拟路径所映射的本地路径:getRealPath(String path);
- web应用程序之间的访问
- 其它方法
四、过滤器
通过Filter过滤器技术,对WEB服务器管理所有Web资源:例如对jsp、静态图片文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
1、Filter实现原理
Filter接口中有一个doFilter方法,当编写好Filter,并配置对哪个Web资源进行拦截后,web服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法。WEB服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChain对象是也提供了一个doFilter方法,根据需求决定是否调用此方法,调用该方法,则web服务器就会调用web资源的service方法。
2、开发步骤
编写Java类实现Filter接口,并实现其doFilter方法
在web.xml文件中使用<filter>和<filter-mapping>元素对编写的filter类进行注册,并设置它所拦截的资源。
注:在一个web应用中,可以开发多个filter,这些filter组合起来称为一个Filter链。web服务器根据在web.xml文件的注册顺序,决定先调用哪个Filter。
Servlet知识点回顾的更多相关文章
- 面试前的准备---C#知识点回顾----03
经过一天的奔波,喜忧参半,不细表 再回看下标题,C#知识点回顾 再看下内容,数据库3NF 原谅我这个标题党 今天继续回忆 1.HTTP中Post和Get区别 这忒简单了吧,大家是不是感觉到兴奋了,长舒 ...
- Servlet知识点大纲
这是我整理的Servlet知识点大纲,可按照它的顺序来学习-..具体的内容在我的博客中都可以找到!
- Spring知识点回顾(08)spring aware
Spring知识点回顾(08)spring aware BeanNameAware 获得容器中的bean名称 BeanFactoryAware 获得当前的bean factory Applicatio ...
- Spring知识点回顾(07)事件发布和监听
Spring知识点回顾(07)事件发布和监听 1.DemoEvent extends ApplicationEvent { public DemoEvent(Object source, String ...
- Spring知识点回顾(01)Java Config
Spring知识点回顾(01) 一.Java Config 1.服务和服务注入 2.Java 注解 :功能更强一些 3.测试验证 二.注解注入 1.服务和服务注入 2.配置加载 3.测试验证 三.总结 ...
- Java进阶(二十六)公司项目开发知识点回顾
公司项目开发知识点回顾 前言 "拿来主义"在某些时候并不是最佳选择,尤其是当自己遇到问题的时候,毫无头绪. 在一次实验过程中,需要实现数据库的CRUD操作.由于之前项目开发过程中, ...
- $Django Rest Framework-认证组件,权限组件 知识点回顾choices,on_delete
一 小知识点回顾 #orm class UserInfo (models.Model): id = models.AutoField (primary_key=True) name = models. ...
- django知识点回顾与补充
一.django知识点回顾 1.Cookie操作 - 客户端本地存储的键值对 2.Session操作 - 3.URL路由 - /index -> view.函数 4.MTV 5.View中返回方 ...
- Spring学习笔记:Spring整合Mybatis(mybatis-spring.jar)(一:知识点回顾)
一.知识点回顾 1.Mybatis环境搭建(DAO层的实现)(使用maven项目管理工具) 需要引入的依赖包: <!-- 单元测试junit --> <dependency> ...
随机推荐
- 简单理解Linux的Loopback接口
Linu支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通TCP/IP进行通信. A 类网络127就是为环回接口预留的 .根据惯例,大多数系统把I ...
- Java中有哪些语法糖?
不要你写汇编,Java句句是糖 不能同意上面的这句话,要说为什么,首先要定义下面要讲的“语法糖”. 语法糖指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,并没有给语言添加什么新东西,但是 ...
- 解决Matlab画图直接保存.eps格式而导致图不全的问题
Matlab确是一款简单方便的工具,使用此工具绘图也是我们常用的一种手段,可是如果我们想将此图片保存成.eps格式并应用于latex中,就有可能会出现.eps格式的图片显示不全的问题,这个着实让我们头 ...
- 出现System.web.mvc冲突的原因及解决方法CS0433
1.问题描述 CS0433:类型“System.Web.Mvc.WebViewPage<TModel>”同时存在于URL1和URL2中 2.解决方案 找到Web.config文件中的< ...
- jquery异步ajax与服务器通信过程中如何通过then方法链式传递多层数据
我们在有些地方可能需要对服务器返回的参数做多步处理,或者很多复杂的操作必须等到服务器返回结果之后才会执行,那么我们可以用链式调用的then方法让这里做到更加易于扩展,也更加容易分离出各个功能模块.基本 ...
- llvm pass
https://polly.llvm.org/docs/Architecture.html#polly-in-the-llvm-pass-pipeline
- 玩魔兽争霸无故退出 提示框显示"0x21101663"指令引用的"0x02704acc"内存该存不能为"read" 确定就会终止程序
20151002总结:下方法试过,没完全按照说的操作完,觉得有风险且那个read程序执行时间好长的,感觉有点干坏事的意思 ======================================= ...
- Linux 下hosts文件详解
1.主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号. 公网:IP地址不方便记忆,所以又有了域名.域名只是在公网( ...
- Service discovery
https://www.cnblogs.com/dirt2/p/5987067.html Use Assigned Numbers in the Service Discovery Protocol ...
- pandas DataFrame(2)-行列索引及值的获取
pandas DataFrame是二维的,所以,它既有列索引,又有行索引 上一篇里只介绍了列索引: import pandas as pd df = pd.DataFrame({'A': [0, 1, ...