首页 > JSP+Servlet+JavaBean

JSP+Servlet+JavaBean

JSP相当于在HTML页面中加上Java代码,一般在<body>标签中放入主要代码。
在JSP里用<%...%>把Java代码包含起来的。

 

Servlet的生命周期:
①被服务器实例化后,容器运行init方法。
②当请求(Request)到达时,运行service方法,service方法会运行与请求对应的doXXX方法(doGet,doPost)等。
③当服务器决定将实例销毁时,调用destroy方法。

 

问:当多个请求同时到达时,会启动一个还是多个Servlet来接收请求?

Servlet是“单实例多线程”。
①可以有多个Servlet来处理一个业务请求。
②对于同一业务请求只有一个实例,加载时会调用各自的init方法。
③同一个Servlet可以同时处理多个客户端的请求。

 问:Servlet是线程安全的吗?如何保证线程安全?

(1)在Servlet里负责保存上下文的ServletContext和负责处理Session对象的HttpSession是线程不安全的。处理请求的ServletRequest是线程安全的。
(2)保证线程安全的做法:①SingleThreadModel接口(已弃用)②在Servlet中使用局部变量,保证有单属于本Servlet的对象。③加锁,形成互斥访问。(很少用到)④用synchronized加以保护,但要尽量缩小保护的范围。

 

JavaBean的特征:
(1)JavaBean类必须具备一个没有参数的构造函数。
(2)JavaBean内的属性都应定义为私有的,这些属性通过get和set方法被外部调用。

 

MVC架构的工作流程:
View发起请求,请求被Controller转发给合适的处理程序,Model接收请求后,调用DAO层,得到结果返回给View。

 

问:Java Servlet中forward和redirect有何区别?

在设计Web应用时,需要把一个系统进行结构化设计,即按照模块化进行划分,让不同的Servlet实现不同的功能。

例如让其中一个Servlet负责接收用户的请求,另一个Servlet负责处理用户的请求。

为了实现这种程序的模块化,就需要保证在不同的Servlet之间可以相互跳转,而Servlet中主要有两种跳转的方式:forward方式和redirect方式。forward:服务器内部的重定向,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,而客户端并不知道,因此在客户端的地址栏中不会显示转向后的地址,还是原来的地址。redirect:客户端的重定向,是完全的跳转,即客户端浏览器会获取到跳转后的地址,然后重新发送请求,因此浏览器中显示跳转后的地址。

同时,这种方式比forward方式多了一次网络请求,因此效率要低于forward方式。

问:Servlet有哪些方法可以实现页面的跳转?

在web应用服务中,经常会面对不同SERVLET之间的跳转,目前我们可以通过以下两种方式实现:
1.RequestDispatcher.forward()
2.ServletResponse.sendRedirect()

 

问:GET和POST的区别

GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。GET在浏览器回退时是无害的,POST会再次提交请求。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET只接受ASCII字符的参数的数据类型,而POST没有限制
Servlet生命周期:

①首先加载servlet的class,实例化servlet。

②然后初始化servlet调用init()的方法,接着调用服务的service的方法处理doGet和doPost方法。

③最后是我的还有容器关闭时候调用destroy 销毁方法。

 

转载于:https://www.cnblogs.com/strong-FE/p/11374143.html

更多相关:

  • 限流器是后台服务中十分重要的组件,在实际的业务场景中使用居多,其设计在微服务、网关、和一些后台服务中会经常遇到。限流器的作用是用来限制其请求的速率,保护后台响应服务,以免服务过载导致服务不可用现象出现。限流器的实现方法有很多种,例如 Token Bucket、滑动窗口法、Leaky Bucket等。在 Golang 库中官方给我们提供...

  • HTTP和HTTPSHTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。SSL(Secure...

  •     注意!!!(修改于2020年7月18日)   在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据 报错截图如下 报错内容: {"message": "Network Error","name": "Error","stack": "Err...

  • 一.  GET_POST与开发者工具 1.      浏览器的基本工作规则 浏览器请求访问服务器,服务器返回数据 (1)    请求的格式 GET:长度不能大于2k参数明文显示在地址栏,不保密,通常用在查询请求 POST:长度可以很大,参数写在请求体内,相对保密,通常用是提交内容的请求 上图中a.com是域名,x...

  •   BS架构的优势 1.数据库之负责数据库的管理 2.Web服务器负责业务逻辑的处理 3.浏览器提供操作界面 4.不需要单独安装客户端 5.开发相对于CS简单,客户端和服务器的通信模块都是使用标准的HTTP协议进行通信 CS架构 1.数据库作为Server,使用数据库特定的编程语言编写业务逻辑 2.客户端提供操作界面和少量的业务逻辑处...

  • 来源:公众号|计算机视觉工坊(系投稿)作者:仲夏夜之星「3D视觉工坊」技术交流群已经成立,目前大约有12000人,方向主要涉及3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、...

  • 点云PCL免费知识星球,点云论文速读。文章:Real-Time LIDAR-Based Urban Road and Sidewalk Detection for Autonomous Vehicles作者:Ern˝o Horváth  , Claudiu Pozna ,and Miklós Unger编译:点云PCL代码:http...

  • 文章:Semantic Histogram Based Graph Matching for Real-Time Multi-Robot Global Localization in Large Scale Environment作者:Xiyue Guo, Junjie Hu, Junfeng Chen, Fuqin Deng, T...

  • 点云PCL免费知识星球,点云论文速读。文章:Robust Place Recognition using an Imaging Lidar作者:Tixiao Shan, Brendan Englot, Fabio Duarte, Carlo Ratti, and Daniela Rus编译:点云PCL(ICRA 2021)开源代码:...

  • 文章:A Survey of Calibration Methods for Optical See-Through Head-Mounted Displays作者:Jens Grubert , Yuta Itoh, Kenneth Moser编译:点云PCL本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PD...