Servlet

作者: 半生丨 | 来源:发表于2018-05-14 20:48 被阅读0次

前言


一位正在学习Java的开发工程师.


用户登录

  • 与用户发送请求,访问服务器端的一个登录页面(有一个表单:用户名和密码的输入框以及一个登录的提交按钮)

  • 用户在登录表单中输入: 用户名和密码,点击登录的提交按钮--->提交到一个服务器的位置(Servlet)

    • 我们使用Servlet来获取用户输入的用户名和密码,然后根据用户名和密码查询数据库
    • 结果如果存在 : 给出登录成功的提示信息
    • 结果如果不存在: 给出登录失败的提示信息(用户名或者密码错误)

Servlet的介绍

1. 在Javax.servlet包下的接口(它是JavaEE众多规范中的一个)
2. Servlet是运行在Web服务器中的小型Java程序,且必须在服务器中运行,
   里面涉及到的创建对象和调用方法,都不是由程序员来完成,都是服务器来进行操作的
3. Servlet通常会通过HTTP接受和响应来自Web客户端的请求
4. Servlet他是JavaWeb三大组件之一(Servlet/Filter/Listener)
5. Servlet主要用于
    1. 接受用户的请求(数据) 
        主要HTTPServletRequest对象来负责完成的
    2. 处理请求 :
        主要由Servlet的服务方法来负责完成
    3. 对处理对象的结果进行响应
        主要由HttpServletResponse对象来负责完成

Servlet的入门

我们想要我们自己编写的代码具有Servlet的功能,那么必须直接或间接的实现Servlet接口!!

操作步骤 :

1. 编写一个类去实现Servlet接口(必须实现该接口下的所有方法)
2. 在web.xml文件中配置访问你编写的这个类(Servlet处理类)
3. 在Servlet实现类的服务方法,(Servlet方法)中编写具体的业务代码!

案例的技术分析

  • 如何让表单指向一个Servlet
    <form action="书写将这个表单提交的具体位置" method="post">
     .....
     /form
  • 我们访问的路径的写法:http://localhost:8080/项目名称/具体项目
  • 我们按照访问路径的写法,在登录表单的acton属性中,也去这么写(仅仅只需要更新访问Servlet的名称)
  • 如何获得用户输入的用户名和密码
    • 我们这里时候request相关的方法来完成
        String result= request.getParameter("name")
        //方法的参数为表单的那么属性值,得到的就是表单的value的属性值(String类型)

WEB阶段的通用开发流程

在实现具体功能之前,必须思考一个问题:我们所做的这个功能到底是对数据库表CRUD操作的那一个,我们现在的数据库都是关系型数据库(有表,多表,表与表之间)

我们可以根据这个来分析器SQL语句的编写,===>>看看这个SQL语句是否带有条件,如果有参数,那么我是需要在页面指定Servlet的时候进行传递的.


