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的区别相关推荐

  1. r语言和python-Python和R语言的区别_Python与R的区别和联系

    Python和R语言的区别_Python与R的区别和联系 可能问这个问题会很无脑,但是我还没有深入接触过Python,只是用过R语言.谁能帮我解答一下,这两者的主要区别呢?是否存在代替关系呢? 精彩解 ...

  2. java中的异常种类和区别以及处理机制和区别

    java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...

  3. SparkMapReduce的区别、多线程多进程的区别

    Spark&MapReduce的区别.多线程&多进程的区别 1.spark与hadoop区别: 2.Spark多线程运行, MR多进程运行 3.MR存在的问题: 4.线程和进程的区别: ...

  4. 现货跟期货有什么区别(现货和期货交易区别)

    现货和期货的区别? 期货交易和现货交易的区别如下: 期货交易与现货交易有相同的地方,如都是一种交易方式.都是真正意义上的买卖.涉及商品所有权的转移等,不同的地方有以下几点: (1)买卖的直接对象不同. ...

  5. YV12和I420的区别 yuv420和yuv420p的区别

    YV12和I420的区别   YV12和I420的区别        一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的 ...

  6. C#【中级篇】volatile关键字测试-在C#无区别,在Java有区别

    文章目录 问题来源: 测试代码1(测试有无volatile的区别,在C#里无区别): 测试代码2:(ChangeMaker不延时,ChangeListener跟不上变化) 测试代码3:(ChangeM ...

  7. Element-ui和Element-Plus的区别_Element2和Element3的区别

    Element-ui和Element-Plus的区别_Element2和Element3的区别 一.定义区别 Element-UI对应Element2:基本不支持手机版 Element,一套为开发者. ...

  8. 计算机控制和dcs控制的区别,dcs与plc有什么区别?dcs和plc的区别

    dcs与plc有什么区别?dcs和plc的区别 在自动化领域,DCS和PLC是两个完全不同,又有些千丝万缕联系的概念,两者都是计算机技术和工业控制技术相结合的产物,我想从技术特点,发展方向等几个方面进 ...

  9. 原生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 ...

最新文章

  1. [Google API](5)筛选结果
  2. MySQL补充部分-SQL逻辑查询语句执行顺序
  3. linux qt libusb,Ubuntu15下Qt+libusb开发
  4. 【机器学习入门笔记9:TensorFlow四则运算】20190216
  5. Codeforces A - Bear and Prime 100(交互题)
  6. BootstrapTable自定义ajax方法
  7. mysql case默认_MySQL数据库架构和同步复制流程
  8. 微信小程序图片上传并展示
  9. 【大数据部落】银行信用数据SOM神经网络聚类实现
  10. IT人士易犯4大职业病 鼠标手居第一位
  11. php页面增加js代码,php刷新当前页面_php js实现页面数据刷新的代码
  12. 华为鸿蒙如何添加桌面小组件,万能小组件添加至桌面怎么弄?桌面添加应用方法图文详解...
  13. 如何在微信中直接下载APK
  14. python用海龟画圆的代码_python海龟画圆代码
  15. fastcgi php 进程用户 lighttpd,说说lighttpd的fastcgi
  16. 【mysql 练习题】查询和“01”号同学所学课程完全相同的其他同学的学号
  17. 向左还是向右,网约车聚合平台还是高精度地图数据收集站
  18. VR和AR已从概念转为真正走进人们生活的实际应用
  19. 百度这样搜索,可以去掉广告!
  20. PWM调光频率0.1-20KHz以内,共阳极控制高辉无频闪LED车灯调光电源驱动芯片方案FP7125/FP7122/FP7123

热门文章

  1. 如何进行并行编程:从并行矩阵运算开始
  2. 入门JAVA第六天 面向对象
  3. ios keychain 不被清理_手机软件 | iOS的清理器限免啦,赶紧入手!
  4. 多态性有哪些,怎么实现
  5. Excel-VBA:不同Sheet间的列、行复制
  6. 锁定计算机禁用,“关闭计算机锁定”的解决方案
  7. SwiftUI 小技巧之如何使用十六进制颜色
  8. linux查看edid信息,EDID 信息
  9. Android Framework源码阅读计划(2)——LocationManagerService.java
  10. Python小白练习之判断周几