千锋逆战班学习第50天
千锋逆战班学习第40天
努力或许没有收获,但不努力一定没收获,加油。
今天我学习了IDEA部署tomcat。
中国加油!!!武汉加油!!!千锋加油!!!我自己加油!!!
IDEA部署web应用程序
-
创建一个JavaWeb工程,Java Enterprise 、Web Application
-
项目名称、工作空间的选择
-
JavaWeb目录介绍
-
DEA配置tomcat
- 选择Edit Configurations,
- 点击加号 ->tomcat server -> local
- 点击Configure -> 点击加号 -> 选择tomcat
-
tomcat配置
tomcat插件
on update action:
Redeploy:重新部署项目
项目配置:部署项目到tomcat访问名称
idea部署Web项目的方式
-
概念
idea部署web项目的方式,本质就是虚拟目录优化版,但是有一些区别! -
步骤
- 根据本地安装的tomcat,会给当前项目生成一个tomcat镜像,部署到tomcat镜像相当于部署到本地tomcat中
- 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中
-
概念
根据上一个知识点,只有资源来到了day50_war_exploded文件夹中,才意味着部署成功!!! -
到底有哪些可以部署?
- src文件夹:
- 可以部署上去!部署到了项目中的\WEB-INF\classes文件夹中
- web文件夹:
- 可以部署上去!部署到了项目目录中!
- day50项目下:
- 不可以部署上去
Http协议
-
协议
两个设备进行数据交换的约定! -
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概念
- 概念
HttpServlet继承于GenericServlet、GenericServlet实现于Servlet,也就是说Servlet是顶层接口!!!
- 如果要实现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协议做优化!!!