Servlet

Servlet是用java语言编写的程序,执行在Webserver上,用来处理来自client的请求;通常会把处理的结果以HTML的形式返回,在client形成动态网页。事实上能够理解成一个中间层。负责连接前后。用三层理解的话相当于是业务逻辑层。

那么,Servlet有什么长处呢?Servlet执行在server中。能够扩展server的功能。能够和其它资源交互,从而生成返回client响应的内容,由于是用java编写的,所以能够跨平台;Servlet也非常安全,由于訪问Servlet的唯一途径就是通过server;Servlet使用也非常方便,仅仅要是符合Servlet规范的Servlet容器都能够执行Servlet。比方Tomcat啊等。

Servlet体系结构:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2xpeDFhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

Servlet的生命周期:

1.创建Servlet对象。通过server反射机制创建Servlet对象,第一次请求时才会创建。(默认)

2.调用Servlet对象的init()方法,初始化Servlet的信息。init()方法仅仅会在创建后被调用一次

3.响应请求,调用service()或者是doGet(),doPost()方法来处理请求。这些方法是执行的在多线程状态下的。

4.在长时间没有被调用或者是server关闭时,会调用destroy()方法来销毁Servlet对象。

Servlet容器

事实上,Servlet本身就是普通的java类。在须要的时候被实例化,在不须要的时候被销毁。而Servlet的实例化和销毁工作谁来负责呢?Servlet容器来完毕。所以用要Servlet,则Servlet容器不可缺少。Servlet在Servlet容器内执行。Servlet容器负责调度Servlet,并控制Servlet的生命周期。我们经常使用的有Tomcat等。。。

以下分析一下Servlet容器调用Servlet的流程;首先client使用浏览器提交对Servlet的调用的Get或Post请求,server接到请求后,假设Servlet是第一次调用就实例化这个Servlet。之后server调用Servlet的service()方法,Servlet产生动态回复内容;server发送回复内容给client的浏览器。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2xpeDFhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

配置文件

要想容器能正确识别Servlet。须要配置web.xml文件,以下我们看一下怎样配置:

一般格式:

<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>test.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

<servlet>标签内的name写Servlet的名称;class写Servlet的路径;<Servlet-mapping>标签帮助找到Servlet。url-pattern是訪问时的路径。Servlet-mapping与Servlet标签下的servlet-name要一致。

当然除了主要的配置。还能够进行其它配置,比方优先级、显示名称等等。

比較:

大家看到servlet能想到.NET中的什么呢?没错。好像是不太能想到什么。就勉强联想到一般处理程序吧。

当然他们有非常多不同的地方,但还是有类似的地方,事实上Servlet相当于是.NET中的一个详细的handler。能够对指定的请求进行处理。一般处理程序实现IHandler接口。

总结:

Servlet事实上就是执行在server端的小应用程序;Servlet容器负责调度Servlet,并控制着他们的生命周期。一般通过继承HttpServlet的方式来实现Servlet。依据client请求的方式,仅仅需重写doGet或doPost方法就可以,假设是Get提交须要在Servlet中重写doGet方法,假设是Post提交须要重写doPost方法;要使容器正确识别Servlet,则必须填写配置文件web.xml(tomcat7.0支持Servlet3.0注解定义,无需配置web.xml)。

ps:不足之处,敬请指正~~~

