servlet工作原理的本质是什么,它是如何工作的

Servlet的原理是什么_百度经验
&&&&&&互联网Servlet的原理是什么?
百度经验:1、Servlet执行过程用户请求一个Servlet,Servlet容器自动构建请求和响应对象,然后执行Servlet的service()方法,该方法会接收请求和响应对象,通过响应对象将处理结果发送给用户。2、怎么请求Servlet用户通过一个URL来请求一个Servlet。3、怎么处理请求当用户请求Servlet时,容器构建ServletRequest对象request,并传递给Servlet的Service()方法,Service通过request对象获取到请求的参数,然后,根据参数做出相应的处理,通过ServletResponse对象来向客户端发送响应内容。4、怎么响应客户端当用户请求一个Servlet时候,容器会自动创建ServletResponse对象response,然后通过response对象向客户端发送响应内容。5、Servlet的生命周期a、Servlet的class经过部署,并启动容器b、(当请求该Servlet时候)容器自动创建Servlet对象xServlet,然后xServlet调用其init()方法。到此,Servlet初始化结束。c、一旦客户端请求该Servlet,xServlet自动调用service()来处理请求。d、一旦很长时间都没有请求该Servlet(或者说该Servlet超时),则容器会将xServlet从容器中清除掉。二、Servlet接口API1、接口五个方法2、Servlet的分支3、Servlet的请求对象ServletRequest4、Servlet的响应对象ServletResponse5、Http相关的Servlet三、总结1、Servlet是一种规范,称为Servlet规范,是J2EE规范的一部分。2、Servlet规范定义了Servlet相关的一组接口、其实现是由Servlet容器开发商来实现,类似于JDBC驱动。3、Servlet的也是类,其对象是通过Servlet容器来创建,Servlet只能在Servlet容器中运行。打个比方说:容器是青山,Servlet是松柏。4、当客户端请求Servlet时,容器会做两件事情:a、Servlet容器会将请求自动组装为一个ServletRequest对象,并自动产生一个ServletResponse对象,这两个对象一并传递给Servlet的service(request,response)方法。b、在该Servlet对象上调用service(request,response)方法来处理并响应用户的请求。5、用户无法直接调用Servlet的方法,也无法去创建Servlet的实例。经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。投票(5)已投票(5)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验27471620热门杂志第1期你不知道的iPad技巧3599次分享第1期win7电脑那些事6299次分享第2期新人玩转百度经验1270次分享第1期Win8.1实用小技巧2578次分享第1期小白装大神1768次分享◆请扫描分享到朋友圈servlet的本质是什么,它是如何工作的? - 知乎495被浏览79926分享邀请回答426 条评论分享收藏感谢收起servlet的本质是什么,它是如何工作的? - 知乎495被浏览79926分享邀请回答82 条评论分享收藏感谢收起JSP与Servlet的本质上的区别
一看到标题,有没有人就能够马上说出这两者本质上的区别呢
本质上没区别
--- 共有 1 条评论 ---
Jsp extends servlet
JSP和Servlet就像是大姑娘和小媳妇。从本质上看都是female。JSP是大姑娘,老喜欢在外面疯疯癫癫,喜欢臭美;Servlet就是小媳妇,躲在后面对老公发招。但是大姑娘被访问之后就变成小媳妇了。呵呵呵
先有鸡还是先有蛋?我也不懂。但是先有Servlet,然后sun借鉴asp才出的jsp,一个jsp容器自动将jsp解析成servlet交给web容器运行。本质区别???
本质没区别,都是代码
jsp在第一次访问时需要编译,servlet已经编译好
jsp修改方便,修改后web容器自动编译,servlet需要自已编译,如果是jar包的话,还要打包,发布(拷贝)等(ant mvn等工具可自动完成,但你必须手工运行这些工具)
本质的区别就是没有区别,jsp就是servlet。
区别大了。呵呵。生命周期一样么?创建开销一样么?
引用来自“崔钢”的答案区别大了。呵呵。生命周期一样么?创建开销一样么?生命周期还真一样,创建开销还真一样,因为jsp也是被servlet容器的jsp编译器编译成servlet运行的。本质jsp就是servlet
本质上没区别
引用来自“呆瓜”的答案引用来自“崔钢”的答案区别大了。呵呵。生命周期一样么?创建开销一样么?生命周期还真一样,创建开销还真一样,因为jsp也是被servlet容器的jsp编译器编译成servlet运行的。本质jsp就是servlet
还是有区别的:servlet的本质是什么,它是如何工作的? - 知乎495被浏览79926分享邀请回答1129 条评论分享收藏感谢收起http://........
之类的命令敲了回车键之后浏览器就会向你指定的Tomcat发送http请求的,这个请求会被Tomcat的Web服务器的这个模块接收,web服务器处理之后呢会转发给Tomcat的容器部分进行处理,他会帮助ie浏览器找到这个请求想要找到的servlet,这时呢在容器里面的行为要么是在容器内再向数据库发送操作数据库的命令,要么呢直接返回结果 ,其实就是静态的html页面,当页面被web服务器模块接收到之后呢,他会将静态页面返回给那个发送请求的那个ie浏览器,ie浏览器得到这个结果之后呢,就会自己显示出来,然后用户就能看到结果,所以可以将我们的结果分成三个部分,第一个部分是ie浏览器,第二个呢是Tomcat模块,第三个呢就是数据库模块。其实开发servlet有三种方法,一种是实现servlet接口,一种是继承GernericServlet
还有一种是继承HttpServlet。
为什么会有三种方法呢?因为这个servlet这个技术并不是说一出现之后就是成熟的,他经历过这三个发展的阶段,因此它具有这三种方式,其实在最先前是实现servlet接口方法来开发的,后面的时候技术人员发现这样写似乎不太方便,所以又发展出来一个叫做继承GenericServlet的方法来实现,后来又发现这个也不是很方便,所以呢又发展出来了继承 HttpServevlet方式来实现为了使学习更加深刻,我会把三种方式都实现下。Servlet开发是很简单的事情特别是用一些高级工具来开发的话,特别是像JBuilder来实现的话只要点一下就行了,但很遗憾的这样的高级工具他会隐藏太多的细节,这样的话就不利于我们的学习,特别是部署之类的他就给你全写了,那么你就不好学到他servlet的底层运行机制和原理,为了让大家理解的更为深刻,我还是先用JCreater来实现开发Servlet,后面当然会用到eclipse 或者JBuilder这些高级工具来开发。我们先过一点苦日子,然后再过一点好日子,这样的话知识更加扎实一点了。下面我们就来真正的来开发Servlet,首先用什么方法呢?用实现接口的方法来实现在这里呢会引入servlet的生命周期这个特点。这第一个servlet非常简单,就是写一个Hello World 在浏览器中输出。教程依照先简单,再难,再综合的顺序进行。下面是Servlet的开发流程。1:首先在Tomcat的主目录下的webapp下面建立一个WEB-INF文件夹 2:然后再WEB-INF文件夹下建立一个web.xml文件,记录网站的配置信息
建立classes子文件夹 存放你的servlet
当然这个操作你可以自己完成 也可以在root目录下拷贝一份 大家可以看到 这个地方传递过来了一个信息,什么信息呢?对于Tomcat来讲,你所有的这些网站,页面对他来讲都是web应用,他看来就是web应用,就是在webapp下面建立我们的网站。比如建立一个文件夹叫做mywebsite,接下来文件夹中放什么东西呢,我们要放的就是WEB-INF文件夹,在里面放置web.xml文件以及classes文件夹和lib文件夹。WEB-INF这个要注意大小写,要注意大小写要一模一样才行的,名字都要一样才行的。在这个文件夹下进行上述两种操作,你可能会去问,为什么要这样做呢?这个倒是没有办法的事情 因为这就是规范。classes当然是存servlet用的 ,那个lib文件夹用来做什么呢?用来存放这个应用汇用到的一些jar包,比如数据库啦之类的,文件的下载要用的包都放在lib里面去,就是lib库。//这是我的第一个Servlet 使用实现Servlet接口的方式来开发
package com.
import java.io.IOE
import java.io.PrintW
import javax.servlet.S
import javax.servlet.ServletC
import javax.servlet.ServletE
import javax.servlet.ServletR
import javax.servlet.ServletR
public class Hello implements Servlet
// 该函数用于初始化该servlet, 类似于我们的类的构造函数
// 该函数只是会被调用一次, 当用户第一次访问该servlet的时候被调用
public void init(ServletConfig parm1) throws ServletException
System.out.println("init it !");
// 用于得到servlet配置文件 与生命周期无关
public ServletConfig getServletConfig()
// service 函数用于处理业务逻辑
// 程序员应当把业务逻辑代码写在这里
// 该函数在用户每次访问servlet的时候都会被调用
// ServletRequest 对象用于获得客户端信息,ServletResponse 对象用于向客户端返回信息(客户端可以理解为浏览器)
// servelt jsp b/s
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
System.out.println("service it");
PrintWriter pw = res.getWriter();
pw.println("hello world");
public String getServletInfo()
return " ";
// 销毁servlet实例(释放内存)
// 1 reload 该servlet(webApp)
// 2 关闭Tomcat 或者说 关机之后 都会调用这个函数
public void destroy()
System.out.println("destory it");
以上就是实现servlet接口的方式来开发servlet方式来代码实现 其实以上方法都是回调函数
都是会在特定的时候特定的环境下自动调用的其中iinit() 和 destroy() 都是只会调用一次的
会在每一次都会被调用的到现在还没有完成
因为如果你想让别人访问到你的wervlet 的话 你就要部署你servlet下面讲授关于部署servlet的步骤(在web.xml 进行配置设置)如果你要问为什么进行部署,那么还是一句话,规范。&servlet&
&!--给你的servlet起名字,任意的--&
&servlet-name&hello_servlet&/servlet-name&
&!--指明servlet的路径,包名+类名 注意类名后不能加上java--&
&servlet-class&com.tsinghua.Hello&/servlet-class&
&/servlet&
&servlet-mapping&
&!--mapping
自然就是映射了
于是乎 这个同上,一致--&
&servlet-name&hello_servlet&/servlet-name&
&!--这是浏览器中输入的访问该servlet的url 任意的--&
&url-pattern&/sp&/url-pattern&
&/servlet-mapping&
用下面的控制台命令编译Hello.java之后,我们就可以启动Tomcat来进行访问了启动Tomcat的bin目录下的startup.bat之后,启动Tomcat的bin目录下的startup.bat之后,输入http://127.0.0.1:8080/guowuxin/sp
多次访问之后就能体会到Servlet的生命周期访问结果22523 条评论分享收藏感谢收起查看更多回答}

我要回帖

更多关于 servlet工作原理解析 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信