定制软件开发【Servlet】这一文详细的讲述了Servlet的知识,呕心沥血,终于文成。

文章目录

定制软件开发这篇博客真的很详细的讲述了Servlet,定制软件开发看看不吃亏。
定制软件开发如有错误欢迎指正,定制软件开发自古问过则喜。
定制软件开发余虽无圣人之质,定制软件开发然愿效圣人之行。强作之者,亦英雄也。

什么是?

Java Servlet 是运行在 Web 定制软件开发服务器或应用服务器上的程序,定制软件开发它是作为来自 Web 定制软件开发浏览器或其他 HTTP 定制软件开发客户端的请求和 HTTP 定制软件开发服务器上的数据库或应定制软件开发用程序之间的中间层。

使用 Servlet,定制软件开发您可以收集来自网页表定制软件开发单的用户输入,定制软件开发呈现来自数据库或者其他源的记录,还可以动态创建网页。

Servlet是Java提供的一门动态Web资源开发技术

静态Web和动态Web有什么区别吗?

静态Web,像Html+Css+Js这样的死页面,不会随着用户的改变而改变

而动态Web,会区分用户的不同而为其展现不同的页面

Servlet也是JavaEE十三项规范之一,所谓的规范也就是接口,所以我们要使用Servlet,就需要Servlet类实现Servlet的接口,并在Web服务器上运行。Servlet有五大方法,init、service、destory、getServletInfo、getServletConfig。

下图显示了 Servlet 在 Web 应用程序中的位置。

Servlet的使用

1、创建一个Web项目,并集成Tomcat

不会的可以看这篇文章:

2、引入Servlet的依赖

<dependency>      <groupId>javax.servlet</groupId>      <artifactId>javax.servlet-api</artifactId>      <version>3.1.0</version>      <scope>provided</scope></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

一定要加上 provided,因为Tomcat中是有Servlet的jar包的,再引入会冲突,反而会报错。这句话的作用是指这个依赖仅仅在测试和编译的情况下,才会被引入。

3、创建一个Web启动类

第一个是重写Servlet接口

