JavaWeb 入门到实战
注:看狂神说做的笔记
1.基本概念
1.1 前言
web开发:
- web:网页的意思,www.baidu.com,就是一个web页面
- 静态web:
- 不与数据库进行交互,静态显示网页数据(你刚学 html,css的时候写的页面,没有网络点击也可以显示)
- html、css、js
- 缺点:无法与数据库进行交互,数据无法持久化
- 动态web:
- 现在大多数的网页都是动态的,每个人不同时刻、地点显示出不同的页面,比如你和别人打开的淘宝页面内容不一样吧。
- 与数据库进行交互,比如你登陆网站,那就是动态web
- 技术栈:Servlet/Jsp、ASP、PHP
在Java中,动态web资源开发的技术统称为JavaWeb。

1.2 web应用程序
web应用程序:可以提供浏览器访问的程序
- a.html b.html ...多个资源进行整合,提供给其他人访问。
- 访问的任何一个页面,都一定存在于一台物理机
- URL:统一资源定位符
- 一个web应用程序由多部份组成*(静态web与动态web)
- HTML,css,js
- jsp,servlet
- Java程序
- jar包
- 配置文件(properties)
web应用编写完毕后,若想提供给外界访问,需要一个服务器统一管理:资源目录映射。
2.web 服务器
2.0 JavaWeb工作原理

服务端 有着程序网络编程、多线程问题(多用户访问)。
Web服务器软件封装了上述的需求:

服务器是一个被动的存在,等待响应请求。.
ASP,JSP,PHP,tomcat
ASP:
- 微软:国内最早
- 在html中嵌入VB脚本
2.1 tomcat 服务器
下载的Tomcat包,解压后的目录结构:

Tomcat端口:8080
HTTP端口:80
HTTPS端口:443
谈谈网站是如何进行访问的?
- 在浏览器中输入网址
- 尝试从本机的host的文件中获取ip地址,获取不到以后,从DNS服务器中拿
- 得到ip地址 使用TCP协议(三次握手)建立TCP连接
- 为了连接服务器,需要使用IP协议、ARP协议、OSPF协议
- 现在我们能和服务器进行通信,还建立了TCP连接,下一步用http请求请求网页的内容(get、post等请求)
- 服务器进行请求的响应,根据协议返回内容,如html格式。
- 浏览器进行网页的渲染。
- 断开连接时进行四次挥手
注:加粗的都是面试题
2.2 HTTP
1.URL: Uniform Resource Locator 统一资源定位符

https://www.baidu.com/personInfo/student?userId=10000
- https:协议名称,常见有*http与https**
- www.baidu.com:服务器地址,此处为域名,通过DNS服务器可解析为一个IP地址。百度这里会使用反向代理的技术
- /personInfo/student:带层次的文件路径
- userId=10000:键值对,传递给服务器
- 请求方法
get,post,put,delete等
get:获取资源。
post:传输实体,多用于提交用户数据给服务器
谈谈get与post的区别
1.语义不同:get一般用于请求数据,post一般用于提交数据
2.get的body一般为空,请求参数放在URL中,有限制长度。post中querystring一般为空
3.get一般是幂等的,post一般是不幂等的
4.get可以被缓存,post不能被缓存。(post每次请求数据都不一样,怎么进行缓存,想想什么数据才需要用缓存)
3.头信息
Host:表示服务器主机的地址和端口
Content-Length:表示body中数据长度
Content-Type:表示body中的数据格式,告诉端系统的渲染格式
User-Agent(UA):设置浏览器/操作系统的属性
Referer:表示这个页面从那个页面跳转过的
Cookie:存储一个字符串
4.Body信息
2.3 响应码
1xx:接收的请求正在处理
2xx:请求正常处理完毕
3xx:重定向
4xx:客户端错误。服务器无法处理请求
5xx:服务器错误。服务器处理器请求出错
3.Maven
我们为什么要学习这个技术
- 在java中我们有许多jar包,自己一个一个下载太麻烦。
- 我们想要一个东西,我们只需要说我们需要什么,软件就帮我们导入什么,找不到的jar包从网络上进行下载。
jar包,是一种归档文件,就是压缩文件。
约定大于配置
比如,使用框架,能使用默认就使用默认,当存在特殊的需求时候,自定义配置就好,这样可以大大减少工作量。
例如SpringBoot中的application.yml文件

maven自动将插件和依赖导入。
关于maven的父子工程理解
- 父项目中会由moudle,子项目中会有一个parent标签
- 父项目中的jar包,子项目可以使用。但是子项目中jar包父项目不可使用。
4.Servlet技术
4.1 什么是servlet?
- Servlet是开发动态web的一门技术
- Sun公司在API中提供了Servlet接口,如果你想开发一个Servlet,只需要两个步骤:
*编写类实现接口
*开发好的类部署在web服务器上 - 接口Sun公司有两个默认的实现类:httpServlet、GenericServlet

