关于后端:超详细的Servlet实战教程10分钟带你了解servlet

2次阅读

共计 4971 个字符,预计需要花费 13 分钟才能阅读完成。

Servlet 是什么?

servlet 是 Server Applet 的简称,翻译过去就是服务程序。

好吧,这么说你可能还是不太懂,简略地讲,这个 servlet 是运行在服务器上的一个小程序,用来解决服务器申请的.进一步讲,咱们晓得,个别的网页程序,是由咱们通过浏览器拜访来实现的,在这个过程中,咱们的浏览器发送拜访申请,服务器接管申请,并对浏览器的申请作出相应的解决.这就是咱们相熟的 B / S 模型(浏览器-服务器模型).而 servlet 就是对申请作出解决的组件,运行于反对 Java 的应用服务器中.

Java Servlet 能够应用所有的 Java API,Java 能做的事件,Servlet 都能做。

能源节点的 Servlet 教程对 Servlet 技术的整体框架进行了解说,并附带了实例演示,须要具备 Java 根底,servlet 学习材料点下边链接:

servlet 实战视频教程

https://www.bilibili.com/vide…

servlet 材料下载

http://www.bjpowernode.com/?s…

Servlet 只是古老的 CGI 技术的替代品,间接应用 Servle 开发还是很麻烦,所以 Java 起初又对 Servlet 进行了降级,推出了 JSP 技术。JSP 只是对 Servlet 加了一层壳,JSP 通过编译后还是 Servlet。

Servlet 的开发流程

广义上讲,servlet 是 servlet 是 java 语言实现的一个类,所以咱们就要依据这个类进行相应的扩大开发.

开发流程如下:

  • 编写一个 java 类,继承 HttpServlet 类
  • 重写 HttpServlet 类的 doGet 办法和 doPost 办法
  • 配置 web.xml 文件,或者应用注解对 servlet 进行配置

开发流程就是这个样子,咱们先来看一下最初一个步骤.

# 对 servlet 进行配置

你肯定在想,如果我写了好几个 servlet,然而前端发送申请的时候,到底会把申请发送给哪个 servlet 呢?我在输出某个地址的时候,到底是由哪个 servlet 进行响应的呢?

这时候 servlet 的配置就显得尤为重要.对 servlet 的配置指定了对前端申请解决到底是通过哪个 servlet.

配置 servlet 一共有两种形式,一种是应用 web.xml 文件配置,另外一种就是应用注解配置,上面咱们来详解介绍这两种配置形式

应用 web.xml 文件配置

留神,servlet 的配置内容要写在 webapp 外部

<webapp>
<!-- 配置一个 servlet -->
  <!-- servlet 的配置 -->
  <servlet>
      <!-- servlet 的外部名称,自定义。尽量有意义 -->
      <servlet-name>MyServlet</servlet-name>
      <!-- servlet 的类全名:包名 + 简略类名 -->
      <servlet-class>cn.roobtyan.servlet.FirstServlet</servlet-class>
  </servlet>
  
  
  <!-- servlet 的映射配置 -->
  <servlet-mapping>
      <!-- servlet 的外部名称,肯定要和下面的外部名称保持一致!!-->
      <servlet-name>MyServlet</servlet-name>
      <!-- servlet 的映射门路(拜访 servlet 的名称)-->
      <url-pattern>/first</url-pattern>
  </servlet-mapping>
</webapp>

当你拜访 /first 的时候,服务器天然就会把申请交给 MyServlet 进行解决了.

应用@注解配置

新版本的 servlet 反对应用注解进行配置,这样极大的简便了开发.

注解配置如下:

@WebServlet(name = "LoginServlet",urlPatterns = {"/login"})
public class LoginServlet extends HttpServlet {}

而后,你在拜访 /login 的时候,服务器同样就会将解决交由 LoginServlet 进行解决了.

这样是不是十分爽?(-)

实际上,注解的作用和 web.xml 的作用是雷同的,个别都是举荐应用注解的形式进行开发,这样非常简便,可读性也变的更加弱小.

