学习中遇到的问题:java基础不行,都忘光了。

主要是:继承,接口,多线程,IO。尤其是多线程,在分布式系统中应该使用的比较多

第一章:前言和体系结构

HTTP协议:

  TCP/IP的上层协议(应用层)。是一个请求/响应序列

  HTTP响应:HTTP首部信息+HTTP体(多数未HTML)

  HTTP请求:

      GET:请求获得一个页面,字数有限,参数转化为url地址

      POST:使用表单向服务器发送数据

url结构:略

web服务器:只提供静态网页,调用其他程序(cgi或servlet)提供动态网页

servlet:编写,部署,运行的小例子,P30

    按照书中方法,部署servlet。其中,首次部署失败,原因是书中xml可能与tomcat不匹配,把tomcat                      中examples的xml开头拷贝一下就解决了。

    通过这个例子,基本了解了servlet和tomcat的工作流程!

    servlet的问题:println html太糟糕了,因此引入jsp,页面设计人员只需要会用java对象即可!

第二章:高层体系结构

容器:Servlet没有main方法,管理servlet的程序成为web容器。

  Tomcat就是这样的容器。由容器向servlet提供请求和相应,容器调用servlet的方法。

容器提供:

  通信支持:隐藏了servlet与web服务器之间的API

  生命周期管理:实例化和销毁servlet实例

  多线程支持:

  用xml配置安全性

  把jsp翻译成servlet

  注:本质上还是计算机设计的层次化思想:只关心本层次的工作,使用底层的API,为上层提供API,极大的提高工作效率!

采用xml方式配置servlet

  *提高灵活性:不必或较少修改源码,便于维护

  *提高安全性:不能让用户知道真是路径

MVC:

  Servlet+jsp模式业务逻辑与表示分离,但又有密切联系,servlet中的业务逻辑只能处理web应用,不能重用到其他应用(如PC客户端,无线应用),MVC设计模式解决此问题!

  模型-视图-控制器把业务逻辑从servlet中抽取出来放到“模型”中,业务逻辑和表示清晰分离。

问题:每个Model的Controller都有大量重复代码,都要写在每一个servlet还是只需要一个servlet???

第三章:MVC实战

不使用IDE构建一个MVC架构的web应用

构建成功!

问题:servlet怎么把请求交给jsp并把页面转至jsp页面???request和response作用域是什么???

第四章:请求和响应

servlet流程:

  init()

  httpservlet中service()方法决定调用doGet还是doPost。

  他们是抽象方法,需要用户的servelt程序覆盖至少一个!

servlet生命周期中(可以理解为服务器程序开启到关闭)只有一个实例!采用多线程实现多用户访问。这里如何操作线程,共享数据,线程安全等都有tomcat的web容器完成,如果要深入理解,得先学习多线程!

*GET和POST的区别:

  GET参数你能放在请求行中,数据量小,暴露在url中 ,GET原则上应该是幂等的,同样的操作返回相同的结果,不对系统产生影响

  POST参数放在http体中,数据量大,是不幂等的,对系统产生影响!

*介绍HttpServletRequeset和HttpServletReponse的一些API

  Servlet处理IO,重定向,请求分派

第五章: 属性和监听者

*ServletConfig:可以在web.xml中配置参数

  通过设置request属性的方式可以把servlet的初始化参数传递给jsp

*ServlentContext:整个web-app的全局参数

*如果希望整个web应用有一个main函数,用于数据库 初始化等操作,即为监听者listener

Servlet提供ServletContextListener接口。

  在上下文初始化时得到通知

    从ServletContext中得到初始化参数

    使用初始化参数建立数据库链接

    把数据库存储为一个属性,是Web应用各个部分都能访问

  在上下文撤销时得到通知:关闭数据库链接

  除了上下文监听者,还有其他监听者!

*属性:

  属性建立了名称和对象的映射,在属性的作用域中的web应用中的其他程序就能通过名称使用属性的对象!

  3个接口可以设置属性:ServletContext,ServletRequest,HttpSession。

*线程安全:

  上下文属性不是线程安全的!

  同步一个servlet也不能阻止其他servlet和jsp访问属性,所以要对上下文加锁!

  会话也不是线程安全的,应为一个会话可能有多个请求。

  请求属性是线程安全的,应为一个请求一个线程,请求的生命周期就是线程的生命周期

第六章 会话管理

*会话用于保存同一客户多个请求的状态

*会话使用coikie识别客户id(用ip也不安全,因为可能多个用户用一个ip),如果客户禁用cookie,则使用url重写!

  url重写 :不是太明白

*删除会话,靠设置超时来完成,可以在DD中配置全局超时,也可以在程序中设置单独的超时

*cookie:服务器与客户之间交换信息

*会话监听

*会话迁移:在分布式系统中,Servlet,ServletConfig,ServletContext都在vm中复制,只有会话在vm中迁移(一个时刻,一个会话之存在于一个vm中)

第七章 使用jsp

jsp scriplet,page指令,jsp表达式

jsp声明:在类中定义,置于服务方法外!

