Servlet基础知识

概述

什么是JavaSE?
  • Java 标准版本
  • SUN公司为java程序员提供的一套基础类库
  • 这套类库中包括:基础语法、面向对象、异常、IO、集合、反射、线程…..

    什么是JavaEE?
  • Java 企业版

  • JavaEE 是sun公司为我们程序员提供的一套庞大的类库
  • 而这套类库是支撑我们做企业内部软件开发的一套库

    什么是API?包括什么?
  • API : 应用程序编程接口(这里描述的接口不是interface)

  • 包括:源码、字节码、帮助文档【在使用的时候注意版本号一致】

    B/S优缺点

    优点
  • 不需要安装特定的客户端软件,只要有浏览器就行

  • 升级方便,(升级只需要升级服务器端)

    缺点
  • 所有数据都在服务器端,服务器一旦发生不可抗力,数据丢失严重,相对来说不安全

  • 速度慢

    C/S优缺点

    优点
  • 速度快

  • 数据相对安全
  • 客户点界面可以非常的炫酷

    缺点
  • 升级麻烦(升级的时候每一个客户端都需要升级)

  • 需要安装特定的客户端软件,才能访问服务器

浏览器请求服务器(request),服务器响应浏览器(response)
Servlet
两个英语单词的合并,Serv表示服务器 let 小程序

关于Servlet规范

Servlet规范是来自于JAVAEE规范中的一种

作用
  • 在Servlet规范中,指定了【动态资源文件】开发步骤
  • 在Servlet规范中,指定了Http服务器调用动态资源文件规则
  • 在Servlet规范中,制定了http服务器去管理动态资源文件实例对象规则

    概述二

    在浏览器输入 http://localhost:8080 弹出小猫的页面,表示服务器可以使用
    127.0.0.1表示本地地址

    开关服务器

    开启 在cmd窗口中

    • 进入到tomcat7的bin目录下
    • startup 回车

关闭 在cmd中

  • 进入到tomcat7的bin目录下
  • 执行shutdown
  • 已改名 现在为stop

现在已经配置好了环境变量

  • 直接在cmd窗口敲入startup/stop即可开关服务器
  • 为了避免windows系统的shutdown命令冲突 将tomcat的shutdown 重命名为stop
  • 端口号 8080

    部署

    直接复制文件夹过来到tomcat中的webapps文件夹中

    访问

    当部署完成之后就可以在网页上进行访问
    http://localhost:8080/FirstWebApp/login.html
    协议://IP地址:端口号/URI

    目录结构要求

    java文件 必须放在 WEB-INF里面(新建)
    WEB-INF里面必须按照下面的方式写

  • classes (里面放字节码文件)

  • lib (里面放库 例如jdbc的jar包)
  • web.xml (请求路径/servlet)

    必须遵守这么写

    HTTP

    http请求协议包内部空间

    按照自上而下划分,分为4个空间

空间划分:
1. 请求行 [ url:请求地址 http://127.0.0.1/index.html
method:请求方式 (get/post) ]
2. 请求头 [ 请求参数信息【get】]
3. 空白行 [ 没有任何的内容(起到隔离的作用)]
4. 请求体 [ 请求参数信息【如果是post,那么请求参数会存放在请求体中】]
**

http 响应协议包内部空间

按照自上而下划分,分为4个空间

空间划分
  1. 状态行 [ Http 状态码]
  2. 响应头 [ content-type 指定浏览器采用对应编译器
    • 对响应体二进制数据进行解析]
  3. 空白行
  4. 响应体[可能被访问静态资源文件/命令/动态资源文件]

IDEA

IDEA中配置tomcat

File——>Sittings ——>Build, Execution, Deployment——>Aplication Servers 左上角加号 添加tomcat服务器

在IDEA中配置tomcat开关

run——>Edit config…..——>左上角加号——>Tomcat server ——>Local(本地开关) ——>ok

在IDEA中创建网站

File——>Modlue——>java Enterprise——>web Application——>起名 ——>ok

IDEA中快速创建Servlet实现类

alt+ins——>Create New Servlet ——> 写上包名——>写上类的名称 ——>下面对勾一定要取消

IDEA中的动态资源和静态资源修改自动更新

run ——> EditCongif…. ——>Server——> on….和 on …. 都改为 update resources——> 后面show打上对勾
设置好之后一定要以 debug的方式来启动(才好用)

IDEA网站内部结构

src文件: 存放作为动态资源文件的JAVA文件
web文件夹:存放作为静态资源文件【图片,html,css,js】
存放网站运行时的依赖的jar
存放网站的核心配置文件
WEB-INF :依赖的jar/核心配置文件【web.xml】
lib文件夹:依赖的jar
web.xml:通知tomcat当前网站那些java类时动态资源文件

注意:

静态文件【图片,视频,html css js 全部放到web文件夹下】

  • 把一个网站交给Tomcat管理叫做发布
  • run——>Edit config——>Deployment——>右侧➕——>Application context:(给你的网站起一个名字(必须是/开头))
  • 上面的做法就是发布一个网站

