千锋逆战班学习日志Day50


千锋逆战班学习第40天
努力或许没有收获,但不努力一定没收获,加油。
今天我学习了IDEA部署tomcat。
中国加油!!!武汉加油!!!千锋加油!!!我自己加油!!!

IDEA部署web应用程序

  1. 创建一个JavaWeb工程,Java Enterprise 、Web Application

  2. 项目名称、工作空间的选择

  3. JavaWeb目录介绍
    在这里插入图片描述

  4. DEA配置tomcat

    • 选择Edit Configurations,
    • 点击加号 ->tomcat server -> local
    • 点击Configure -> 点击加号 -> 选择tomcat
  5. tomcat配置
    tomcat插件
    on update action:
    Redeploy:重新部署项目
    项目配置:部署项目到tomcat访问名称

idea部署Web项目的方式

  1. 概念
    idea部署web项目的方式,本质就是虚拟目录优化版,但是有一些区别!

  2. 步骤

    1. 根据本地安装的tomcat,会给当前项目生成一个tomcat镜像,部署到tomcat镜像相当于部署到本地tomcat中
    2. tomcat镜像部署项目的方式是虚拟目录优化版, 镜像的安装目录 -> conf -> catalina -> localhost ,就找到了day50.xml配置文件
    <Context path="/day50" docBase="F:\workspace\nz2002\day50\out\artifacts\day50_war_exploded" />

以上配置说明,

day50项目,它的访问名称是"/day50",day50的资源部署路径是:"F:\workspace\nz2002\day50\out\artifacts\day50_war_exploded",

这就要求,day50项目中的资源应该都需要放到day50_war_exploded文件夹中!!!

idea中的web项目的哪些内容部署到tomcat中

  1. 概念
    根据上一个知识点,只有资源来到了day50_war_exploded文件夹中,才意味着部署成功!!!

  2. 到底有哪些可以部署?

  • src文件夹:
    • 可以部署上去!部署到了项目中的\WEB-INF\classes文件夹中
  • web文件夹:
    • 可以部署上去!部署到了项目目录中!
  • day50项目下:
    • 不可以部署上去

Http协议

  1. 协议
    两个设备进行数据交换的约定!

  2. Http协议

    超文本传输协议(hypertext transfer protocl)

    超文本:字符、音频、视频、图片等等

    基于tcp协议。tomcat服务器底层实现本质上就是TCP(Socket)

通过抓包的方式演示http协议

经过演示发现,浏览器和服务器,它们之间进行交互,是一个请求-响应模型!!!

在这里插入图片描述

  • 请求:

    • 请求行
    • 请求头
    • 请求正文
  • 响应:

    • 响应行
    • 响应头
    • 响应正文

请求的执行流程

在这里插入图片描述

  • 发起请求
  • 域名解析
    本地域名解析器(C:\Windows\System32\drivers\etc\host),
    如果本地解析器无法解析,那么就交给互联网上的DNS解析器
    得到IP
  • 根据ip和端口,可以得到一个Socket对象,执行请求
    携带请求行、请求头、请求正文
  • 服务器响应浏览器
    携带响应行、响应头、响应正文

http请求

  • 请求组成
    请求行、请求头、请求正文
  • 请求行
    • Request URL : 请求路径,告诉服务器要请求的资源路径
    • Request Method : 请求方式 , GET/POST
    • protocol : http协议版本
  • GET请求和POST请求:
    • get请求只能携带小数据、get请求下的请求参数会直接拼接到Request URL(请求网址)后面,QueryStringParameters
    • post请求可以携带大数据、post请求下的请求参数会存放到请求正文
    • 请求参数:比如,表单中的输入框中的值.
    • 如果我们要做文件上传,需要用到post请求,文件比较大!!
  • 请求头
    • Content-Type:浏览器告诉服务器,请求正文的数据类型
    • User-Agent:浏览器告诉服务器,我是个什么样的浏览器
  • 请求正文
    • 请求正文,只有当请求方式为post,且有请求参数时才会有请求正文!!!
    • Form Data
      在这里插入图片描述

08_Http响应

  • Http响应组成
    响应行、响应头、响应正文

  • 响应行

    • Status Code : 响应状态码
    • 常见的有:
      • 200:服务器响应成功
      • 302: 告诉浏览器,进行重定向
      • 304: 页面上的内容没有发生改变,不需要重新请求服务器
      • 404: 没有对应的服务器资源
      • 500:服务器内部错误!
  • 响应头

    • Location:告诉浏览器重定向的资源路径,需要结合响应状态码302使用
    • Content-Type:服务器告诉浏览器,响应正文的数据类型
    • Content-Type:text/html;charset=utf-8; 服务器告诉浏览器,响应正文是文本和html标签;告诉浏览器,应该以utf-8的形式进行解码!浏览器就会以html标签及utf-8的形式对响应正文进行渲染显示!!!
    • refresh:定时跳转
    • Content-Disposition:文件下载
  • 响应正文

    • 浏览器显示的内容

Servlet的概述及入门

  • 概念
    servlet就是一个java程序,可以和浏览器进行交互,servlet的使用需要有服务器编译环境的支持!!
  • 服务器编译环境确认和设置
    Extenal Libaries中必须要有服务器的jar包
    在这里插入图片描述
    而上述图中,只有java的编译环境!不支持服务器的编译环境,比如:HttpServlet!
  • 得让当前工程支持web服务器的编译环境,解决步骤如下:
    在这里插入图片描述
    在这里插入图片描述

Servlet的入门案例

  • 自定义Servlet继承HttpServlet
  • 重写doGet方法和doPost方法
  • 在web.xml配置servlet
    • 声明自定义Servlet
    • 给自定义Servlet配置访问名称
  • Servlet的执行流程
    • 浏览器发起请求: http://localhost:8080/day50/demo01
    • 就会在服务器中找访问名称为demo01的Servlet -> Demo01Servlet
    • 请求的处理就交给了Demo01Servlet的实例,根据请求方式get/post,决定是给doGet还是doPost方法处理!!!
  • 注意事项
    • 不管是get请求还是post请求,对于服务器来说,没差别的!!!
    • get请求将请求参数放到请求网址
    • post请求将请求参数放到请求正文
    • 服务器最终无非就要获取请求参数。getParameter()方法!

Servlet概念

  1. 概念
    HttpServlet继承于GenericServlet、GenericServlet实现于Servlet,也就是说Servlet是顶层接口!!!
    在这里插入图片描述
  2. 如果要实现Servlet功能

方式一:实现Servlet接口

在servlet接口中,没有doGet和doPost方法,处理请求是service方法(抽象的)

方式二:继承GenericServlet类

在GenericServlet类中,没有doGet和doPost方法,处理请求是service方法(抽象的)

方式三:继承HttpServlet类

猜想,HttpServlet类中重写service方法。

根据源码,发现重写service方法中,

有将ServletRequest强转为HttpServletRequest, 

将ServletResponse强转为HttpServletResponse

以上强转是因为,ServletRequest和ServletResponse并没有针对Http协议做优化!!!无法专门针对http协议调用方法!!

HttpServletRequest和HttpServletResponse有针对http协议做优化!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值