serverlet 区别_JSP与Serverlet的区别
jsp是html包含java
servlet是java包含html
jsp请求到tomcat---tomcat封装了jsp到servlet实现。
所以jsp请求时候,会自动创建session
而不用在servlet中request.getSession(true)
servlet是服务器端的程序,动态生成html页面发到客户端,但是这样
程序里有许多out.println(),java和html语言混在一起很乱。所以
后来推出了jsp。其实jsp就是servlet,每一个jsp在第一次运行时被
转换成servlet文件,再编译成.class来运行。
有了jsp,因此在MVC模式中servlet不再负责生成html页面,转而担任
控制程序逻辑的作用,控制jsp和javabean之间的流转。
-----------------------------------------------------------------
Servlet与Jsp的区别
* Servlet中没有内置对象,原来Jsp中的内置对象都是必须通过HttpServletRequest对象,或由
HttpServletResponse对象生成。
* 对于静态的HTML标签,Servlet都必须使用页面输出流诼行输出。
总之,Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,至于Jsp中的
Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service
方法用于生成对客户端的响应。
-Servlet的开发
Servlet通常称为服务器端小程序,用于处理和响应客户端的请求。
Servlet是个特殊的Java类,这个Java类必须继承HttpServlet。每个Servlet可以响应客户端的请求。
Servlet提供了不同的方法用于响应客户端请求。
* doGet : 用于响应客户端的get请求
* doPost : 用于响应客户端的post请求
* doPut : 用于响应客户端的put请求
* doDelete: 用于响应客户端的delete请求
* service(HttpServletRequest request, [可以响应客户端所有类型的请求]
HttpServletResponse response)
throws ServletException,java.io.IOException
其他方法
* init(Servletconfig config) : 创建Servlet实例时,调用的初始化方法。
* destory() : 销毁Servlet实例时,自动调用的资源回收方法。
-Servlet的配置
编译好的Servlet源文件并不能响应用户请求,还必须将其编译成class文件。将编译后的.class
文件放在WEB-INF/classes路径下,如果Servlet有包,则还应该将class文件放在对应的包路径下。
为了让Servlet能响应用户请求,还必须将Servlet配置在Web应用中。配置Servlet时,需要修改
web.xml文件
配置Servlet需要配置两个部分:
* 配置Servlet的名字:对应web.xml中的元素
* 配置Servlet的URL :对应web.xml中的元素
-Servlet的生命周期
Servlet在容器中运行,其实例的创建以及销毁等都不是由程序员决定的,而是由容器进行控制的。
Servlet的创建有两个选择:
*客户端请求对应的Servlet时,创建Servlet实例:大部分的Servlet都是这种Servlet
*Web应用启动时,立刻创建Servlet实例:即load-on-startup Servlet
Servlet的生命周期:
Begin
---> 创建实例完成
---> 初始化[init]
---> 响应客户端请求[doGet,doPost,service]
---> 被销毁[destroy] --->
End
-使用Servlet作为控制器
使用Servlet作为表现层的工作量太大,所有的HTML标签都需要使用页面输出流生成。
因此使用Servlet作为表现层有如下三个劣势:
* 开发效率低,所有的HTML标签都需使用页面输出流完成
* 不利于团队协作,美工人员无法参与Servlet界面的开发
* 程序可维护性差,即使修改一个按钮的标题,读需要重新编辑Java代码,并重新编译
使用Servlet的MVC的架构实现:
Jsp页面--> Servlet程序 --> Servlet根据条件转发新的Jsp页面
-load-on-startup Servlet
Servlet实例化的时机还有在Web应用启动时,即load-on-startup Servlet
应用启动时就启动的Servlet,通常是用于某些后台服务的Servlet,或者拦截很多请求的Servlet;
这种Servlet通常作为基础的Servlet使用,提供重要的后台服务。
web.xml中的配置:
在元素中增加元素
< load-on-startup>1
-访问Servlet的配置参数
配置Servlet时,还可以增加附加的配置参数,通过使用配置参数,可以实现更好的解除耦合,
避免将所有的参数以硬编码方式写在程序中。
访问Servlet配置参数要通过ServletConfig类的实例完成,ServletConfig提供如下方法:
java.lang.String getInitParameter(java.lang.String name) [获取初始化参数]
serverlet 区别_JSP与Serverlet的区别相关推荐
- r语言和python-Python和R语言的区别_Python与R的区别和联系
Python和R语言的区别_Python与R的区别和联系 可能问这个问题会很无脑,但是我还没有深入接触过Python,只是用过R语言.谁能帮我解答一下,这两者的主要区别呢?是否存在代替关系呢? 精彩解 ...
- java中的异常种类和区别以及处理机制和区别
java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...
- SparkMapReduce的区别、多线程多进程的区别
Spark&MapReduce的区别.多线程&多进程的区别 1.spark与hadoop区别: 2.Spark多线程运行, MR多进程运行 3.MR存在的问题: 4.线程和进程的区别: ...
- 现货跟期货有什么区别(现货和期货交易区别)
现货和期货的区别? 期货交易和现货交易的区别如下: 期货交易与现货交易有相同的地方,如都是一种交易方式.都是真正意义上的买卖.涉及商品所有权的转移等,不同的地方有以下几点: (1)买卖的直接对象不同. ...
- YV12和I420的区别 yuv420和yuv420p的区别
YV12和I420的区别 YV12和I420的区别 一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的 ...
- C#【中级篇】volatile关键字测试-在C#无区别,在Java有区别
文章目录 问题来源: 测试代码1(测试有无volatile的区别,在C#里无区别): 测试代码2:(ChangeMaker不延时,ChangeListener跟不上变化) 测试代码3:(ChangeM ...
- Element-ui和Element-Plus的区别_Element2和Element3的区别
Element-ui和Element-Plus的区别_Element2和Element3的区别 一.定义区别 Element-UI对应Element2:基本不支持手机版 Element,一套为开发者. ...
- 计算机控制和dcs控制的区别,dcs与plc有什么区别?dcs和plc的区别
dcs与plc有什么区别?dcs和plc的区别 在自动化领域,DCS和PLC是两个完全不同,又有些千丝万缕联系的概念,两者都是计算机技术和工业控制技术相结合的产物,我想从技术特点,发展方向等几个方面进 ...
- 原生js和jquery 遍历数组区别(forEach和each区别)
原生js和jquery 遍历数组区别(forEach和each区别) <script>var arr=[1,3,6,8,4];var obj={0:1,1:3,2:6,3:8,4:4};a ...
最新文章
- [Google API](5)筛选结果
- MySQL补充部分-SQL逻辑查询语句执行顺序
- linux qt libusb,Ubuntu15下Qt+libusb开发
- 【机器学习入门笔记9:TensorFlow四则运算】20190216
- Codeforces A - Bear and Prime 100(交互题)
- BootstrapTable自定义ajax方法
- mysql case默认_MySQL数据库架构和同步复制流程
- 微信小程序图片上传并展示
- 【大数据部落】银行信用数据SOM神经网络聚类实现
- IT人士易犯4大职业病 鼠标手居第一位
- php页面增加js代码,php刷新当前页面_php js实现页面数据刷新的代码
- 华为鸿蒙如何添加桌面小组件,万能小组件添加至桌面怎么弄?桌面添加应用方法图文详解...
- 如何在微信中直接下载APK
- python用海龟画圆的代码_python海龟画圆代码
- fastcgi php 进程用户 lighttpd,说说lighttpd的fastcgi
- 【mysql 练习题】查询和“01”号同学所学课程完全相同的其他同学的学号
- 向左还是向右,网约车聚合平台还是高精度地图数据收集站
- VR和AR已从概念转为真正走进人们生活的实际应用
- 百度这样搜索,可以去掉广告!
- PWM调光频率0.1-20KHz以内,共阳极控制高辉无频闪LED车灯调光电源驱动芯片方案FP7125/FP7122/FP7123
热门文章
- 如何进行并行编程:从并行矩阵运算开始
- 入门JAVA第六天 面向对象
- ios keychain 不被清理_手机软件 | iOS的清理器限免啦,赶紧入手!
- 多态性有哪些,怎么实现
- Excel-VBA:不同Sheet间的列、行复制
- 锁定计算机禁用,“关闭计算机锁定”的解决方案
- SwiftUI 小技巧之如何使用十六进制颜色
- linux查看edid信息,EDID 信息
- Android Framework源码阅读计划(2)——LocationManagerService.java
- Python小白练习之判断周几