Servlet接口实现类

  1. Servlet接口来自于Servlet规范下的一个接口,这个接口存在于Http服务器,提供jar包
  2. Tomcat服务器下,lib文件下,有一个Servlet-api.jar存放Servlet接口
  3. Servlet规范中,Http服务器能调用的【动态资源文件】必须是一个Servlet接口实现类
    1. class Father implement Servlet{
    2. // 合法的动态资源文件
    3. }

    动态资源文件就是一个实现了 Servlet接口的class【只有这样的类才能被tomcat调用】

Servlet接口中的抽象方法

  • init()
  • getServletConfig()
  • getServletInfo()
  • destroy() —————-以上四个方法对于Servlet接口实现类没用
  • service() ————有用

    Tomacat根据Servlet规范去调用Servlet接口实现类 Tomcat有权创建Servlet接口实现类实例对象 Servlet one = new OneServlet();

Servlet接口实现类开发步骤

第一步:创建一个java类,继承HttpServlet父类,使之成为Servlet接口实现类

  • 为什么不直接实现Servlet接口?
  • 因为为了解决你的开发难度,实现接口需要重写5个方法但是有很多方法用不上。

    第二步:重写HttpServlet父类两个方法。 doGet()/doPost()

  • 接口中的service()已经在HttpServlet抽象类中覆写了

    第三步: 将servlet实现类信息【注册】到tomcat服务器中

  • 【网站】——>【web】——>【WEB-INF】 ——> web.xml

  • 将servlet实现类的类路径地址交给tomcat

web.xml写法

  1. <servlet>
  2. <!--这里面声明一个变量来存储servlet接口实现类的类路径-->
  3. <servlet-name>mm</servlet-name>
  4. <!--在这里面声明一个servlet接口实现类-->
  5. <servlet-class>com.yixuexi.controller.OneServlet</servlet-class>
  6. </servlet>
  7. <!--为了降低用户访问Servlet接口实现难度,需要设置简短的请求别名,用户直接输入别名即可-->
  8. <servlet-mapping>
  9. <servlet-name>mm</servlet-name>
  10. <!--设置简短的请求别名-->
  11. <!--别名必须以斜线开头-->
  12. <url-pattern>/one</url-pattern>
  13. </servlet-mapping>
  14. <!--此时在tomcat的内存中,会声明一个mm变量 里面保存了Servlet实现类路径-->
  15. <!--
  16. 如果现在浏览器向tomacat索要OneServlet地址时:
  17. http://localhost:8080/myWeb/one
  18. -->

生命周期

网站中所有的Servlet接口实现类的对象,只能由http服务器来创建
开发人员不能手动创建Servlet实现类对象

在默认的情况下,当http服务器接收到对于当前Servlet接口实现类第一次请求时,会自动创建这个Servlet接口实现类的实例对象
http://localhost:8080/myWeb/one
访问Servlet接口实现类

在手动配置情况下,可以要求Http服务器在启动的时候,自动创建Servlet实现类的对象

<servlet>
    <servlet-name>mm</servlet-name>
    <servlet-class>com.yixuexi.controller.OneServlet</servlet-class>
    <load-on-startup>1</load-on-startup>  // 这里面填写大于0的整数
</servlet>

这个Servlet对象就会在Http服务器启动的时候创建

  • 在Http服务器在运行期间,一个Servlet接口实现类只能被创建出一个实例对象
  • 在Http服务器关闭的时候,所有的Servlet实现类对象进行销毁

Http状态码

介绍

三位数字组成的一个符号
http服务器在推送相应包之前,根据本次请求处理情况,将http状态码写入到状态行中

作用:

如果httpf服务器针对本次请求,返回了对应的资源文件可以通过http状态码通知浏览器应该如何处理这个结果
如果http服务器针对本次请求,无法返回对应的资源文件,通过状态码向浏览器解释不能提供服务的原因

分类

组成 100—-599分为5个大类

1XX
  • 最具特征的100 通知浏览器本次返回的资源文件,并不是一个独立的资源文件,需要浏览器在接收响应包之后,需要向http服务器再索要其他的依赖文件

    2XX
  • 最具特征的 200 通知浏览器本次返回的资源文件时独立完整的资源文件,不需要再去找其他的依赖文件

    3XX
  • 最具特征的302 通知浏览器本次返回的不是一个资源文件的内容,而是一个资源文件的地址 ,需要浏览器根据地址发起请求,索要资源文件

  • response.sendRedirect(“资源文件地址”) 写入到响应头的location中,此时tomcat会把302状态码写到状态行中

    4XX
  • 404 通知由于服务端里面没有定位到被访问的资源文件。因此无法提供相关的帮助

  • 405 通知浏览器,在服务端中已经去定位到了被访问到资源文件(servlet),但是这个Servlet对于浏览器所采用的请求方式不能处理

    5XX
  • 500 通知浏览器,在服务端已经定位到被访问的资源文件(servlet)这个servlet可以接收浏览器采用请求方式,但是Servlet再处理请求期间,由于java异常导致处理失败