ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JSP+Servlet+JavaBean

2019-08-19 20:53:41  阅读:148  来源: 互联网

标签:浏览器 请求 GET JSP 跳转 POST 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 销毁方法。

 

标签:浏览器,请求,GET,JSP,跳转,POST,Servlet,JavaBean
来源: https://www.cnblogs.com/strong-FE/p/11374143.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有