package com.you.web;import javax.jws.WebService;import javax.servlet.*;import javax.servlet.annotation.WebServlet;import java.io.IOException;@WebServlet(urlPatterns = "/demo1")public class webServlet01 implements Servlet {    @Override    public void init(ServletConfig config) throws ServletException {        System.out.println("init.....");    }    @Override    public ServletConfig getServletConfig() {        return null;    }    @Override    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {        System.out.println("service....");    }    @Override    public String getServletInfo() {        return null;    }    @Override    public void destroy() {        System.out.println("distory.....");    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

启动Tomcat,访问demo1看一下效果

第二个是继承HttpServlet

package com.you.web;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet(urlPatterns = "/demo2")public class webServlet02 extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        System.out.println("Get...");    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        System.out.println("Post...");    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

访问demo2看一下效果

Servlet的理解

Servlet的执行流程

网页中请求的URL可以被切割为三部分,如下第一部分htpp://localhsot:8080的作用是找到服务器,第二部分web-demo的作用是找到web项目,第三部分demo1的作用则是找到web项目中的Servlet。

Servlet的生命周期

Servlet的生命周期可以分为4个阶段:加载和实例化、初始化、请求处理、服务终止

加载和实例化阶段

默认情况下,当Servlet第一次被访问的时候,由容器创建Servlet对象。

当然,我们也不可以不默认。只需要使用@WebService(urlPattems = “/demo”,loadOnStartup = 1)

  • 当loadOnStartup = 负整数时,这是默认情况,第一次被访问的时候创建Servlet对象。

  • 当loadOnstartup = 0或者正整数时,服务器启动的时候,就会创建Servlet对象,数字越小优先级就越高。

当项目比较大的时候,第一次访问时再创建Servlet,用户就会等待一段时间,这样用户的体验感就会下降,这时候我们选择在服务器启动的时候创建Servlet,用户就会有一个更好的体验感!

初始化阶段

在Servlet实例化之后,容器调用Servlet的**Init()**方法初始化这个对象,完成一些如加载配置文件,创建连接等初始化的工作。该方法只能调用一次。

请求处理

每次请求Servlet的时,Servlet容器都会调用service()的方法对请求进行处理。也就是每进入Servlet的网页,都会调用Servlet的service()方法。

服务终止

当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destory()方法完成资源的释放。在destory()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。

刚才提到Servlet有五大方法,init、service、destory、getServletInfo、getServletConfig。

方法名方法注解
initvoid init(ServletConfig config)初始化方法,在Servlet被创建时执行,并且只执行一次
servicevoid service(ServletRequest req, ServletResponse res)提供服务方法,每当Servlet被访问,都会执行这个方法
destroyvoid destroy()销毁方法,当Servlet被销毁时,调用该方法。在内存释放或服务器关闭时销毁Servlet,只被执行一次,
getServletInfoString getServletInfo()获取Servlet的一个信息
getServletConfigServletConfig getServletConfig();获取ServletConfig类

常见问答题

Servlet由谁创建?Servlet方法由谁调用?

Servlet由Web服务器创建,Servlet方法由Web服务器调用。

服务器怎么知道Servlet中一定有Service方法?

因为我们自定义的Servlet,必须实现Servlet接口并且复写其方法,而Servlet接口中有Service方法。

Servlet的体系结构

B/S和C/S的区别

C/S就是指客户端/服务器模式。是计算机软件协同工作的一种模式,通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。

B/S型模式,即浏览器/服务器结构。它是C/S架构的一种改进,可以说属于三层C/S架构。主要是利用了不断成熟的WWW浏览器技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。

使用HttpServlet的原因

对于一个正常的项目来讲,他的请求方式不会是单一的,至少是Post、Get两种请求,这两种携带信息的位置并不一致,Post携带信息的位置在请求体,而Get携带信息的位置在请求头,这意味着我必须对二者进行区分,才能正确拿到其携带的信息。

HttpServlet的工作原理

HttpServlet的工作原理非常的简单,用四个字概括即为分而治之,对于每一个请求判断是哪一类请求,如果是“Get”请求,就调用doGet方法,如果是“Post”请求,就去调用doPost方法。这是do…方法,就是我们要使用的。

首先是调用Servlet自带的service方法,这里只做了一个操作就是把ServletRequest和ServletResponse转为Http…,然后传到service(Http… req,Http… resp),然后获取请求方式的名字,并调用相应的方法。

UrlPatten的配置

一个Servlet,可以配置多个urlPatton

Servlet想要被访问,就必须配置其访问路径。最为便捷的方式是通过注解配置,也就是上面用到的@WebServlet,其中有很多的属性,不同的属性之间用,隔开。今天我们讲的是urlPatterns属性,点来WebServlet,可以看到这是一个对象,这意味着他可以配置多个属性,这也表明了:一个Servlet可以有多个urlPattern(访问路径),如下

@WebServler(urlPatterns = {"/demo1","/demo2"})
  • 1

这意味着我可以通过demo1或者demo2访问这个Servlet。

如果我只需要一个地址的话,则不需要加{},主需要写如下代码即可

@WebServlet(urlPatterns = "/demo1")
  • 1

这样我便可以通过demo1访问这个Servlet了。

配置规则

  1. 精确匹配 如@WebServlet(urlPatterns = “/users/demo1”),那么我只能通过"users/demo1"访问这个Servlet
  2. 目录匹配 如@WebServlet(urlPatterns = “/users/*”),那么我可以通过"users/任何字符串"访问这个Servlet
  3. 扩展名匹配 如WebServlet(urlPatterns = “*.do”),那么我可以通过"任何字符串.do"访问这个Servlet
  4. 任意匹配,如WebServlet(urlPatterns = “/*”),那么我可以通过任何途径访问到这个Servlet,但是注意不要设置成"/",这样会覆盖掉DefaultServlet,导致静态页面无法加载。

Xml配置访问路径(不建议使用)

在Servlet3.0之前,只支持web.xml配置访问路径。

需要在Web.xml下配置如下代码

<servlet>    <servlet-name>demo</servlet-name>    <servlet-class>com.you.web.ServletDemo02</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>demo</servlet-name>    <url-pattern>demo5</url-pattern>  </servlet-mapping>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发