你肯定会好奇,如下:

<url-pattern>/first<url-pattern>
和
@WebServlet(name = "LoginServlet",urlPatterns = {"/login"})

这外面的 url 可不可以不这么准确的配置,用一种含糊匹配的形式,就是我拜访某种规定的门路的时候,对立调用一个 servlet,这当然是能够的了.

这就波及到映射门路的问题了

Servlet 命名

Servlet 的命名能够看出 sun 命名的特点,如 Applet 示意小应用程序;Scriptlet = Script + Applet,示意小脚本程序;同样 Servlet = Service + Applet,示意小服务程序。

  • 生命周期编辑
  • 客户端申请该 Servlet;
  • 加载 Servlet 类到内存;
  • 实例化并调用 init()办法初始化该 Servlet;
  • service()(依据申请办法不同调用 doGet() 或者 doPost(),此外还有 doHead()、doPut()、doTrace()、doDelete()、doOptions());
  • destroy()。
  • 加载和实例化 Servlet。这项操作个别是动静执行的。然而,Server 通常会提供一个治理的选项,用于在 Server 启动时强制装载和初始化特定的 Servlet。

比照

与 Applet 的比拟

相似之处:

• 它们不是独立的应用程序,没有 main() 办法。

• 它们不是由用户或程序员调用,而是由另外一个应用程序 (容器) 调用。

• 它们都有一个生存周期,蕴含 init() 和 destroy() 办法。

不同之处:

• Applet 具备很好的图形界面(AWT),与浏览器一起,在客户端运行。

• Servlet 则没有图形界面,运行在服务器端。

与 CGI 比拟

与传统的 CGI 和许多其余相似 CGI 的技术相比,Java Servlet 具备更高的效率,更容易应用,性能更弱小,具备更好的可移植性,更节俭投资。在将来的技术倒退过程中,Servlet 有可能彻底取代 CGI。

在传统的 CGI 中,每个申请都要启动一个新的过程,如果 CGI 程序自身的执行工夫较短,启动过程所须要的开销很可能反而超过理论执行工夫。而在 Servlet 中,每个申请由一个轻量级的 Java 线程解决(而不是重量级的操作系统过程)。

在传统 CGI 中,如果有 N 个并发的对同一 CGI 程序的申请,则该 CGI 程序的代码在内存中反复装载了 N 次;而对于 Servlet,解决申请的是 N 个线程,只须要一份 Servlet 类代码。在性能优化方面,Servlet 也比 CGI 有着更多的抉择。

• 不便

Servlet 提供了大量的实用工具例程,例如主动地解析和解码 HTML 表单数据、读取和设置 HTTP 头、解决 Cookie、跟踪会话状态等。

• 功能强大

在 Servlet 中,许多应用传统 CGI 程序很难实现的工作都能够轻松地实现。例如,Servlet 可能间接和 Web 服务器交互,而一般的 CGI 程序不能。Servlet 还可能在各个程序之间共享数据,使得数据库连接池之类的性能很容易实现。

• 可移植性好

Servlet 用 Java 编写,Servlet API 具备欠缺的规范。因而,为 IPlanet Enterprise Server 写的 Servlet 无需任何本质上的改变即可移植到 Apache、MicrosoftIIS 或者 WebStar。简直所有的支流服务器都间接或通过插件反对 Servlet。

• 节俭投资

不仅有许多便宜甚至收费的 Web 服务器可供集体或小规模网站应用,而且对于现有的服务器,如果它不反对 Servlet 的话,要加上这部分性能也往往是收费的(或只须要极少的投资)。

与 JSP 比拟

JSP 和 Servlet 的区别到底在利用上有哪些体现,很多人搞不清楚。简略的说,SUN 首先倒退出 Servlet,其性能比拟强劲,体系设计也很先进,只是,它输入 HTML 语句还是采纳了老的 CGI 形式,是一句一句输入,所以,编写和批改 HTML 十分不不便。