DRP——Servlet(一)的更多相关文章

  1. 【drp 9】Servlet生命周期

    一.基本概念 Servlet(Server Applet):全称Java Servlet,是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet ...

  2. 【DRP】-完成物料修改页面Servlet和JSP开发

    本系列博客内容为:做DRP系统中的常用功能. 该项目采用MVC架构 C(Controller)控制器,主要职责;1.取得表单参数:2.调用业务逻辑:3.转向页面 M(Model)模型,主要职责:1.业 ...

  3. Java Drp项目实战——Servlet

    由来 在解说Servlet之前须要先介绍一个词语CGI即Common GatewayInterface是通用网关接口的意思.它提供一个计算机程序同HTTP协议或者WWW服务的接口,也就是人机交互接口的 ...

  4. [drp 7]转发和重定向的区别

    导读:类似于response.sendRedirect(request.getContextPath()+"/servlet/item/SearchItemServlet");和r ...

  5. DRP PK 牛腩新闻发布系统

    一.JSP与ASP (1)Web服务器的支持:大多数通用的Web服务器如:Apache.Netscape和Microsoft IIS都支持JSP页面,只有微软本身的Microsoft IIS和Pers ...

  6. DRP学习进化模型

    曾经做的就是按照思维做的三级制,这是U .B ,D .坐在坐,开始增加设计模式,增加sqlhelper ,逐渐了解系统可分为只三层,层的,随着学习的不断深入明确了"为什么会出现分层" ...

  7. DRP项目总结

    DRP项目在6号就已经完工了,总共花费了一个半月的时间,从对java的懵懵懂懂,到现在的略微熟悉,对整个java web开发的认知,清晰了很多.涉及到的web项目开发的必备知识,也都有一次得到锻炼和提 ...

  8. 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)

    在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便. 首先来简单的学习一下MVC的基础知识, ...

  9. JAVA Drp项目实战—— Unable to compile class for JSP 一波三折

    交代下背景.电脑系统是64位的,用的是64位的Tomcat.安装是32位的Myeclipse10,java环境也是32位的.Tomcat在開始启动时会报这样一个错误,"Can't load ...

随机推荐

  1. 使用zabbix监控nginx

    在zabbix agentd客户端上,查看nginx是否加载了--with-http_stub_status_module.因为zabbix监控nginx是根据 nginx的Stub Status模块 ...

  2. (Problem 15)Lattice paths

    Starting in the top left corner of a 22 grid, and only being able to move to the right and down, the ...

  3. 笔记之Cyclone IV第一卷第四章Cyclone IV器件中的嵌入式乘法器

    嵌入式乘法器可以配置成一个 18 × 18 乘法器,或者配置成两个 9 × 9 乘法器.对于那些大于18 × 18 的乘法运算 ,Quartus II 软件会将多个嵌入式乘法器模块级联在一起.虽然没有 ...

  4. Week5(10月10日):国庆之后,让我们整装期待元旦吧

    Part I:提问  =========================== 1.要将“Hello, Admin",从控制器传递到视图,该如何操作? (1)使用ViewData (2)使用V ...

  5. Qt对话框_模态/非模态

    对话框在Qt GUI应用程序中有着广泛的用途,对话框有模态.非模态两种情况. 对于参数选择的对话框,一般用模态对话框:对于显示或查看某些内容的对话框,一般用非模态对话框. 对话框类QDialog,官方 ...

  6. 批量的单向的ssh 认证

    <pre name="code" class="python">if [ ! $# -eq 2 ] ;then echo "请输入用户密码 ...

  7. 还是回文(dp)

    还是回文 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 判断回文串很简单,把字符串变成回文串也不难.现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一个字 ...

  8. ONOS系统架构演进,实现高可用性解决方案

    上一篇文章<ONOS高可用性和可扩展性实现初探>讲到了ONOS系统架构在高可用.可扩展方面技术概况,提到了系统在分布式集群中怎样保证数据的一致性.在数据终于一致性方面,ONOS採用了Gos ...

  9. opencv鼠标绘制直线 C++版

    因为需要在图片上标记直线,所以从网上找了相应的参考资料.但大多都是c风格的,于是自己就写了一个c++风格的. opencv2.4.11,win8.1,vs2013 #include <cv.h& ...

  10. ZJOI2013 防守战线

    题目 战线可以看作一个长度为\(n\)的序列,现在需要在这个序列上建塔来防守敌兵,在序列第\(i\)号位置上建一座塔有\(C_i\)的花费,且一个位置可以建任意多的塔,费用累加计算.有\(m\)个区间 ...