Servlet特点及其总结


软件结构发展史

  1. 单机时代-桌面应用,数据保存在本地;
  2. 联机时代(Client-Server模式,C/S结构);
  3. 互联网时代(Browser-Server模式,B/S结构)。

B/S模式执行流程

  • 通过用户输入的网址,利用DNS服务器,查询到IP地址,将请求发送给web服务器,获取程序。

请求与响应

  • 从浏览器发出送给服务器的数据包称为”请求(Request)”;
  • 从服务器返回给浏览器的结果称为”响应(Response)”;

J2EE

  • J2EE(Java 2 platform Enterprise Edition)是指”Java 2企业版”;
  • 开发BS(Web)应用程序就是J2EE最核心的功能
  • J2EE由13个功能模块组成

J2EE功能模块示意图

Apache Tomcat

  • Tomcat是Apache软件基金会旗下一款免费的开源的Web应用服务器程序。

![Apache Tomcat(2.png)

J2EE与Tomcat的关系

  • J2EE是一组技术规范和指南,具体实现由软件厂商决定;
  • Tomcat本质上是J2EE Web(Servlet与JSP)的规范的一种实现;
  • J2SE是J2EE运行的基石,运行Tomcat离不开J2SE(JRE&JDK)。

Servlet

  • Servlet(Server Applet)服务器小程序,主要功能用于生成动态Web内容。

Tomcat与Servlet的关系

标准Java Web工程结构

标准Java Web工程结构

Servlet开发步骤

  1. 创建Servlet类,继承HttpServlet;
  2. 重写service方法,编写程序代码;
  3. 配置web.xml,绑定URL。

Servlet的访问方法

  • http://IP地址:端口/context-path/url-mapping
  • 远程访问使用IP地址,本地访问localhost(127.0.0.1)
  • context-path称为“上下文路径”,默认为工程名

请求参数

  • 请求参数是指浏览器通过请求向Tomcat提交的数据
  • 请求参数通常是用户输入的数据,待Servlet进行处理
  • 参数名1=值1&参数名2=值2&参数名n=值n…

Servlet接收请求参数

request.getParameter()  //接收单个参数
request.getParameterValues()  //接收多个同名参数

Get和Post请求方法

  • Get方法是将数据通过在URL附加数据显性向服务器发送数据

    • http://localhost:8080/FirstServlet/sample?name=zhangsan
  • Post方式会将数据存放在”请求体”中隐性向服务器发送数据

    • http://localhost:8080/FirstServlet/sample
    • 请求体:name=zhangsan

Get与Post处理方式

//所有请求,起到了对两种不同处理方式的分发作用
public void service(){

}
//Get请求
public void doGet(){

}
//Post请求
public void doPost(){

}

Get和Post应用场景

  • Get常用于不包含敏感信息的查询功能,百度谷歌查询结果

    • 例如https://www.baidu.com/s?wd=imooc&rsv_spt=1
  • Post方式用于安全性要求较高的功能或者服务器的写操作

    • 用户登录
    • 用户注册
    • 更新公司账目

Servlet生命周期

  • 共分为5个阶段

    1. 装载 - web.xml
    2. 创建 = 构造函数
    3. 初始化 - init()
    4. 提供服务 - service()
    5. 销毁 - destroy()

使用注解简化配置

  • Servlet 3.x字后引入了”注解Annotation”特性
  • 注解用于简化Web应用程序的配置过程
  • Servlet核心注解:@WebServlet
@WebServlet("/anno")
public class Annotation extends HttpServlet{

  @Override
  protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.getWriter().println("I am annotation servlet!");
  }
}

启动自动加载Servlet

  • web.xml使用<load-on-startup>设置启动加载;
  • <load-on-startup>0~9999</load-on=startup>,执行的时候会按照标签内部的序号从小到大依次执行;
  • 启动时加载在生产中常用于系统的预处理,将复杂的程序在启动时加载好,在执行过程中不需要进行额外的处理,可以减少使用时候的卡顿;
  • 需要重写init()函数。


  create
  com.imooc.servlet.CreateServlet
  0
  

// 采用注解方式实现启动自动加载,注意,一定要设置url才能生效,loadOnStartup的值是加载顺序
@WebServlet(urlPatterns="/unused",loadOnStartup=2)

public class AnalysisServlet extends HttpServlet{

  @Override
  public void init() throws ServletException{
    System.out.println("正在分析结果");
  }
}

HTTP请求的结构

  • HTTP请求包含三部分:请求行、请求头、请求体

文章作者: 南航古惑仔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 南航古惑仔 !
  目录