1.Servlet的声明周期
  容器如何创建Servlet对象,如何为Servlet对象分配资源,如何调用Servlet对象的方法来处理请求,以及如何销毁Servlet对象的过程.

  a.实例化
    容器调用Servlet的构造器,创建一个Servlet对象;
    a.接收到第一个关于Servlet的请求时,就会先创建一个当前这个Servlet;
    b.容器启动时,自动进行创建(在web.xml中添加设置).
      <load-on-startup>1</load-on-startup>
  b.初始化
    容器创建了Servlet对象后会立即调用init方法.
    一般来说,我们不需要写init方法,因为GenericServlet已经提供了init方法来实现(将容器传递过来的ServletConfig对象保存下来,并提供了getServletConfig方法获取该对象.)
    init方法一般只会调用一次.

    自定义初始化参数:
    <init-param>
    <param-name>name</param-name>
    <param-value>BoWen</param-value>
    </init-param>
  c.就绪
    正常执行的service方法.
  d.销毁
    使用destroy方法进行销毁.
    停止服务器时自动调用.

   

2.Servlet有关的核心接口和类:

  

3.ServletContext对象:
  容器启动后,会为每一个WEB应用创建唯一的一个符合ServletContext接口要求的对象,该对象就是Servlet上下文.

  特点:
    a.唯一性(一个web应用对应一个上下文对象)
    b.一直存在(只要容器不关闭,应用没有被卸载就一直存在)
    c.全局性

  可以用于存储一个全局的值.

  ServletContent是线程不安全的.

4.JSP基本概念:
  先有Servlet,由于里面包含了大量的输出语句,降低了页面展示功能的控制,jsp技术是对Servlet中输出语句的替换.
  一个jsp文件里面包含了大量的html代码和少量的java代码,最后还是会被容器变成servlet来执行.
  jsp:java server page(运行在服务器的动态页面)

5.JSP的开发
  a.新建一个以".jsp"为后缀的文件.
  b.添加内容:
    1)HTML(CSS,JS) 与编写HTML页面一致;
      作用:控制展示效果
    2)少量的java代码
      作用:控制页面
    * java代码段: <% %>
    * java表达式 <%= %> (替换为out.println)
    * java指令 <%@ %> 控制jsp文件转换成java是的一些设定
    * 隐含对象
      在jsp中可以直接使用的一些对象.例如:out,request,response等.
      在容器的转译环节中,容器会自动创建或者获取这些对象.

    

6.JSP的运行过程
  a.当请求发送至容器时,容器会先将jsp页面转换成(转译)一个java文件,当前这个类的类名和jsp页面是一样的,且会自动间接的继承HttpServlet;
  b.会自动加入Servlet常规的设定;
  c.然后将jsp页面中所有的html代码使用Out进行输出;
  d.将<% %>中的代码片段进行加载;
  e.再将下面的html代码进行Out输出,直至结尾,然后运行java文件;
  f.编译成class文件进行返回.
  第一次会比较慢,后续运行会越来越快.

7.转发:
  a.一个WEB组件将未完成的工作,通过容器转交给其他web组件的过程.
  b.转发的实现:
    1)绑定数据,request.setAttribute(String name,Object val)
    2)获取转发器: RequestDispatcher rd = request.getRequestDispatcher(url);
    3)转发: rd.forward(request,response);
  c.转发的特点:
    1)浏览器地址栏不改变;
    2)共享request和response对象;
    3)只能转发应用内部的.

8.异常处理
  a.编程式 : 使用try catch 进行捕获
  b.配置式 : 在web.xml中配置errorpage.

附录:
  依赖:通过传参的方式来影响另外一个类就是依赖.

最新文章

  1. JavaScript权威设计--事件处理介绍(简要学习笔记十七)
  2. PHP5.4开启zend opcache缓存
  3. cellular neural networks(CNN)原理以及应用
  4. 【Android】事件总线(解耦组件) EventBus 详解
  5. POJ 3461 Oulipo
  6. poj 1163 The Triangle
  7. $.extend abc
  8. 解决maven Generating project in Interactive mode卡死问题(转)
  9. 重载和覆盖的区别?(overload vs override)
  10. 【Swfit】Swift与OC两种语法写单例的区别
  11. 总结angular+ionic项目中的问题
  12. transform旋转,平移,缩放,扭曲 斜切
  13. SpringMVC简单项目配置
  14. SSH框架的搭建和测试(Spring + Struts2 + Hibernate)
  15. Confluence 6 安装补丁类文件
  16. 不正常退出vim产生swp文件的解决方法
  17. la 4015
  18. 【代码审计】XYHCMS V3.5文件上传漏洞分析
  19. Eclipse使用maven命令安装第三方jar包
  20. 自然语言处理--中文文本向量化counterVectorizer()

热门文章

  1. Elasticsearch 批处理
  2. VUE swiper.js引用使用轮播图
  3. HDU - 6043 KazaQ&#39;s Socks(找规律)
  4. 51nod 1191:消灭兔子 贪心+优先队列
  5. windows driver 创建线程
  6. Hibernate 的SessionFactory
  7. 驰骋BPM系统-表单引擎-流程引擎 2020年大换装
  8. 2、用优化器使loss最小
  9. (递归)Hanoi Tower
  10. 动手动脑 4 String 类