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的方法。

容器提供:

  通信支持:隐藏了servletweb服务器之间的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文解析|首个上榜科创板的机器人企业,江苏北人“闯关记”

来源:机器人大讲堂摘要:随着上交所公布了科创板首批受理上市申请的企业名单,这九家企业的每一家都被拿到放大镜下细细观察,评头论足。而其中,江苏北人作为登上科创版的首家机器人企业似乎受到的关注最多。江苏北人是一…

Matlab——绘制基础曲线

1、代码如下: close all;clear all;clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行 x0:0.02:10; y1sin(x); y22*sin(x); plot(x,y1,b*:,x,y2,r-); %设置颜色、标记和线型 axis([0 pi 0 2]); %设置坐标轴 title(正弦曲…

2018年中美独角兽研究报告

来源:前瞻产业研究院截至2018年12月31日,中国共有205家独角兽企业,占全球独角兽总量的48%,美国共有149家独角兽企业,占全球独角兽总量的35%。中美独角兽行业估值结构差异明显, 但总体看来,对于中…

Matlab——高斯白噪声处理

1、代码如下: close all;clear all;clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行 Iimread(eight.tif); Aimnoise(I,gaussian,0,0.05); %加入高斯白噪声 JA; M3; %设置叠加次数 Jim2double(J); Iim2…

中国首份自动驾驶路测报告:自主车企全面落后

来源:车云摘要:首份中国自动驾驶路测报告,透露着科技企业的野心和中国车企的无奈。近日,我国首份自动驾驶车辆道路测试年度报告出炉。这份由北京市发布的自动驾驶道路测试报告中,首次披露了自动驾驶相关企业&#xff0…

19个决定性时刻,2030年前,这些黑科技必将发生

来源:科技联盟技术中心摘要:从无人驾驶汽车到机器人工人,在我们熟悉所有这一切之前,未来正迎面走来。根据世界经济论坛全球议程理事会关于《未来软件与社会》的一份报告,到2025年前,很多新兴技术将会达到其…

推荐两本移动开发挺火的书

移动开发最好的入门书,而且例子实战特别多,是大学生的首选。 转载于:https://www.cnblogs.com/book2006/p/4487688.html

Matlab——图像缩放(插值法)

实验内容: 用双线性内插法实现位深度为8的灰度图像的缩放。 思路: 输入原图像以及缩放后图像的像素要求(宽度*高度),处理后输出新图像。 我是用matlab来实现scale(input_img,scale_size)函数的,输入图像路径…

情感计算综述

来源:人机与认知实验室自然的齐一性指未检验过的物体将在某些相关的方面与我们已经检验过的同类物体相似。情感是人类智能的重要组成部分,是穿越理性的一把利器,然而,情感计算这一方向能否可行?如同形式化常识一样能否…

Matlab——对比度拉伸

1、代码如下: close all;clear all;clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行 Iimread(pout.tif); Jimadjust(I,[0.2 0.5],[0 1]);%将0.2-0.5之间的灰度扩展到整个0-1范围,这种处理 对于强调感兴趣灰度区非常有用…

形态学——腐蚀

1、基本概念 腐蚀 是一种消除连通域的边界点,使边界向内收缩的处理。 例如: 注:图像画面上边框处不能被结构元素覆盖的部分可以保持原来的值不变,也可以置为背景。 2、设计思想 设计一个结构元素,结构元素的原点定…

从现在到未来50年,传感器将如何改变世界?

来源:资本实验室2011年,网景公司创始人与风险投资家马克安德森提出了非常具有创见,而且已经成为现实的观点:“软件正在吞噬世界”。到今天,如果把句子中的“软件”替换为“传感器”,这一观点同样适用。自传…

开发过程中编写的一些批处理

1.BuildRelease.bat 用于不开启VS直接编译、部署、创建和恢复快照 WindowsPhone APP,注册WindowsPhone手机。 进行了编译和部署的效果: BuildRelease.bat 1 echo off2 pushd "%~dp0"3 title Build Release4 set folder%CD%5 set MSBUILD%windi…

形态学——膨胀

1、基本概念 膨胀是将与目标区域的背景点合并到该目标物中,使目标物边界向外部扩张的处理。 例如: 2、设计思想 设计一个结构元素,结构元素的原点定位在背景像素上,判断是否覆盖有目标点,来确定是否该点被膨胀为目标…

剖析20世纪未来出行 这些畅想21世纪能成吗?

来源:popsci编译: 网易智能 (乐邦)近年来有关飞行汽车、超级高铁、喷气背包、无人驾驶汽车等新型交通工具的报道一直不绝于耳,但目前这些领域的产品似乎都还算不上真正切实可行。说好的移动出行未来在哪里呢?人们梦寐以求的这些交…

图像分割——迭代式阈值分割

1、算法步骤: (1)预定义两阈值之差dt (2)选定初始阈值T0(一般为图像的平均灰度) (3)用T分割图像为G1、G2两组,G1由灰度值大于T的所有像素组成,…

第一本用机器生成的书籍由施普林格•自然出版

Lithium-Ion BatteriesA Machine-Generated Summary of Current Research来源:Springer丨公众号摘要:这本创新的原型书引人入胜地概述了锂离子电池的最新研究。与德国法兰克福大学应用计算语言学实验室合作开发的一种算法自动编写了这本书。施普林格•自…

根据文件扩展名获取系统图标

1 /// <summary>2 /// 根据文件后缀名获取系统图标。3 /// </summary>4 /// <param name"extension"></param>5 /// <returns></returns>6 public static ImageSource GetIconByExt…

2019全球AI人才分布图:美国占44%,中国人才净流入

来源&#xff1a;网络大数据人工智能技术正在快速发展&#xff0c;而各国对于AI人才的需求是没有止境的&#xff1a;大家都在培养和争夺人才上做文章。前不久&#xff0c;教育部批准了国内35所大学的人工智能本科专业;加拿大正希望通过“全球技能战略签证”吸引国外人才流入。今…

区域生长算法原理及MATLAB实现

1. 基于区域生长算法的图像分割原理 数字图像分割算法一般是基于灰度值的两个基本特性之一&#xff1a;不连续性和相似性。前一种性质的应用途径是基于图像灰度的不连续变化分割图像&#xff0c;比如图像的边缘。第二种性质的主要应用途径是依据实现指定的准则将图像分割为相似…