1 背景概述

在近期的公司项目开发的过程中,笔者初步学习Servlet的开发、配置与使用,本文主要介绍了Servlet的相关概念以及优势说明并附上笔者开发简单样例。今天将笔者学习的心得总结出来与大家分享,希望能对大家有所帮助。

2 Servlet简介

2.1 基本概念

Servlet是一个供其他Java程序调用的java类,比如tomcat服务器,它不能独自运行,它的运行由servlet引擎来控制和调度。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

2.2 生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

  • Servlet 通过调用 init () 方法进行初始化。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 通过调用 destroy() 方法终止(结束)。
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

3 优势说明

3.1 CGI 比较

  • 性能优化

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

  • 可移植性

Servlet 用 Java 编写,Servlet API具有完善的标准。因此,为 IPlanet Enterprise Server 写的 Servlet 无需任何实质上的改动即可移植到 Apache、MicrosoftIIS 或者 WebStar。几乎所有的主流服务器都直接或通过插件支持 Servlet。

  • 功能强大

在Servlet中,许多使用传统 CGI 程序很难完成的任务都可以轻松地完成。例如,Servlet 能够直接和 Web服务器交互,而普通的 CGI 程序不能。Servlet 还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

3.2 JSP 比较

  • JVM识别性

Jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)。

  • 逻辑控制

Jsp更擅长表现于页面显示,Servlet更擅长于逻辑控制。

  • 内置对象

Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.

  • 客户端响应

Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应

4 简单样例

基于DP创建servlet以及对应的文件配置实现用户修改密码的功能

4.1 样例创建

在数通畅联(agileai.com)官网资源分享中下载对应的介质(AEAI DP应用开发平台)

启动服务器HotServer

打开设计器创建项目

  1. 创建项目填写项目名称以及主包名
  2. 填写服务器地址端口(HotServer端口为6060),填写服务器用户名以及密码
  3. 点击“测试连接”按钮
  4. 服务器连接成功后点击“Next”按钮

  • 输入数据库名称以及用户名密码,点击“测试连接”按钮
  • 数据库连接成功后点击“初始化数据”,弹出如下界面:

  • 点击“Finish”按钮完成工程的创建

4.2 功能代码

  • RedirateServlet

用于点击后重定向至修改密码页面,功能代码如下:

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String jspName = "/jsp/uui/ModifyUserPassword.jsp";

try {

this.getServletContext().getRequestDispatcher(jspName).forward(request,response);

} catch (ServletException | IOException e) {

e.printStackTrace();

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request,response);

}

  • UpdatePwdServlet

用于修改密码页面提交后,实现密码修改的功能,主要功能代码如下:

1) 修改密码

2) 校验密码

4.3 文件配置

在web.xml中添加创建的Servlet的配置

<servlet>

<servlet-name>UpdatePwdServlet</servlet-name>

<servlet-class>com.agileai.text.servlet.UpdatePwdServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>UpdatePwdServlet</servlet-name>

<url-pattern>/updatepwd</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>RedirateServlet</servlet-name>

<servlet-class>com.agileai.text.servlet.RedirateServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>RedirateServlet</servlet-name>

<url-pattern>/redirate</url-pattern>

</servlet-mapping>

4.4 演示效果

浏览器输入http://localhost:6060/servlet访问效果如下:

点击修改密码,跳转到修改密码页面:

填写用户名,密码、新密码后,修改成功页面如下:

点击登录。跳转到登录页面,输入用户名以及新的密码进行登录

如果原密码输入错误将跳转至错误提示页面

5 个人总结

笔者作为数通畅联的一名技术人员在项目中初步接触Servlet,学习Servlet的开发与配置,并开发简单的样例与大家分享,笔者认为Servet虽然可以多线程响应,但每开发一个Servlet都需要进行对应的配置很是繁琐。如果希望了解数通畅联更多的产品信息欢迎访问数通畅联官网(agileai.com)。

6 附件及说明

附件为servlet样例工程,导入AEAI DP部署后即可运行使用。附加及文档地址:https://pan.baidu.com/s/1pLbfcON

