JavaWeb
最近在学习狂神的javaweb系列课程,笔记分享如下
1. 动态web
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HWT1pV0p-1603285419026)(/home/guos/.config/Typora/typora-user-images/image-20201012170554207.png)]
2. Tomcat
2.1 Tomcat
- 配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KpqTvIhy-1603285419028)(file:///home/guos/.config/Typora/typora-user-images/image-20201012165023514.png?lastModify=1602492621)]
可以配置端口号
-
Tomcat的默认端口号: 8080
-
MySQL的默认端口号:3306
-
http默认端口号:80
-
https的默认端口号:443
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
可以配置主机的名称
-
默认的主机名为:localhost-> 127.0.0.1
-
默认的网站应用存放位置为: webspps
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
高难度面试题
请谈谈网站是如何进行访问的?
-
输入一个域名,回车
-
检查本机的C:\Winsows\System32\drivers\etc\hosts配置文件下有没有这个域名的映射
1)有直接返回对应ip地址,在这个地址中有我们需要访问的web程序,可以直接访问
127.0.0.1 www.qinjiang.com
2)没有:去DNS服务器找,找到的话就返回,找不到就找不到:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnq7CqhZ-1603285419030)(/home/guos/.config/Typora/typora-user-images/image-20201012172111249.png)]
2.2 发布一个web网站
-
将自己写的网站,放到服务器(Tomcat)中指定的应用文件夹(webapps)下,就可以通过 localhost:8080/kuangsudy/ 进行访问;
-
网站应该有的结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EwqZYntZ-1603285419031)(/home/guos/.config/Typora/typora-user-images/image-20201012182026126.png)]
3 . Http
3.1 什么是HTTP
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
- 文本: html, 字符串
- 超文本:图片、音乐、视频、定位、地图
- 端口号:80
https: 安全的
- 端口:443
Http和Https的异同:
HTTP特点:
- 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
- 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
- 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
- 简单快速、灵活
- 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
HTTPS特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
3.2 http 请求
-
客户端–发请求–服务器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gOxdi4zi-1603285419032)(/home/guos/.config/Typora/typora-user-images/image-20201012190350843.png)]
3.3 http 响应
- 服务器-- 响应–客户端
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yeuk5wk5-1603285419034)(/home/guos/.config/Typora/typora-user-images/image-20201012184433869.png)]
1. 响应体
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b6H5V9Px-1603285419034)(/home/guos/.config/Typora/typora-user-images/image-20201012191518329.png)]
2. 响应状态码
200: 请求响应成功
3×× :请求重定向
- 重定向: 重新到给的新位置去
404: 找不到资源
-
资源不存在
5××:服务器代码错误
常见面试题:
当你在浏览器的地址栏输入地址并回车的一瞬间到页面能够展示出来,经历了什么
4.Servlet原理
Servlet是由Web服务器调用,具体流程如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GNLiYOe9-1603285419035)(/home/guos/桌面/笔记/JavaWeb.assets/image-20201015191724931.png)]
在web.xml中注册Servlet
<!--注册Servlet-->
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.guo.servlet.HelloServlet</servlet-class>
</servlet>
4.1 Servlet简介
- 是sun公司开发的动态web的一门技术
- sun在这些API中提供一个接口,叫做Servlet,如果想要开发一个Servlet程序,需要完成两个步骤:
- 编写一个类,实现Servlet接口
- 把开发好的Java类部署到web服务器中
把实现了Servlet接口的Java程序叫做Servlet
4.2 HelloServlet
-
构建一个普通的maven项目,删掉其中的src目录,在里面建立一个个model就是一个个项目,这个空的工程就是maven的主工程;
-
关于maven父子工程的理解:
父项目中会有
<modules> <module>servlet-01</module> </modules>
子项目中会有
<parent> <artifactId>javaweb-02-maven</artifactId> <groupId>com.guo</groupId> <version>1.0-SNAPSHOT</version> </parent>
父项目中的jar包子项目可以直接使用
java原型: son extends father
-
Maven 环境优化
- 修改web.xml为最新的
- 将maven环境构建完整
- 修改web.xml为最新的
4.新建包com.guo.servlet 在下面建类HelloServlet, 实现HttpServlet类,重写其中的doGet(),doSet方法
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
// 响应的类型: html
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
// 获取响应的输出流
PrintWriter out = response.getWriter();
out.println("<html>");
out