注:看狂神说做的笔记

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 服务器

官网:https://tomcat.apache.org/

下载的Tomcat包,解压后的目录结构:

Tomcat端口:8080

HTTP端口:80

HTTPS端口:443

谈谈网站是如何进行访问的?

  1. 在浏览器中输入网址
  2. 尝试从本机的host的文件中获取ip地址,获取不到以后,从DNS服务器中拿
  3. 得到ip地址 使用TCP协议(三次握手)建立TCP连接
  4. 为了连接服务器,需要使用IP协议ARP协议OSPF协议
  5. 现在我们能和服务器进行通信,还建立了TCP连接,下一步用http请求请求网页的内容(get、post等请求)
  6. 服务器进行请求的响应,根据协议返回内容,如html格式。
  7. 浏览器进行网页的渲染。
  8. 断开连接时进行四次挥手

注:加粗的都是面试题

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:键值对,传递给服务器
  1. 请求方法

    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

我们为什么要学习这个技术

  1. 在java中我们有许多jar包,自己一个一个下载太麻烦。
  2. 我们想要一个东西,我们只需要说我们需要什么,软件就帮我们导入什么,找不到的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 入门到实战的更多相关文章

  1. 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

    最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...

  2. docker-9 supervisord 参考docker从入门到实战

    参考docker从入门到实战 使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机 ...

  3. webpack入门和实战(一):webpack配置及技巧

    一.全面理解webpack 1.什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都 ...

  4. CMake快速入门教程-实战

    http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ http://blog.csdn.net/dbzhang800/article/detai ...

  5. Sping Boot入门到实战之入门篇(三):Spring Boot属性配置

    该篇为Sping Boot入门到实战系列入门篇的第三篇.介绍Spring Boot的属性配置.   传统的Spring Web应用自定义属性一般是通过添加一个demo.properties配置文件(文 ...

  6. Sping Boot入门到实战之入门篇(二):第一个Spring Boot应用

    该篇为Spring Boot入门到实战系列入门篇的第二篇.介绍创建Spring Boot应用的几种方法. Spring Boot应用可以通过如下三种方法创建: 通过 https://start.spr ...

  7. Sping Boot入门到实战之入门篇(一):Spring Boot简介

    该篇为Spring Boot入门到实战系列入门篇的第一篇.对Spring Boot做一个大致的介绍. 传统的基于Spring的Java Web应用,需要配置web.xml, applicationCo ...

  8. Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置

    该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现.   Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...

  9. Sping Boot入门到实战之实战篇(一):实现自定义Spring Boot Starter——阿里云消息队列服务Starter

    在 Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置 这篇中,我们知道Spring Boot自动化配置的实现,主要由如下几部分完成: @EnableAutoConfigu ...

  10. BDD敏捷开发入门与实战

    BDD敏捷开发入门与实战 1.BDD的来由 2003年,Dan North首先提出了BDD的概念,并在随后开发出了JBehave框架.在Dan North博客上介绍BDD的文章中,说到了BDD的想法是 ...

随机推荐

  1. Angular 17+ 高级教程 – Routing 路由 (功能篇)

    前言 这篇只讲功能不讲原理.没有循序渐进,没有由浅入深,一个主题讲到底. Route 目录 上一篇 Angular 17+ 高级教程 – Routing 路由 (原理篇) 下一篇 Angular 17 ...

  2. CSS & JS Effect – Textarea Autoresize

    前言 这是一个很普遍的体验, 而且实现起来也很简单哦 参考 YouTube – How to Auto Resize Textarea using HTML CSS & JavaScript ...

  3. Figma 学习笔记 – Layout Grid

    前言 我原本以为, 在 Figma 只要用 Auto Layout 就可以打天下. 真的是 too young too simple. 要做一个简单的 7:3 比例, 用 Auto Layout 是做 ...

  4. PTA甲级—图

    1.图的遍历 1013 Battle Over Cities (25 分) 一种方法使用dfs求连通块的个数 #include <cstdio> #include <cstring& ...

  5. Go runtime 调度器精讲(十):异步抢占

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占.本讲会介绍基于信号的真抢占式调度. 在介绍真抢占式调度之前看下 Go 的两种抢 ...

  6. Java 8 新特性:Stream 流快速入门

    前言 在 java 中,涉及到对数组.集合等集合类元素的操作时,通常我们使用的是循环的方式进行逐个遍历处理,或者使用 stream 流的方式进行处理. 什么是 Stream? Stream(流)是一个 ...

  7. 记录JDK8到JDK17各个版本的更新重点

    虽然大多数公司还是用的JDK8但是也要去了解和学习一下新得东西 ## JDK8新特性(2014年初)(LTS版本) 1.Lambda表达式 2.函数式编程 3.接口可以添加默认方法和静态方法,也就是定 ...

  8. LeetCode 730. Count Different Palindromic Subsequences (区间DP)

    题意 给一个字符串S,求它所有子序列中不同非空回文串的数量.字符串由 'a' 'b' 'c' 'd' 四个字母组成. 由于题目要求的是不同回文串. abba 的回文串子序列为 a,b,aba,abba ...

  9. ftrace irqs跟踪器

    当中断被关闭(俗称关中断)了,CPU就不能响应其他的事件,如果这时有一个鼠标中断,要在下一次开中断时才能响应这个鼠标中断,这段延迟称为中断延迟.向current_tracer 文件写入 irqsoff ...

  10. 将一个Eigen::Matrix中的数据(数组格式),按行写入到json文件当中.

    1.这里主要实现如何以数组的形式写入到json文件当中,因为c++的Jsoncpp库中的.append只支持一个字符的写入(还是python的json友好).去网上找了老久的解决办法,发现中文解答全是 ...