JavaWeb学习笔记-Servlet01

JavaWeb学习笔记-Servlet01

今天是2月29日明天就是新的一个月了,打卡的第31天,明天也要加油。
ps:笔记是根据尚学堂百战java视频教程写的QAQ
29/2/2020


Servlet

第一节:HTTP协议详解

1.web交互的流程

javawebservlet01

请求:客户端根据用户的地址信息将数据发送给服务器的过程
响应:服务器将请求处理结果发送给浏览器的过程

怎样实现不同版本浏览器和不同版本服务器之间的数据交互呢?
规范浏览器和服务器的数据交互格式,也就是HTTP协议。

2.HTTP的概念和介绍

概念:超文本传输协议(Hyper Test Transfer Protocol)
作用:规范了浏览器和服务器的数据迁移
特点

  1. 简单快速:客户向服务器请求数据时,只需要传送请求的方法和路径。请求方法常用的有GET,HEAD,POST。每种方法规定了客户和服务器的联系类型不通。
  2. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-type加以标记。
  3. 无连接:无连接的含义是限制每次连接只处理一个请求。节省传输时间。
  4. 无状态:协议对事物处理没有记忆能力。如果后续处理需要前面的信息则他必须要重传。服务器不需要先前的信息时应答比较快。
    HTTP1.1 版本后支持可持续连接

3.HTTP的交流过程

HTTP的交流过程一般分为四个步骤(一次完整的请求):

  1. 客户端和服务器建立连接
  2. 客户端发送请求数据到服务器端(HTTP协议)
  3. 服务器端收到请求后进行处理然后将处理的结果相应给客户端(HTTP协议)
  4. 关闭客户端和服务器端的连接(HTTP1.1后不会立刻关闭)

4.HTTP协议的请求格式

请求格式的结构

请求行:请求方式、请求的地址和HTTP协议版本
请求头:消息报头。一半来说明客户端要使用的一些附加信息
空行:位于请求行和请求数据之间,空行是必须的
请求数据:非必须

javawebservlet02

注意:一张网页的内容是及其丰富的,浏览器会遵循HTTP请求的格式将有效数据发送给服务器。


今天一上午忙着弄博客的端口和域名注册购买DNS解析,之类的事物,下午学习的内容就比较少了,还要记纸质版笔记,晚上又得把纸质版笔记誊写到博客上发布,一天下来还是有点小忙,进度稍微少了点,不过尽量明天补上吧!


1/3/2020


示例(get请求方式):

javawebservlet03

get方式没有请求主体

示例(post请求方式):

javawebservlet04

Host:服务器主机地址
User-Agent:浏览器版本信息
Content-Type:类型
Content-Length:请求数据的大小
Connection:kepp-Alive:保持连接

5.HTTP协议请求方式

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法:GET,POST和HEAD方法。
HTTP1.1 新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。

javawebservlet05

get和post请求方式的区别:

get请求方式:请求数据会以?的形式隔开拼接在请求头中,不安全,没有请求实体部分。
HTTP协议虽然没有规定请求数据的大小,但是浏览器对URL的长度是有限制的,所以get请求不能携带大量的数据。
post请求方式:请求数据在请求实体中进行发送,在URL中看不到具体的请求数据,安全。适合数据量大的数据发送。

6.HTTP协议响应

响应格式的结构:

响应行(状态行):HTTP版本,状态码,状态消息
响应头:消息报头,客户端使用的附加信息
空行:响应头和相应实体之间的,必须的。
响应实体:正文,服务器返回给浏览器的信息

示例

javawebservlet06

HTTP常见响应状态码的含义:

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP的状态码共分为5种类型:

javawebservlet07

常见的状态码:

200 OK //客户端请求成功
400 Bad Request //客户段请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态码必须和WWW-Authenticate 报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常


第二节:服务器软件介绍和安装-Tomcat

Tomcat安装

下载地址

https://tomcat.apache.org/download-70.cgi

安装:

下载完成后解压压缩包就可以使用
尽量不要解压在中文目录中

目录结构介绍:

\bin:存放启动和关闭Tomcat的可执行文件
\conf:存放Tomcat的配置文件
\lib:存放库文件
\logs:存放日志文件
\temp:存放临时文件
\webapps:存放web应用
\work:存放JSP转换后的Servlet

校验安装:

打开bin目录,然后双击指向startup.bat文件,打开浏览器在地址栏中输入localhost:8080出现tomcat广告页安装成功

常见问题:

  1. tomcat运行依赖JDK,必须配置JDK环境。
  2. 闪退,启动闪退问题一般是因为JDK的环境变量配置有问题。

第三节:Servlet引入

介绍

概念

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现Serblet接口的类,一般情况,人们理解为后者。Servlet允许于支持Java的应用服务器中,从原理上讲,Servlet可以响应任何类型的请求,但是大多数情况下Servlet只是用来扩展基于HTTP协议的Web服务器。

特点

运行在支持java的应用服务器上
Servlet的实现遵循了服务器能够识别的规则,也就是服务器会自动的根据请求调用对应的servlet进行请求处理。
简单方便,可移植性强

使用

  1. 创建普通的java类并继承HttpServlet
  2. 重写service方法
  3. 在service方法中书写逻辑代码即可
  4. 在webRoot下的WEB-INF文件夹下的web.xml文件中配置servlet

第一个Servlet程序

配置IDEA环境

  1. 创建一个java EE web项目
  2. 右上角下拉菜单选择第一个选项 Edit ...

javawebservlet08

  1. 点+号找到tomcat选择local

javawebservlet09

  1. 填写相关信息即可
  2. 在project structrue..中将javaEE也就是Tomcat的包导入项目不然会找不到Servlet相关的类
  3. 在项目的web文件夹下的WEB-INF文件夹创建一个classes来存储编译的类,再创建一个lib文件夹存放第三方包
  4. 在project structrue.. paths下设置编译生成class文件的地址
    IDEA环境配置成功!

书写Servlet

新建包com.yjb.servlet
包下新建类MyServlet
MyServlet继承HttpServlet类重写service方法

public class MyServlet extends HttpServlet {
    // 重写service方法
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("这个是我的第一个Servlet程序");
	// 写到请求的Html页面上
        res.getWriter().write("this is my first servlet");
    }
}

修改配置文件web.xml

打开WEB-INF下的web.xml文件
中写入信息

<servlet>
        <servlet-name>my</servlet-name>
        <servlet-class>com.yjb.servlet.MyServlet</servlet-class><!--书写servlet的全限定路径(包名加类命)-->
</servlet>
<servlet-mapping>
	<servlet-name>my</servlet-name>
	<url-pattern>/s</url-pattern><!-- 配置servlet访问别名 -->
</servlet-mapping>

注意:

  1. servlet和servlet-mapping要成对出现,
  2. 下面的servlet-name要统一
  3. servlet-class里面要写全限定路径包名加类命

启动项目

启动方式一:因为我们之前已经配置好了IDEA集成环境所以直接点击右上方的的绿色三角启动就可以
启动方式二:将web文件夹下面的全部文件拷入tomcat路径下webapps文件夹自己新建的文件夹中。然后回去bin目录启动startup.bat,浏览器访问localhost:8080/新建的文件夹名称。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.byfree.top/archives/serlvet01