jsp生命周期:首次访问时编译加载

初始化jsp:在DD中配置,可以重写jspInit方法

jsp属性:多一个pageContext,且pageContext包含其他属性的引用

jsp指令:

  page指令:定义页面特定的属性

  taglib指令:定义jsp可以使用的标记库

  include指令:主要用于重用页面

Scriptlet有害论:

  多数人认为java代码放入jsp是个不好的实践!

  难于维护,不应要求页面设计人员懂java

解决:EL表达式,详见下章,可以忽略

jsp动作:下章

转载于:https://www.cnblogs.com/cjrzh/p/4480523.html

Head first servlet and jsp学习笔记相关推荐

  1. Servlet与JSP学习笔记(五) JSP核心(下)

    同样可以参考菜鸟笔记. JSP标签 JSP除了包括以"<%"开头的JSP标记,还包括以"<jsp:"开头的JSP标签.实际上,前者的每种标记都有后者 ...

  2. 【学习笔记】JSP学习笔记(上)

    我是灼灼,一只初学Java的大一金渐层. 向往余秀华和狄兰·托马斯的疯狂,时常沉溺于将情感以诗相寄:追逐过王尔德.王小波的文字,后陷于毛姆和斯蒂芬·金不可自拔:热爱文学的浪潮,白日梦到底却总在现实里清 ...

  3. Jsp学习笔记——第二天

    Jsp学习打卡 Jsp学习笔记---第二天 Jsp笔记 第二天 一. 复习 二. 动作元素(包含,转发) 1. 包含动作 [重点] 2. 转发动作 [了解] 三. 隐含对象(内置对象) 1. 概念 2 ...

  4. JSP学习笔记(四十九):抛弃POI,使用iText生成Word文档

    POI操作excel的确很优秀,操作word的功能却不敢令人恭维.我们可以利用iText生成rtf文档,扩展名使用doc即可. 使用iText生成rtf,除了iText的包外,还需要额外的一个支持rt ...

  5. 测试Servlet生命周期学习笔记

    测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...

  6. 【Servlet】JSP学习-概念和运行原理

    为什么需要JSP? 与HTML相比:根据后台的业务,可以动态输出HTML,网页内容是可以改变的. 与原生Servlet相比:不需要自己写输出语句resp.getWriter().write(" ...

  7. servlet和jsp学习总结

    一.servletConfig部分 作用: ServletConfig 对象是Servlet的专属配置对象,每个Servlet都单独拥有一个ServletConfig对象,用来获取web.xml中的配 ...

  8. 《Servlet和JSP学习指南》一导读

    前 言 欢迎你阅读本书,其内容涵盖了Servlet 3.0和JSP 2.2方面的技术. Java Servlet技术,或简称Servlet,是Java中用于开发Web应用程序的基本技术.Sun公司于1 ...

  9. JSP学习笔记1:JSP生命周期

    2019独角兽企业重金招聘Python工程师标准>>> 1.编译成Servlet: 由JSP Container自动执行 2.初始化:对应jspInit方法 3.执行:对应_jspS ...

最新文章

  1. MS SQL Server和MySQL区别
  2. Linux中find常见用法示例
  3. 终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
  4. VHDL中的左移函数
  5. ASP.NET MVC的ContentResult
  6. 【转】TFS测试管理
  7. 【LeetCode 629】K个逆序对数组
  8. SQL- AND OR Order by INSERT INTO
  9. python正则表达式数字开头_Python正则表达式总结
  10. SR-IOV(Single Root I/O Virtualization):将PCIe共享给虚拟机的标准
  11. 公众号网页能调用银联支付么_支付宝新一代刷脸支付硬件发布,自带“轮子”,三天就能开发小程序...
  12. 20190818 思维导图简易教程
  13. 哈工大计算机系统大作业——程序人生
  14. 太宰治《人间失格》经典语录20句,句句引人深思
  15. flink任务监控- 利用Grafana和Prometheus实现实时计算平台任务监控
  16. 正余弦转化之诱导公式:“奇变偶不变、符号看象限”
  17. 运维工程师主要工作是做什么?
  18. UOJ 30 【CF Round #278】Tourists
  19. IOS应用程序启动显示白屏或黑屏
  20. 2015网易游戏校园招聘笔试题 研发岗

热门文章

  1. 计算机表示法是知识 表示法么,计算机三级考试关于IP地址知识点
  2. Chapter6_Vocoder
  3. 05.序列模型 W3.序列模型和注意力机制
  4. LeetCode 第 26 场双周赛(363/1971,前18.4%)
  5. 程序员面试金典 - 面试题 16.21. 交换和(哈希set)
  6. LeetCode 841. 钥匙和房间(DFS/BFS)
  7. 计算机水平考试ppt试卷,计算机等级考试一级笔试卷库.ppt
  8. 微信小程序中实现瀑布流布局和无限加载
  9. Java求最小数用哪个函数_在Java中使用小数进行计算的函数
  10. 全球仅3000人通过的TensorFlow开发人员认证到底有多香!