1.Servlet:

Servlet (Servler Applet),是使用 Java 语言编写的运行在服务器端的程序,用于处理服务器端应用程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容.通常来说,Servlet 是指所有实现了 Servlet 接口的类,Servlet 主要用于处理客户端传来的 HTTP请求,并返回一个响应,它能够处理的请求有 doGet () 和 doPost () 等,Servlet 由 Servlet 容器提供,Servlet 容器是指提供了 Servlet 功能的服务器(如Tomcat).Servlet本质:  必须运行在web容器上(tomcat)<1>狭义上的Servlet就是接口---里面规定Servlet的生命周期<2>广义上的servlet就是类,这个类(具体类)最终要实现接口Servlet

2.Tomcat服务器的好处:

tomcat是轻量级的web应用服务器, 他的好处主要有:(1)处理servlet的映射路径,解析Servlet(2)处理Servlet的生命周期(3)Tomcat服务器是开源的,底层是一种针对ip监听的TCP,有"数据共享"功能注意:Tomcat是web容器,内置了三大组件:<servlet: (重点)  filter:过滤器 (重点)  Listener:监听器>

2.1使用步骤:

1.导包  <servlet-api.jar(tomcat里面内置的) ---tomcat解压目录的lib中>2.编写servlet程序自定义一个类,继承自HttpServlet,重写 doGet()/doPost()
3.配置Servlet  <Web项目下的WEB-INF ,网站的配置文件 web.xml>//基本配置<servlet><servlet-name>MyServlet</servlet-name>   //serlvet的名称<servlet-class>包名.MyServlet</servlet-class>   //servlet的全限定名称</servlet>//映射配置<servlet-mapping><servlet-name>MyServlet</servlet-name> //serlvet的名称<url-pattern>/myServlet</url-pattern>  //映射路径</servlet-mapping>  

2.2servlet执行原理

1)用户发送请求到服务器 http://localhost:8080/web上下文路径/xxxServlet
2)web容器 解析路径URI的一部分: /xxxServletweb.xml文件中找是否存在映射路径为  /xxxServlet ----->找到你当前servlet-name的类名后面都是web容器完成的!3)获取到serlvet基本配置信息里面的servlet-class:当前这个类的全限定名称
4)反射技术:Class.forName("全限定名称")---->Class clazz
5)创建当前类实例:clazz.newInstace() --->Object obj
6)获取它的成员方法的Method类对:clazz.getDeclaredMethod("doXXX",HttpServletRequest.class,
HttpServletResponse.class) ;---->Method m
m.setAccessiable(true) ;//取消Java语言访问检查
7)调用方法
m.invoke(obj,request,response)

2.3servlet生命周期

web容器--->tomcat服务器完了对象的创建,访问servlet的时候创建,就创建一次,所以是单例的.1.init()方法:  初始化方法只执行一次2.service方法:  业务方法的入口,由于不断的发送get/Post请求,需要调用service方法多次3.destroy()方法:  servlet的销毁方法,servlet正常关闭时执行此方法

2.4servlet配置对象ServletConfig接口

Servlet的对象: ServletConfig代表每一个Servlet的配置对象,可以获取当前Servlet基本配置信息和当前这个servlet里面配置的初始化参数等.1.获取ServletConfig对象public ServletConfig getServletConfig();   <this.getServletConfig()>2.使用ServletConfig对象获取Servlet基本配置信息(1)获取servlet配置名称:  config.getServletName();(2)获取初始化参数<init-param><1>public String getInitParameter(String name):  一次只能获取一个初始化参数;通过初始化的参数名称获取它的参数值<2>public Enumeration<String> getInitParameterNames();  将所有的servlet的初始化参数名称都可以获取

2.5Servlet全局对象ServletContext接口