Servlet初步认知的更多相关文章

  1. JAVA8 in Action:行为参数化,匿名类及lambda表达式的初步认知实例整理

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.functio ...

  2. C++ STL 的初步认知

    学无止境!!!    尊重他人劳动,尊重出处:http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html 我已经做了4年的MFC ...

  3. java的servlet初步学习

    目录 1.servelet概念作用理解 ====来源于孤傲苍狼  http://www.cnblogs.com/xdp-gacl/p/3760336.html======= 2.servlet的运行过 ...

  4. 【Java学习笔记之二十五】初步认知Java内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...

  5. 手动开发动态资源之servlet初步

    1.1 静态资源和动态资源的区别 静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源. 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变. 1.2动态资源的开发技术 Serv ...

  6. servlet初认知(持续更新中)

    一:前言: 一个Servlet程序其实就是一个实现了Java特殊接口的类,它由支持Servlet(具有Servlet引擎)的WEB服务器调用和启动运行.一个Servlet程序负责处理它对应的一个或者多 ...

  7. request常用方法servlet初步

    1 package com.ycw.newservlet; 2 3 import java.io.IOException; 4 import javax.servlet.ServletExceptio ...

  8. 初步认知java的方法

    1.正确区分函数和方法: 面向对象的语言叫做方法,面向过程的语言叫做函数,两者的意义是一样的,只是叫法不同.java是面向对象的语言,所以用方法. 2.方法的定义: 就是有名字的代码段 3.方法的目的 ...

  9. Java网络通信初步认知

    本文转载自:http://wing011203.cnblogs.com/ 在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信.UDP通信.多播以及NIO. TCP连接 TCP的基础 ...

随机推荐

  1. java Mather 的 group 含义

    参考博文:  http://blog.csdn.net/java2king/article/details/4395067  明白了group 的 含义 public class Test { pub ...

  2. 【Linux】percona-toolkit工具包的安装

    一.检查和安装与Perl相关的模块 PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境. 依赖包检查命令为: rpm -qa perl-DBI perl-DBD-MySQL perl ...

  3. TryXXX模式(深入理解c#)

    .NET有几个模式很容易根据所涉及的方法名称来识别.例如,BeginXXX和EndXXX暗示着一个异步操作.TryXXX模式的用途在.net1.1升级到2.0期间进行了扩展.他是针对以下情况设计的:有 ...

  4. python中将两个数组压缩成一个数组

    我们有时候会遇到一个问题将两个数组一一对应的压缩起来: 两个都是字符串: 列表解析[''.join(i) for i in zip(list_1, list_2)] map(lambda x,y:x+ ...

  5. 树莓派无法挂载exfat格式硬盘

    ubutnu系统 挂载硬盘时报错: mount: unknown filesystem type 'exfat' 这是因为树莓派默认无法识别 exfat, 需要安装 exfat-fuse . sudo ...

  6. 用rpm命令安装定时器crontab

    crontab -l  command not found 准备以下安装包: ls -l总用量 1004-rw-r--r-- 1 root root  76296 10月  9 16:01 croni ...

  7. 2018.12.15 bzoj3676: [Apio2014]回文串(后缀自动机)

    传送门 对原串建立一个后缀自动机,然后用反串在上面匹配. 如果当前匹配的区间[l,r][l,r][l,r]包裹了当前状态的endposendposendpos中的最大值,那么[l,maxpos][l, ...

  8. bootstrap表格参数说明

    表格参数: 名称 标签 类型 默认 描述 - data-toggle String ‘table’ 不用写 JavaScript 直接启用表格. classes data-classes String ...

  9. 使用promise判断是否登录

    步骤: 1.创建并返回new Promise((success,error)=>{}),success和error分别是成功和失败后所执行的函数 2.判断是否含有cookie,如果含有cooki ...

  10. java Concurrent包学习笔记(六):Exchanger

    一.概述 Exchanger 是一个用于线程间协作的工具类,Exchanger用于进行线程间的数据交换,它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据.这两个线程通过exchange 方法 ...