http、Tomcat、servlet

http

http特点

  1. 基于TCP协议:面向连接,安全
  2. 基于请求-响应模型的:一次请求对应一次响应
  3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
    缺点:多次请求间不能共享数据。
    优点:速度快

http请求数据格式

在这里插入图片描述

请求行

请求的第一行,其中

  •      GET:请求方式
    
  •      /:请求资源路径
    
  •      HTTP/1.1:协议版本
    

请求头

请求的第二行开始,以键值对的格式出现,其中

  •      host:请求的主机号
    
  •      user-agent:浏览器版本
    
  •      accept:表示浏览器能接收的资源类型
    
  •      accept-language:浏览器偏好的语言
    
  •      accept-encoding:浏览器可以支持的压缩类型
    

请求体

请求的最后一部分,存放请求参数
在这里插入图片描述

get和post的区别

  1. get请求参数在请求行,没有请求体
    post请求参数在请求体中
  2. get请求参数有大小限制,2-8k
    post参数没有大小限制
  3. 浏览器访问后台全是get请求,
    get请求会显示在浏览器地址栏,post不会
  4. 请求刷新时post会重新提交数据
  5. get请求会缓存,post不会
  6. get的请求更快,因为直接走的缓存
  7. 每次必须请求后台,必须是新请求,不要走缓存,用post
  8. get请求只能进行URL编码(get请求必须是字符串),post请求所有格式(文件图片视频都可以)

http响应数据格式

在这里插入图片描述

响应行

响应的第一行,其中

  •      HTTP/1.1:协议版本
    
  •      200:响应状态码,状态响应码重点如下
    
    •          1xx:响应中
      
    •          2xx:成功
      
    •          3xx:重定向
      
    •          4xx:客户端错误
      
    •          5xx:服务器端错误
      
  •      OK:状态码描述
    

响应头

从响应的第二行开始,格式为key:value

响应体

响应的最后一行,存放响应数据

Tomcat

web访问后台需要一个容器,这个容器就是Tomcat。
Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。
Tomcat 也被称为 Web容器、Servlet容器。Servlet 需要依赖于 Tomcat才能运行

web服务器

Web服务器是一个应用程序(软件),对 HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”

如何启动Tomcat以验证安装完成

首先,下载Tomcat的时候需要注意版本问题,并且安装Tomcat之前需要先安装jdk。
此外,不建议下载压缩版,建议直接下载安装版。压缩版需要配置环境变量,而安装版不需要。
安装好Tomcat之后,右键计算机,在管理----服务之中找到Apache Tomcat 9.0 Tomcat9,启动服务在浏览器访问localhost:8080
如果可以正常访问,则说明安装成功。

创建javaweb项目

  1. 直接创建一个Maven项目
  2. 添加web服务支持。右键项目,打开框架支持,只用勾选第一个即可。完成后项目会多出一个web目录。里面存放前端页面,而src里面的main目录是最后的成品,test目录是用来专门做测试的,再往下的java目录存放java文件,resource则用于存放各种资源文件。
  3. 添加Tomcat。右上角添加,找到Tomcat Service(不是TomcatEE),点击local,找到自己的Tomcat文件夹,ok之后点击fix,将Application context里面只留下/,然后ok,完成操作。
  4. 右上角debug启动项目,访问的是web下面的index.jsp页面

为什么能够直接访问到index.jsp

这是Tomcat的conf文件夹下面的web.xml所决定的
在这里插入图片描述
先找index.html找不到再找index.htm再找不到则寻找index.jsp
如果想要默认打开界面是自己的选择的,则修改web.xml文件,不过一般不修改Tomcat的,修改自己项目里面的web.xml
在这里插入图片描述
修改之后建议重启服务器,或者刷新项目
在这里插入图片描述
如果运行的时候控制台有乱码,可能是中文的问题,在Tomcat的conf目录下找到logging.properties,将里面的UTF-8全部修改为GBK,重新启动服务后中文即可正常显示

servlet

Servlet 是 Java提供的一门动态web资源开发技术。
Servlet 是JavaEE 规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet。

servlet使用

  1. 使用servlet需要在pom.xml里面导入servlet的jar包。
    在这里插入图片描述
    依赖从哪儿来呢?可以直接百度Maven Servlet依赖,也可以搜索search.maven.org搜索servlet/javax.servlet找到想要的版本的依赖。
  2. 创建:定义一个类,实现 Servlet接口,并重写接口中所有方法,并在 service方法中输入一句话,这里是输出"Servlet service"
package com.wanxi.servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/index")
public class IndexServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
		System.out.println("Servlet service");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

  1. 配置:在类上使用@WebServlet 注解,配置该 Servlet的访问路径。
  2. 访问:启动 Tomcat,浏览器输入URL 访问该Servlet。如果地址所表示的页面没有写,那么浏览器会是一片空白,但是控制台会输出对应的信息。
  3. 此外,还可以继承HttpServlet类,只需要重写doGet和doPost方法。
package com.wanxi.servlet;

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("/home")
public class HomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HttpServlet doGet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HttpServlet doPost");
    }
}

WebServlet里面的地址唯一,且以“/”开头
查询用get,更新(增加、删除、修改)用post;涉及到密码等敏感信息以及IO流,用post

servlet生命周期

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

    1. 加载和实例化 当Servlet第一次被访问时,由容器创建Servlet对象
    1. 初始化 调用init()方法,只调用一次
    1. 请求处理 调用service()方法
    1. 服务终止 销毁,调用destory()方法

urlPattern配置规则

  •   一个servlet可以配置多个地址
    
  •  精确匹配     @WebServlet("/user/select")  访问准确的地址
    
  •  目录匹配     @WebServlet("/user/*")       当前目录下都可以访问
    
  •  拓展名匹配   @WebServlet("*.do")           拓展名为do的所有页面
    
  •  任意匹配     @WebServlet("/")或者@WebServlet("/*")任意路径都能访问
    

“/”和“/*”的区别

简单的说就是使用“/*”的话,如果地址错误将会在浏览器报错,显示404。如果使用的是“/”,那么地址输入错误将会指向一个默认的页面,不会在浏览器显示404,但是控制台还是会输出对应的信息(如果写了的话)。比如:

package com.wanxi.servlet;

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("/")
public class DefaultServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("ERRO");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

浏览器是空白,但是控制台却输出了信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值