概述

  • servlet相关代码所在包:

javax.servlet

javax.servlet.http

  • 常用的功能模块

Servlet,filter,listener

  • 常用的相关类:

servletContext

servletConfig

HttpServletRequest

HttpServletResponse

HttpSession

Cookie

servlet

  • 定义

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求与服务器响应的中间层。

  • servlet生命周期

初始化阶段 init():

在servlet创建时调用的方法,在整个生命周期仅调用一次,那么servlet什么时候创建那?通常是两种情况:

1 在web.xml里面设置了 <load-on-startup>,则在servlet容器启动时创建,并根据该属性值决定创建的顺序,越小越先创建

2 如果没有设置,则是在用户第一次对该servlet发出请求时调用

在容器启动时创建的功能,通常可以被一些框架所利用,做路由控制和其他的全局操控,例如springmvc及jersey等框架

响应客户请求阶段 service(),

在客户请求时调用,可以通过多线程处理多个客户的并发请求,通常我们直接或者间接通过这个方法进行web业务逻辑的处理和输出

对doGet,doPost的处理其实多数也是内部调用service的结果

终止阶段 destory()

在servlet销毁时调用的方法,例如关闭servlet容器时。在整个生命周期仅调用一次

filter

  • 定义

能够对目标资源的请求和响应进行截取

一个web请求通常会经过一系列filter处理最后交由特定的servlet处理,当然filter自身也可以决定他是否向下把请求传递下去,如果不往下传,他也完全可以充当servlet的角色,例如我们常用的框架struts2.0或者是阿里的webx框架均是从filter实现的,并没有走到servlet中去

  • 生命周期:

初始化阶段 init(FilterConfig)

初始化filter,整个生命周期只初始化一次

过滤客户的请求阶段 dofilter

对客户的请求进行过滤,可以通过多线程处理多个客户的过滤操作,相关的过滤逻辑写在doFilter中

终止阶段 destory

在filter销毁时调用的方法,例如关闭servlet容器时。在整个生命周期仅调用一次

应用模式:(在filter-mapping中配置 dispatcher)

Request,forward, include,error

默认为request,则为用户实际发起的请求

forward,为服务器内部跳转的请求

include为 jsp中include包含的请求

error为客户请求出现异常时的处理

  • 如何在filter中使用spring注入的bean

方法一:org.springframework.web.filter.DelegatingFilterProxy

该方法为bean的一个代理,可以使用实际的bean来充当filter

方法二:使用原生api,获取ApplicationContext

WebApplicationContextUtils.getWebApplicationContext(servletContext);

listener:

  • 定义

在web项目中,我们有时候会需要监听一些对象的状态,当状态变化时触发相关的操作,这个时候listener就充当了监听器的角色

  • 分类:

简单可以分为事件监听器和生命周期监听器

凡是带有AttributeListener的监听器,都会在属性发生改变时触发,例如HttpSessionAttributeListener会在session的属性添加,修改,删除时触发

其他监听器,一般在该对象创建,销毁时触发,例如我们经常会用到的ServletContextListener监听器,他会在ServletContext创建和销毁时触发相应的方法,依托于此,spring这个框架得以在web项目中载入

常用的相关类:

  • servletContext ,servletConfig

这两个可以用来存储servlet 的环境变量,区别是一个是整个项目所有servlet公有的环境变量,一个是单个servlet独占的环境变量。

表现在web.xml上,一个可以是web-app 级别设置的变量(通过init-param),一个是servlet级别下面设置的参数

在编程中应用时,要注意虽然对于每个属性的获取和修改(如果有)操作都是线程安全的,但是组合起来使用却不一定时线程安全的。

  • HttpServletRequest 和 HttpServletResponse

这两个是用户请求和答复的封装类,通过这两个对象,描述用户的请求和回复。一些get,post参数的获取,session,cookie对象在用户请求的提取,都是通过这两个进行操控的

  • HttpSession 和 Cookie

这两个分别操控web项目中用户的session 和 cookie,需要注意的是session同样由于可以被并发访问,要注意读取和写入配合时的线程安全问题

转载于:https://www.cnblogs.com/wully/p/3305076.html