4.2 编写一个Servlet程序(先要导入Servlet包)
- 1.编写一个普通类,实现Servlet接口,重写doget()和dopost(),可以相互调用
- 2.编写Servlet映射

- 3.配置Tomcat:配置项目发布的路径
4.3 Servlet原理

4.4 Mappping问题
一个servlet可以指定多个映射路径,也可指定一些后缀或者前缀。
JavaWeb 入门到实战的更多相关文章
- 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】
最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...
- docker-9 supervisord 参考docker从入门到实战
参考docker从入门到实战 使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机 ...
- webpack入门和实战(一):webpack配置及技巧
一.全面理解webpack 1.什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都 ...
- CMake快速入门教程-实战
http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ http://blog.csdn.net/dbzhang800/article/detai ...
- Sping Boot入门到实战之入门篇(三):Spring Boot属性配置
该篇为Sping Boot入门到实战系列入门篇的第三篇.介绍Spring Boot的属性配置. 传统的Spring Web应用自定义属性一般是通过添加一个demo.properties配置文件(文 ...
- Sping Boot入门到实战之入门篇(二):第一个Spring Boot应用
该篇为Spring Boot入门到实战系列入门篇的第二篇.介绍创建Spring Boot应用的几种方法. Spring Boot应用可以通过如下三种方法创建: 通过 https://start.spr ...
- Sping Boot入门到实战之入门篇(一):Spring Boot简介
该篇为Spring Boot入门到实战系列入门篇的第一篇.对Spring Boot做一个大致的介绍. 传统的基于Spring的Java Web应用,需要配置web.xml, applicationCo ...
- Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置
该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现. Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...
- Sping Boot入门到实战之实战篇(一):实现自定义Spring Boot Starter——阿里云消息队列服务Starter
在 Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置 这篇中,我们知道Spring Boot自动化配置的实现,主要由如下几部分完成: @EnableAutoConfigu ...
- BDD敏捷开发入门与实战
BDD敏捷开发入门与实战 1.BDD的来由 2003年,Dan North首先提出了BDD的概念,并在随后开发出了JBehave框架.在Dan North博客上介绍BDD的文章中,说到了BDD的想法是 ...
随机推荐
- 【笔记】利用七牛云CDN加速提高前端图片静态资源访问速率
第一步,注册七牛云账号 打开 七牛开发者平台,选择 注册,注册后登录系统然后实名认证. 第二步,创建七牛云空间 七牛对象存储将数据文件以资源的形式上传到空间中.您可以创建一个或者多个空间,然后向每个空 ...
- CSS & JS Effect – 脉冲 Pulse Play Button
效果 参考 Youtube – Create a pulsing animation with CSS 重点 在背后做一个一样大的 div border 然后 animation scale up. ...
- 使用Minio Clinet将老版本Minio的数据迁移到新版本的Minio
1. 关于Minio Client: MinIO Client是一个命令行工具,用于与Minio或云存储服务进行交互.它支持文件系统和Amazon S3兼容的云存储服务(AWS Signature v ...
- 用C#写个PDF批量合并工具简化日常工作
一. 前言 由于项目需要编写大量的材料,以及各种签字表格.文书等,最后以PDF作为材料交付的文档格式,过程文档时有变化或补充,故此处理PDF文档已经成为日常工作的一部分. 网上有各种PDF处理工具,总 ...
- 可视化U-Net编码器每层的输出(在已经训练好的模型下展示,并不是初始训练阶段展示)
想看一下对于一个训练好的模型,其每一层编码阶段的可视化输出是什么样子的.我以3Dircabd肝脏血管分割为例,训练好了一个U-Net模型.然后使用该模型在推理阶段使用,并可视化了每一层编码器. 分割结 ...
- sigmod、tanh、ReLU激活函数的实现
import torch import torch.nn.functional as F import matplotlib.pyplot as plt import numpy as np x = ...
- PostgreSQL 15新版本特性解读(含直播问答、PPT资料汇总)
2022年6月23日,墨天轮技术社区联合PostgreSQL中文社区共同举办[PostgreSQL 15 新特性解读]直播活动. 小编在这里整理了直播间的代表性问题,请老师为大家解答.并在文末附上视频 ...
- vue打包的时候删除 console 和 debugger
esbuild: { pure: VITE_DROP_CONSOLE ? ['console.log', 'debugger'] : [], supported: { // https://githu ...
- OOP的核心思想
1. 封装 既是信息封装,把一些信息进行封装成对象,只保留部分接口和方法与外部联系,能有效避免程序间相互依赖,实现代码模块间松藕合 : 2. 继承 子类自动继承父类的属性和方法,继承实现了代码的重用性 ...
- js中判断数据类型的方法有哪些
判断数据类型可以使用 typeof 但是typeof 判断数组和函数时返回的都是Object 不能具体判断,这时使用 instanceof 可以判断对象是否是另一个函数创造的 : 用法: typeof ...
