当前位置: 首页 > news >正文

Servlet总结

1,什么是Servlet
2,Servlet有什么作用
3,Servlet的生命周期
4,Servlet怎么处理一个请求
5,Servlet与JSP有什么区别
6,Servlet里的cookie技术
7,Servlet里的过滤器
8,Servlet里的监听器

 


一,什么是Servlet?


Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),

 

是按照Servlet规范编写的一个Java类。



二,Servlet有什么作用?


主要是处理客户端的请求并将其结果发送到客户端。



三,Servlet的生命周期?


Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。

初始化阶段:


1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。


2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。


3,Servlet容器创建一个servlet对象。


4,Servlet容器调用servlet对象的init方法进行初始化。



运行阶段:


当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。

 

然后调用service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的

 

信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和

 

servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。

 


销毁阶段:


当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,

 

同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放

 

servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。



在这里该注意的地方:


在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户

 

端访问的次数

 

 


四,Servlet怎么处理一个请求?


当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。

 

在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象

 

传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传

 

给用户。

 


五,Servlet与JSP有什么区别?


1,jsp经编译后就是servlet,也可以说jsp等于servlet。


2,jsp更擅长页面(表现)。servlet更擅长逻辑编辑。 (最核心的区别)。


3,在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,

 

JSP位于MVC设计模式的视图层,而Servlet位于控制层。

 


六,Servlet里的cookie技术?


cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段,是由Netscape公司开发出来的。


cookie技术的好处:


    1,Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。


    2,Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径。
    
创建一个cookie

Java代码  收藏代码

  1. //里面的两个参数分别是cookie的名和cookie的值  

  2.   

  3. response.addCookie(new Cookie("abc","10000000"));  

 

使用cookie

Java代码  收藏代码

  1. Cookie[] cook =request.getCookies();//用一个Cookie数组来接收  

  2.   

  3. for(int j=0;j<cook.length;j++){//通过循环来打印Cookie  

  4.   

  5.         cook[j].getName()://取cookie的名    

  6.         cook[j].getValue()://去cookie的值  

  7.   

  8. }  

 


七,Servlet里的过滤器?


过滤器的主要作用


1,任何系统或网站都要判断用户是否登录。


2,网络聊天系统或论坛,功能是过滤非法文字


3,统一解决编码


(2)怎么创建一个过滤器:

 

1,生成一个普通的class类,实现Filter接口(javax.servlet.Filter;)。


2,重写接口里面的三个方法:init,doFilter,destroy。


3,然后在web.xml配置过滤器。



八,Servlet里的监听器?


监听器的作用:自动执行一些操作。

三种servlet监听器:

 

对request的监听。对session的监听。对application的监听。

怎么创建一个session监听器:


1,生成一个普通的class类,如果是对session的监听,则实现HttpSessionListener。


2,然后重写里面的五个方法:

 

Java代码  收藏代码

  1. public void sessionCreated(HttpSessionEvent arg0) {} // 创建  

  2.   

  3. public void sessionDestroyed(HttpSessionEvent arg0) {} // 销毁  

  4.   

  5. public void attributeAdded(HttpSessionEvent arg0) {} // 增加  

  6.   

  7. public void attributeRemoved(HttpSessionEvent arg0) {} // 删除  

  8.   

  9. public void attributeReplaced(HttpSessionEvent arg0) {} // 替换  

本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1880680

相关文章:

  • js读取xml文档,并实现简单分页
  • linux 查找僵死进程,并杀死进程
  • 过滤并替换页面html输出
  • Goldengate实现在线数据迁移
  • 新浪就微博受病毒攻击事件致歉
  • 11g新特性:Note raised when explain plan for create index
  • 在asp.net中如何获取asp:DataList中子控件asp:RadioButtonList的值
  • Laputa在cnblogs
  • sk_buff封装和解封装网络数据包的过程详解
  • android 调用系统摄像头
  • _shared_pool_reserved_pct or shared_pool_reserved_size with ASMM
  • jQuery选择器详解[转]
  • linux 下安装tomcat
  • 上传表单的样式模拟
  • CentOS 6.8无法启动图形界面
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • orm2 中文文档 3.1 模型属性
  • spring security oauth2 password授权模式
  • spring-boot List转Page
  • 安装python包到指定虚拟环境
  • 构建二叉树进行数值数组的去重及优化
  • 聚类分析——Kmeans
  • 使用agvtool更改app version/build
  • 使用parted解决大于2T的磁盘分区
  • 问题之ssh中Host key verification failed的解决
  • 一个SAP顾问在美国的这些年
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • Java数据解析之JSON
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #if 1...#endif
  • (AngularJS)Angular 控制器之间通信初探
  • (done) 两个矩阵 “相似” 是什么意思?
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读40-45)图像描述1
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)JAVA中的堆栈
  • (转)mysql使用Navicat 导出和导入数据库
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .CSS-hover 的解释
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core 项目指定SDK版本
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • @TableLogic注解说明,以及对增删改查的影响