java web分享ppt大纲 -- servlet包相关推荐

  1. java web分享ppt大纲 -- servlet容器简介

    今天在公司分享了java web的ppt,把ppt大纲放在这里,希望可以帮助需要的人 servlet容器简介 定义 狭义上的,servlet容器为java Web应用提供运行时环境,负责管理servl ...

  2. Web页面或app等前端页面之Java Web的JSP、Servlet、Cookie、Session等技术小结

    Java Web学习,掌握JSP.Servlet.Cookie.Session等内容,使用JSTL进行数据展示完成实际应用. 2.3.1 XML基础 XML的用途.语法规则.语义约束.如何解析XML, ...

  3. javaweb课堂练习继承与重写怎么做_深入学习Java Web(一):深入了解Servlet

    本文转自与博客园一杯凉茶的博客. Servlet是一种古老的Java Web技术,在开发中除了祖传的项目,已经很少见到它的身影,但是作为Java Web的重要组成部分,Servlet还是值得深入学习的 ...

  4. 初学Java Web(3)——第一个Servlet

    这学期 Java Web 课程的第一节课就简短复习了一下 Java 的一些基础知识,所以觉得 Java 的基础知识还是很重要的,但当我想要去写一篇 Java 回顾的文章的时候发现很难,因为坑实在太多了 ...

  5. Idea创建简单Java Web项目并部署Servlet

    1.打开Idea,创建JAVA Web项目 在WEB-INF目录下创建classes和lib文件夹 配置编译输出路径为刚才新建的classes文件夹 配置依赖jar包加载路径 添加tomcat ser ...

  6. jsp项目在idea需要导入什么依赖_idea中的java web项目(添加jar包介绍)和java maven web项目目录结构...

    java web项目 web项目下web根目录名称是可以更改的 idea中新建java web项目,默认src为Sources Root,当然也可以手动改,在Sources Root下右键只能新建Pa ...

  7. Java Web 学习笔记3 Servlet生命周期

    https://www.bilibili.com/video/av31486135/?spm_id_from=333.788.videocard.0 环境:Eclipse 2019-06 (4.12. ...

  8. Java web(简单的servlet计算器)网页计算器

    代码分为两部分,经测试可用. 代码如下: 1.index.jsp <%@ page language="java" contentType="text/html&q ...

  9. java web 分享功能实现_微信开发(一)基于Wx-java的微信分享功能

    最近在做微信服务号开发,简单总结一下,便于自己学习积累和分享给大家: 环境介绍: Spring+ Spring MVC +Mybatis 开发语言: JAVA 微信公众平台的开发中,微信只公布了一个基 ...

  10. java web 导入数据库_关于JAVA、 JAVA Web项目导入数据库驱动包的问题

    导入jdbc驱动程序包其实有很多种方法,但是不同的导包方式有不同的含义, 1.给Tomcat导包(表示服务器可能要用到数据库,例如数据源),如果是MyEclipse集成Tomcat,显然是要用&quo ...

最新文章

  1. OpenCv java 颜色空间(9)
  2. windows10下使用wget命令(安装失败,请大家提意见)
  3. matlab中rat=1函数,matlab中的format rat是什么意思
  4. SAP HUM嵌套HU研习之HU03显示内层HU数据
  5. ASP.NET CORE RAZOR :向 Razor 页面添加验证
  6. 《高性能JavaScript》第六章 快速响应的用户界面
  7. 剑指offer--整数中1出现的次数
  8. python默认安装地址_python多版本下设置python3为默认的方法
  9. linux java环境变量设置
  10. oracle 结果集已耗尽_java.sql.SQLException: 结果集已耗尽
  11. 字符流的抽象类 java
  12. Java面试题:高并发环境下,jdk7 HashMap可能出现的致命问题。注意:是在jdk7与及以下版本
  13. [Ajax] 如何使用Ajax传递多个复选框的值
  14. 最小树——迪杰斯特拉算法
  15. 2019互联网月饼哪家强?阿里走情怀;百度最土豪;浪潮最高冷;抖音最创意 .........
  16. EllSeg训练实验记录代码解析技巧tips
  17. 软考数据库考试有题库吗_软考数据库系统工程师考试心得
  18. MFC调试工具——之BoundsChecker用法
  19. 回顾经典: AlexNet, CaffeNet — Winner of ILSVRC 2012
  20. 历史 微信开发者工具_微信开发者工具历史记录

热门文章

  1. 4.7 Observer(观察者)
  2. Linux RTC驱动模型分析
  3. 传输层协议(13):拥塞控制(2)
  4. Linux per-CPU实现分析
  5. linux du命令参数及用法详解---linux统计磁盘空间大小命令
  6. RTP包里面得到H.264数据和AAC数据的方法
  7. 用glew,glfw,FreeImage实现opengl学习笔记6坐标变换
  8. 比较x^y和y^x的大小
  9. 2021-09-30安装windows10+ubuntu双系统
  10. lol峡谷之巅区服务器位置,LOL: 论峡谷之巅和艾欧尼亚哪个区水平更高?