注意:每个工程下只有一个全局对象1.获取上下文路径每一个web项目---web application都有自己的上下文(以/字符开头但不以/结尾); web项目下书写路径的时候,将上下文路径带上,永远不会出现找不到页面404错误.方法1:<1>获取ServletContext对象this.getServletContext();<2>获取 Web 应用程序的上下文路径public String getContextPath()方法2:发送请求到服务器的时候,所有的请求参数都封装在了HttpServletRequest利用HttpServletRequest对象的方法:  public String getContextPath()request.getContextPath();2.可以获取全局参数<context-param><1>获取ServletContext对象this.getServletContext();<2>获取全局参数public String getInitParameter(String name):通过全局参数的名称获取参数值public java.util.Enumeration<E> getInitParameterNames():获取所有的全局参数名称

3.请求转发 (后台跳转前台页面 html/jsp....)

请求转发是一种在服务器内部的资源跳转方式

(1)使用步骤

<1>获取全局对象 ServletContext<2>通过全局对象获取请求转发器对象public RequestDispatcher getRequestDispatcher(String path)<3>通过RequestDispatcher对象进行转发public void forward(ServletRequest request, ServletResponse response):简化格式:request.getRequestDispatcher("/login.html").forward(request,response);

(2)请求转发的特点

<1>地址栏没有变化,始终访问后台地址<2>整个请求转发的过程中,两次请求request是相等的<3>WEB-INF下的资源文件直接访问不了,但是请求转发可以访问<4>请求转发只能访问当前项目下资源文件,不能跨工程访问外部资源

4.作为 "域对象"共享数据,在不同的servlet之间进行数据共享

域对象概念:

一个有作用范围的对象,可以在范围内共享数据

(1)四个域对象的范围:

PageContext类     pagecontext对象    仅仅在某一个jsp页面中有效HttpServletRequest接口        request对象    在一次请求中有效HttpSession接口      session对象      在一次会话中有效ServletContext接口     全局对象context对象/application    整个web application中有效(整个工程下)

(2)通用方法:

<1>给当前servletContext域对象中设置参数,将任何对象绑定在指定的属性上public void setAttribute(String name, Object object)<2>通过绑定的属性获取内容public Object getAttribute(String name)<3>将指定属性中绑定内容从域对象中删除public void removeAttribute(String name)

(3)使用步骤:

<1>访问当前Servlet,获取全局对象<2>存储数据public void setAttribute(String name, Object object)<3>从当前全局对象中(域对象),通过绑定的属性获取内容public Object getAttribute(String name)

Servlet_Jsp学习笔记:相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. jq修改iframe html代码,jQuery控制iFrame(实例代码)
  2. 解决mysql获取不到连接的问题
  3. service和thread的区别,何时用service,何时用thread?
  4. 第六章---机器学习与数据建模
  5. Django(part42)--限制IP请求次数
  6. linux rootfs编译进内核,九鼎x6818开发板笔记:uboot、kernel、rootfs编译和烧写
  7. JSP动作元素/活动元素
  8. 智慧水务建设纪实:数字可视化大屏+智能AI,凭啥这么强?
  9. 所有的物理引擎演示程序
  10. 95-30-050-java.util.ArrayList:Vector
  11. mm模块流程图 sap_SAP业务流程之MM
  12. 计算机系统定义硬盘1GB,硬盘容量是什么意思?常见的硬盘硬盘内部
  13. iPhone13全系列参数对比
  14. Kafka producer程序本地运行时发送信息失败解决方案
  15. 计算机中mpeg代表什么,mpg和mpeg格式的区别
  16. Unity3D 本地数据持久化记录存储
  17. Android 源码分析工具
  18. 《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Windows版 - 1]
  19. Java 碰壁小球游戏实例教程
  20. PIM SM模式下BSR与RP选举机制

热门文章

  1. vue 什么是渐进式 响应式 意思。Vue常用的指令。VUE:跨域设置。vue router 新窗口。$router.push。
  2. KDevelop详细Debug教程
  3. 【JAVA 求差集】
  4. Java项目:(小程序)前台+后台相结合在线点餐系统(spring+spring mvc+mybatis+layui+微信小程)
  5. 做好准备:独立游戏开发人员适用的 4P 营销理论
  6. cuda,显卡,pytorch三者配置相关知识--学习笔记
  7. js实现 动态密码的实现
  8. VMware Workstation实例二:单IP的虚拟机提供外网访问
  9. 后端面试知识点总结 数据库 mysql
  10. 夯实C++基础学习笔记