1. 跟据客户的需求设计数据库表结构并创建数据库以及初始化数据
2. 根据数据库表结构创建对应的JavaBean(讲数据库表里面的字段名称作为类里面的属性名称)
3. 导入相关的jar包.工具类和配置文件(少许修改)
4. 寻找程序入口(就是普通用户操作的地方,一般都在页面(按钮,超链接,图片) 将其指向服务器的某个Servlet(是否需要携带请求参数)
5. 编写Servlet
     如果有请求参数:
         1. 接受请求参数(参数比较多,讲数据封装到JavaBean中),调用Servlce层应对的方法
         2. 处理响应
      如果没有求情参数:   直接调用Servlce层对应的方法
6. 编写Servlce
      WEB阶段除了事务和分页操作灭我们都是直接调用DAO层应对的方法!
7. 编写DAO
      WEB阶段都是使用DBUtils来对数据库进行CRUD操作


web.xml

Servlet-name
Servlet-class

<Servlet>
        取任意值,建议写Servlet的类名,
        如果我们使用快速创建Servlet,自动生成, 默认的就是当前的Servlet的类
        且必须于mapping里的Servlet-name的值一致  
          //主要作用是:让访问的路径与具体的Servlet处理类产生对应的关系  
         <Servlet-name>xxx</Servlet-name>
         //访问路径对应的Servlet处理类:必须写全限定类名(有包结构的!)  
         <Servlet-class>com.ithema.web.helkoServlet</Servlet-class> 
</Servlet> 

Servlet的生命周期

问题:我们访问Servlet,它是调用Servlce方法的呢?调用这个方法不需要创建对象吗?需要的话,有是谁创建的?

是服务器创建,并且调用Servlce方法

默认情况,当用户第一次访问Servlet,这个Servlet的事例对象由服务器Tomcat来创建,并且一个Servlet类型只会创建一个对象,然后调用init(ServletConfig config)方法来完成初始化,该方法在整个Servlet的生命周期中只会调用一次,紧接着调用Servlce(ServletRequest rep,ServletResponse resp)方法来处理用户的请求,这个方法在整个生命周期中会被调用多次!当我们正常关闭服务器的时候,会在关闭之前调用destroy()方法来进行销毁,该方法在整个生命周期中只会被调用一次,项目移除也会被销毁.

我们发现与Servlet生命周期相关的有三个方法:

1. init(ServletConfig config)
2. servlce(ServletRequest rep,ServletResponse resp)
3. destroy()

此外,我们还可以通过配置,让Servlet在服务器启动的时候就创建

在web.xml文件中配置一个load-on-startup的参数(当前的Servlet)!值为非负的整数(值越小,优先级越高)

<servlet>
    <servlet-name>BServlet</servlet-name>
    <servlet-class>com.itheima.web.servlet.BServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

Servletcongif对象

Servlet容器使用的Servlet配置对象,该对象在初始化期间将信息传递给Servlet.意味这个对象在我们进行初始化之前就已经创建好了

我们可以通过这个对象来获得当前Servlet在出事话阶段配置的一切初始化数据!

String getInitParameter(String name)  //获取指定初始参数名称的值
Enumeration getInitParameterNames()   //获得所处初始参数的名称
ServletContext getServletContext()    //获得ServletContext对象!  
String getServletName()               //获得当前Servlet的名称

Servlet中与生命周期相关意外的其他方法

getServletConfig()   //获得一个ServletConfig对象
 //这是接口里的方法,想要得到这个对象,我们需要自己去实现
getServletInfo()   //获得Servlet的作者,版本  没什么作用

Servlet的实现方式和体系结构

Servlet的实现方式有三种

1. 编写一个类去实现Servlet接口(我们必须实现该接口所有的方法)
1. 编写一个类去继承GenericServlet抽象类,(他有抽象方法Servlce,我们需要重写)
1. 编写一个类去继承HttpServlet抽象类(没有抽象方法),我们重写doxxx方法  
这三种的关系如图: Servalet体系结构

url-pattern的配置

配置的主要是我们访问的Servlet的入口

完全匹配 :  /文件名
匹配所有 :  /*
目录匹配 :  /abc/*
扩展名匹配:  *.do
缺省的配置: /
为一个Servlet配置多个url-pattern : 众多配置都是以完全匹配为主

相关文章

  • servlet 笔记

    servlet servlet 声明周期 Servlet 的线程安全 Servlet 获取配置信息 Servlet...

  • Servlet

    Servlet介绍 Servlet开发步骤 创建Servlet 配置Servlet 配置Servlet中设置初始化...

  • 深入理解Servlet技术

    1. 什么是servlet servlet Servlet是javax.servlet.Servlet包中定义的一...

  • Servlet与Jsp(1)

    Servlet 实现原理Servlet接口使Servlet容器能将Servlet类载入内存,并在Servlet实例...

  • web.xml不同版本之间头信息的区别

    一、Servlet 2.3 二、Servlet 2.4 三、Servlet 2.5 四、Servlet 3.0 五...

  • Servlet入门

    Servlet简介 Servlet(Servlet Applet)是Java Servlet的简称,称为小服务程序...

  • Servlet 实例

    Servlet 实例 Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接...

  • Java Servlet API

    Servlet 支持的版本 Servlet 3.0 新特性详解 Servlet 3.0 新特性概述Servlet ...

  • 简单认识Servlet

    Servlet与JSP的关系 初识Servlet Servlet层级关系 顶层Servlet接口 GenericS...

  • 2019-10-14 SpringMVC与Servlet接口 S

    SpringMVC与Servlet接口 Servlet接口规范 Servlet 接口 定义servlet接口规范i...

网友评论

      本文标题:Servlet

      本文链接:https://www.haomeiwen.com/subject/fjnjdftx.html