Java Server Pages(JSP)是一种实现一般动态 HTML 和动静 HTML 混合编码的技术,JSP 并没有减少任何实质上不能用 Servlet 实现的性能。然而,在 JSP 中编写动态 HTML 更加不便,不用再用 println 语 句来输入每一行 HTML 代码。更重要的是,借助内容和外观的拆散,页面制作中不同性质的工作能够不便地离开:比方,由页面设计者进行 HTML 设计,同时留出供 Servlet 程序员插入动静内容的空间。

起初 SUN 推出了相似于 ASP 的镶嵌型的 JSP,把 JSP TAG 镶嵌到 HTML 语句中,这样,就大大简化和不便了网页的设计和批改。新型的网络语言如 ASP,PHP,JSP 都是镶嵌型的语言。这是 JSP 和 Servlet 区别的运作原理层面。

从网络三层构造的角度看 JSP 和 Servlet 的区别,一个网络我的项目起码分三层:data layer(数据层),business layer(业务层),presentation layer(体现层)。当然也能够更简单。Servlet 用来写 business layer 是很弱小的,然而对于写 presentation layer 就很不不便。JSP 则次要是为了不便写 presentation layer 而设计的。当然也能够写 business layer。习惯了 ASP,PHP,CGI 的敌人,常常会不盲目的把 presentation layer 和 business layer 混在一起。

据 SUN 本人的举荐,JSP 中应该仅仅寄存与 presentation layer 无关的货色,也就是说,只放输入 HTML 网页的局部。而所有的数据计算,数据分析,数据库联结解决,通通是属于 business layer,应该放在 Java BEANS 中。通过 JSP 调用 Java BEANS,实现两层的整合。

微软前不久推出的 DNA 技术,是 ASP+COM/DCOM 技术。与 J SP+BEANS 齐全相似,所有的 presentation layer 由 ASP 实现,所有的 business layer 由 COM/DCOM 实现。通过调用,实现整合。

采纳这些组件技术单纯的因为 ASP/JSP 语言是十分低效率执行的,如果呈现大量用户点击,纯 SCRIPT 语言很快就达到了他的性能下限,而组件技术就能大幅度提高性能下限,放慢执行速度。

另外一方面,纯 SCRIPT 语言将 presentation layer 和 business layer 混在一起,造成批改不不便,并且代码不能反复利用。如果想批改一个中央,常常会牵涉到十几页 code,采纳组件技术就只改选件就能够了。

综上所述,Servlet 是一个晚期的不欠缺的产品,写 business layer 很好,写 presentation layer 就很臭,并且两层混淆。

所以,推出 JSP+BEAN,用 JSP 写 presentation layer,用 BEAN 写 business layer。SUN 本人的意思也是未来用 JSP 代替 Servlet。这是技术更新方面 JSP 和 Servlet 的区别。

可是,这不是说,学了 Servlet 没用,实际上,你还是应该从 Servlet 入门,再上 JSP,再上 JSP+BEAN。

强调的是:学了 JSP,不会用 Java BEAN 并进行整合,等于没学。大家多花点力量在 JSP+BEAN 上。

咱们能够看到,当 ASP+COM 和 JSP+BEAN 都采纳组件技术后,所有的组件都是先进行编译,并驻留内存,而后疾速执行。所以,大家常常吹的 Servlet/JSP 先编译驻内存后执行的速度劣势就没有了。

反之,ASP+COM+IIS+NT 严密整合,应该会有较大的速度劣势出现。而且,ASP+COM+IIS+NT 开发效率十分高,尽管 bug 很多。

那么,为什么还用 JSP+BEAN?因为 Java 切实前途远大。操作系统群雄并起,应用软件的开发商必然要找一个通用开发语言进行开发,Java 一统天下的机会就到了。

简略剖析了一下 JSP 和 Servlet 的区别和 Java Web 开发方面的倒退。随着机器速度越来越快,Java 的速度劣势很快就能够被克服。

正文完
 0