Head first servlet and jsp学习笔记
学习中遇到的问题: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学习笔记相关推荐
- Servlet与JSP学习笔记(五) JSP核心(下)
同样可以参考菜鸟笔记. JSP标签 JSP除了包括以"<%"开头的JSP标记,还包括以"<jsp:"开头的JSP标签.实际上,前者的每种标记都有后者 ...
- 【学习笔记】JSP学习笔记(上)
我是灼灼,一只初学Java的大一金渐层. 向往余秀华和狄兰·托马斯的疯狂,时常沉溺于将情感以诗相寄:追逐过王尔德.王小波的文字,后陷于毛姆和斯蒂芬·金不可自拔:热爱文学的浪潮,白日梦到底却总在现实里清 ...
- Jsp学习笔记——第二天
Jsp学习打卡 Jsp学习笔记---第二天 Jsp笔记 第二天 一. 复习 二. 动作元素(包含,转发) 1. 包含动作 [重点] 2. 转发动作 [了解] 三. 隐含对象(内置对象) 1. 概念 2 ...
- JSP学习笔记(四十九):抛弃POI,使用iText生成Word文档
POI操作excel的确很优秀,操作word的功能却不敢令人恭维.我们可以利用iText生成rtf文档,扩展名使用doc即可. 使用iText生成rtf,除了iText的包外,还需要额外的一个支持rt ...
- 测试Servlet生命周期学习笔记
测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...
- 【Servlet】JSP学习-概念和运行原理
为什么需要JSP? 与HTML相比:根据后台的业务,可以动态输出HTML,网页内容是可以改变的. 与原生Servlet相比:不需要自己写输出语句resp.getWriter().write(" ...
- servlet和jsp学习总结
一.servletConfig部分 作用: ServletConfig 对象是Servlet的专属配置对象,每个Servlet都单独拥有一个ServletConfig对象,用来获取web.xml中的配 ...
- 《Servlet和JSP学习指南》一导读
前 言 欢迎你阅读本书,其内容涵盖了Servlet 3.0和JSP 2.2方面的技术. Java Servlet技术,或简称Servlet,是Java中用于开发Web应用程序的基本技术.Sun公司于1 ...
- JSP学习笔记1:JSP生命周期
2019独角兽企业重金招聘Python工程师标准>>> 1.编译成Servlet: 由JSP Container自动执行 2.初始化:对应jspInit方法 3.执行:对应_jspS ...
最新文章
- MS SQL Server和MySQL区别
- Linux中find常见用法示例
- 终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
- VHDL中的左移函数
- ASP.NET MVC的ContentResult
- 【转】TFS测试管理
- 【LeetCode 629】K个逆序对数组
- SQL- AND OR Order by INSERT INTO
- python正则表达式数字开头_Python正则表达式总结
- SR-IOV(Single Root I/O Virtualization):将PCIe共享给虚拟机的标准
- 公众号网页能调用银联支付么_支付宝新一代刷脸支付硬件发布,自带“轮子”,三天就能开发小程序...
- 20190818 思维导图简易教程
- 哈工大计算机系统大作业——程序人生
- 太宰治《人间失格》经典语录20句,句句引人深思
- flink任务监控- 利用Grafana和Prometheus实现实时计算平台任务监控
- 正余弦转化之诱导公式:“奇变偶不变、符号看象限”
- 运维工程师主要工作是做什么?
- UOJ 30 【CF Round #278】Tourists
- IOS应用程序启动显示白屏或黑屏
- 2015网易游戏校园招聘笔试题 研发岗
热门文章
- 计算机表示法是知识 表示法么,计算机三级考试关于IP地址知识点
- Chapter6_Vocoder
- 05.序列模型 W3.序列模型和注意力机制
- LeetCode 第 26 场双周赛(363/1971,前18.4%)
- 程序员面试金典 - 面试题 16.21. 交换和(哈希set)
- LeetCode 841. 钥匙和房间(DFS/BFS)
- 计算机水平考试ppt试卷,计算机等级考试一级笔试卷库.ppt
- 微信小程序中实现瀑布流布局和无限加载
- Java求最小数用哪个函数_在Java中使用小数进行计算的函数
- 全球仅3000人通过的TensorFlow开发人员认证到底有多香!