目录
- 1 web的基本概念
-
- 1.1 前言
- 1.2 web应用程序
- 1.3 静态web
- 1.4 动态web
- 2.web服务器讲解
-
- 2.1 技术讲解
- 2.2 web服务器
- 3.tomcat详解
-
- 3.1 安装tomcat
- 3.2 tomcat启动和配置
- 3.3 配置
- 3.4 发布一个web网站
- 4.http详解
-
- 4.1 什么是HTPP
- 4.2 两个时代
- 4.3 Http请求
-
- 4.3.1.请求行
- 4.3.2.消息头
- 4.4 Http响应
-
- 4.4.1.响应体
- 4.4.2.响应状态码
- 5.Maven环境搭建
-
- 5.1 Maven项目架构管理工具
- 5.2 下载安装Maven
- 5.3 环境变量配置
- 5.4 阿里云镜像
- 5.5 本地仓库
- 6.idea中的maven操作
-
- 6.1创建一个maven项目
- 6.2 创建一个普通的maven项目
- 6.3 标记文件夹功能
- 6.4 在idea中配置tomcat
- 6.6 idea操作
- 7.解决大家遇到的一些问题
-
- 7.1 maven 3.8.5
- 7.2 tomcat闪退
- 7.3 idea中每次都要重复配置maven
- 7.4 maven项目中tomcat无法配置
- 7.5 maven默认web项目中的web.xml版本问题
- 7.6 maven仓库的使用
- 8.helloServlet
-
- 8.1 servlet简介
- 8.2 HelloServlet
- 9.servlet原理
-
- 9.1Mapping问题
- 10.servletContext对象
-
- 10.1. 共享数据
- 11.servletContext应用
-
- 11.1.获取初始化参数
- 11.2.请求转发
- 11.3.读取资源文件
- 12.response下载文件
-
- 12.1.HttpServletResponse
- 12.2.简单分类
- 12.3.常见应用
- 13.response验证码实现
- 14.response重定向
- 15.request应用
-
- 15.1.获取参数、请求转发
- 16.cookie讲解
-
- 16.1.Session 会话
- 16.2.会话保持的两种技术
- 16.3.Cookie
- 17.session详解(重点)
-
- 17.1.session
- 18.jsp原理剖析
-
- 18.1.什么是jsp
- 18.2.jsp原理
- 19.jsp基础语法和指令
-
- 19.1.jsp表达式
- 19.2.jsp脚本片段
- 19.3.脚本片段的再实现
- 19.4.jsp申明
- 19.5.jsp指令
- 20.jsp内置对象及作用域
-
- 20.1.九大内置对象
- 21.jsp、jstl标签、EL表达式
- 22.javabean及作业
1 web的基本概念
1.1 前言
web开发:
- web,网页的意思
- 静态web
- html、css
- 提供给所有人看的数据始终不会发生变化!
- 动态web
- 淘宝,几乎是所有的网站。
- 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同。
- 技术栈:servlet/JSP,ASP,PHP
在java中,动态web资源开发的技术统称为JavaWeb
1.2 web应用程序
web应用程序:可以提供浏览器访问的程序
- a.html 、b.html … 多个web资源,这些web资源可以被外界访问,对外界提供服务。
- 你能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上。
- URL
- 这个统一的web资源会被放在同一个文件夹下,web应用程序→Tomcat:服务器
- 一个web应用由多部分组成(静态web,动态web)
- html,css,js
- jsp,servlet
- java程序
- jar包
- 配置文件(Properties)
web应用编写完毕后,若想提供给外界访问,需要一个服务器来统一管理。
1.3 静态web
*.htm, *.html这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。
静态web存在缺点
- web页面无法动态更新,所有用户看到都是同一个页面
- 轮播图,点击特效:伪动态
- JavaScript【实际开发中,它用的最多】
- VBScript
- 它无法和数据库交互(数据无法持久化,用户无法交互)
1.4 动态web
页面会动态展示:web的页面展示的效果因人而异
缺点:
- 假如服务器的动态资源出现了错误,我们需要重新编写我们的后台程序,重新发布。
- 停机维护
优点:
- web页面可以动态更新,所有用户都可以看到不同的页面
- 它可以与数据库交互(数据持久化)
2.web服务器讲解
2.1 技术讲解
ASP:
- 微软:国内最早流行的就是ASP
- 在html中嵌入了VB的脚本,ASP+COM
- 在ASP开发中,基本一个页面都是几千行的业务代码,页面极其乱
- 维护成本高
- C#
- IIS
PHP:
- PHP开发速度很快,功能很强大,跨平台,代码很简单
- 无法承载大访问量的情况(局限性)
JSP/Servlet:
- sun公司主推的B/S架构
- 基于java语言的(所有的发送四,或者一些开源的组件,都是用java写的)
- 可以承载三高问题带来的影响
- 语法像ASP,ASP→JSP,加强市场强度
2.2 web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息
IIS
微软的 windows中自带的
Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个java初学web的人来说,它是**的选择。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。
工作3-5年之后,可以尝试手写tomcat服务器。
下载tomcat:
- 安装 or 解压
- 了解配置文件及目录结构
- 这个东西的作用
3.tomcat详解
3.1 安装tomcat
官网:https://tomcat.apache.org/

解压
3.2 tomcat启动和配置
文件夹作用:

启动,关闭tomcat

访问测试:http://localhost:8080/
可能遇到的问题:
- java环境变量没有配置
- 闪退问题:需要配置兼容性
- 乱码问题:配置文件中设置
3.3 配置

可以配置启动的端口号
tomcat的默认端口为:8080
mysql默认端口:3306
http默认端口:80
https默认端口:443
讯享网可以配置主机的名称
讯享网
高难度面试题:
请你谈谈网站是如何进行访问的?
- 输入一个域名;回车
- 检查本机的配置文件 C:WindowsSystem32driversetchosts下有没有这个域名的映射
- 有:直接返回对应的ip地址,这个地址中,有我们需要放的web程序,可以直接访问
- 没有:去DNS服务器找,找到的话就返回,找不到就返回找不到

3. 可以配置一下环境变量(可选项)
3.4 发布一个web网站

不会就先模仿
- 将自己写的网站,放到服务器(tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了
网站应该有的结构:
4.http详解
4.1 什么是HTPP
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。
- 文本:html,字符串…
- 超文本:图片,音乐,视频,定位,地图…
- 80
HTTPS:安全的
- 443
4.2 两个时代
- http1.0
HTTP/1.0 : 客户端可以与web服务器连接后,只能获得一个web资源,断开连接
- http2.0
HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
4.3 Http请求
客户端—发送请求(Request)—服务器
百度请求:
讯享网
4.3.1.请求行
请求行中的请求方式:GET
请求方式:GET/POST, HEAD,DELETE,PUT,TRACT…
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址拦显示数据内容,不安全,但是高效
- post:请求能都携带的参数没有限制,大小没有限制,不会再在浏览器的URL地址拦显示数据内容,安全,但是不高效。
4.3.2.消息头
4.4 Http响应
服务器—响应—客户端
百度响应:
4.4.1.响应体
4.4.2.响应状态码
200:请求响应成功
5xx:服务器代码错误 500 502(网关错误)
常见面试题:
当你的浏览器中地址拦输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
- (域名解析)在客户端,浏览器输入地址后,首先会在windows系统文件的hosts中查找是否有对应的ip地址,如果没有则需要向DNS域名解析服务器询问该域名对应的ip地址。
- (TCP三次握手)获取相应的ip地址后,客户端与服务器端建立TCP连接(三次握手),(网络层,数据链路层,物理层)
三次握手–>
第一次握手:客户端向服务器端发送一个SYN段,该段中包含客户端的初始序列号。
第二次握手:服务器端返回客户端SYN+ACK,该端中包含服务器端的初始序列号,ACK表示,已经确定收到客户端的SYN段。
第三次握手:客户端向服务器端响应一个ACK端,ACK表示,已经确定接受到服务器端的SYN段。 - (建立起TCP连接后发起http请求)客户端向服务器端发送请求,包含请求行,请求头。主要的两种请求方式(GET与POST)
–>GET:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据的内容,不安全,但高效。
–>POST:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。 - (服务器响应http请求)服务器处理请求,并返回响应,包含状态码,响应头,响应体。
- (浏览器解析http代码)浏览器收到响应,解析http代码渲染页面,并在浏览器页面展示出来。
- (断开连接)http1.0短连接,http1.1长连接。
5.Maven环境搭建
我们为什么要学习这个技术?
- 在javaweb开发中,需要使用大量的jar,我们手动去导入
- 如何能够让一个东西自动帮我导入和配置这个jar包
由此,Maven诞生了!
5.1 Maven项目架构管理工具
我们目前就是方便导入jar包的
Maven的核心思想:约定大于配置
- 有约束,不要去违反
Maven会规定好你该如何取编写我们的java代码,必须要按照这个规范来。
5.2 下载安装Maven
官网:https://maven.apache.org/
下载完成后,解压即可

友情建议:电脑上的所有环境都放到一个文件夹下,方便管理
5.3 环境变量配置
在我们的系统环境变量中
配置如下配置:
测试Maven是否安装成功,保证必须配置完毕!

5.4 阿里云镜像
镜像:mirrors
作用:加速我们的下载
国内建议使用阿里云的镜像
5.5 本地仓库
在本地的仓库,远程仓库;
建立一个本地仓库: localRepository
6.idea中的maven操作
6.1创建一个maven项目
- 启动idea
- 创建一个maven web项目


- 等待项目初始化完毕

- 观察maven仓库中多了什么东西?
- idea中maven设置
idea项目创建成功后,看一眼Maven的配置


到这里,maven在idea中的配置和使用就ok了

6.2 创建一个普通的maven项目
不选,直接next,next,next


如果报错了,比如出现:
是因为它配置了IDEA自带的Maven版本,这时候自己设置成本地的版本

6.3 标记文件夹功能
方法【1】

方法【2】


6.4 在idea中配置tomcat
点击下面这里
点击加号,【tomcat service】 --》【local】
配置tomcat服务器
启动tomcat

maven的高级之处在于它会帮你导入这个jar包所依赖的其他jar包
maven由于他的约定大于配置,我们之后可能会遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:
6.6 idea操作
目录树

7.解决大家遇到的一些问题
7.1 maven 3.8.5
报错:unable to import maven project:see logs for details
解决方法:降级为3.6.3
7.2 tomcat闪退
7.3 idea中每次都要重复配置maven
在idea中的全局默认配置中去配置


7.4 maven项目中tomcat无法配置
7.5 maven默认web项目中的web.xml版本问题

替换为webapp4.0版本和tomcat一致(看tomcat下的webapps里面的官方案例)
7.6 maven仓库的使用
可以找例子:http://localhost:8080/


Maven仓库地址:https://mvnrepository.com/



web.xml
HelloServlet.java

然后就可以:

8.helloServlet
8.1 servlet简介
- servlet就是sun公司开发动态web的一门技术
- sun在这些api中提供一个接口叫做:servlet,如果你想开发一个servlet程序,只需要完成两个小步骤:
- 编写一个类,实现servlet接口
- 把开发好的java类部署到web服务器中
把实现了servlet接口的java程序叫做,servlet
8.2 HelloServlet
servlet接口sun公司有两个默认的实现类:HttpServlet、GenericServlet
1.建立一个普通的maven项目,删除src目录

2.然后在此项目中,新建一个module(javaweb maven项目)
关于maven父子工程的理解:
父项目中会有
子项目中会有
父项目中的jar包子项目可以直接使用

导servlet包(父项目POM文件中)
3.maven环境优化
- 修改web.xml为最新的
- 将maven的结构搭建完整

4.编写一个servlet程序
编写一个普通类,实现servlet接口,这里我们直接继承HttpServlet
5.编写一个servlet的映射
为什么需要映射:我们写的是java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的servlet,还需要给他一个浏览器能够访问的路径。
6.配置tomcat

注意:配置项目发布的路径
7.测试
9.servlet原理
9.1Mapping问题
- 一个servlet可以指定一个映射路径
- 一个servlet可以指定多个映射路径
- 一个servlet可以指定通用映射路径
- 注意下面这样重启服务就不会默认进入到index.jsp页面了(不推荐使用)
- 指定一些后缀或者前缀等等
- 优先级问题
制定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求
web.xml
HelloServlet.java
ErrorServlet.java


10.servletContext对象
web容器在启动的时候,它会为每个web程序都创建一个对应的servletContext对象,它代表了当前的web应用。
10.1. 共享数据
我在这个servlet中保存的数据,可以再另外一个servlet中拿到
- 新建一个module

- HelloServlet.java
- GetServlet.java
- web.xml
- 测试
一开始就调用/getName

得先调用/hello,存数据

再调用/getName

11.servletContext应用
11.1.获取初始化参数
web.xml
ServletDemo03.java

11.2.请求转发

请求转发

重定向

11.3.读取资源文件
Properties
- 在java目录下新建properties
- 在resource目录下新建properties
发现:都被打包到同一个路径下:classes 我们俗称这个路径为classpath
思路:需要一个文件流
db.properties


12.response下载文件
12.1.HttpServletResponse
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,一个代表响应的HttpServletResponse
- 如果要获取客户端请求过来的参数:找HttpServletRequest
- 如果要给客户端响应一些信息:找HttpServletResponse
12.2.简单分类
- 负责向浏览器发送数据的方法
- 负责向浏览器发送响应头的方法
- 响应的状态码(常见)
响应状态码
12.3.常见应用
- 向浏览器输出消息
- 下载文件
- 获取下载文件的路径
- 下载的文件名是啥?
- 设置想办法让浏览器能都支持我们下载的东西 文件名是中文的时候,可以设置URLEncoder.encode(fileName, “UTF-8”),否则有可能乱码
- 获取下载文件的输入流
- 创建缓冲区
- 获取OutputStrem对象
- 将FileOutputStream流写入到buffer缓冲区
- 使用OutputStream将缓冲区中的数据输出到客户端
13.response验证码实现
验证码怎么来的?
- 前端实现
- 后端实现,需要用到java图片类,生成一个图片

14.response重定向
一个web之源收到客户端A请求后,B会通知A客户端去访问另外一个web资源C,这个过程就叫做重定向。

常见场景:
- 用户登录
面试题:请你聊聊重定向和转发的区别?
相同点
- 页面都会实现跳转
不相同点
- 请求转发,URL地址栏不会变; 307
- 重定向,URL地址栏会发生变化。 302
模拟登录
index.jsp
success.jsp

15.request应用
HttpServletRequest代表客户端的请求,用户通过http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest中,通过HttpServletRequest这个方法,可以获取客户端的所有信息


15.1.获取参数、请求转发


index.jsp
success.jsp
web.xml
测试

16.cookie讲解
16.1.Session 会话
会话: 用户打开一个浏览器,点击了很多超链接,访问了多个web资源,关闭浏览器,这个过程可以称之为会话。
有状态会话: 一个同学曾经来过教室,下次再来的教室的时候,我们会知道这个同学,曾经来过,称之为有状态会话。
你怎么证明你是西开的学生?
你 西开
- 发票 西开给你开发票
- 学校登记 西开标记你过来了
一个网站,怎么证明你来过?
客户端 服务器
- 服务端给客户端一个 信件,客户端下次访问服务端带上信件就可以;cookie
- 服务器登记你过来了,下次你来的时候我来匹配你。session
拓展:
http是一个无状态的协议
什么是无状态:就是说这次请求和上一次请求没有任何关系,互不认识。这种无状态的好处是快速。坏处是假如我们想要把www.zhihu.com/login.html和www.zhihu.com/index.html关联起来,必须使用某些手段和工具
16.2.会话保持的两种技术
cookie和session的区别
cookie
- 客户端技术(响应,请求)
session
- 服务端技术,利用这个技术,我们可以保存用户的会话信息,我们可以把信息或者数据放在session中。
常见场景:
- 网站登录之后,你下次不用再登录了,第二次访问直接就上去了。
16.3.Cookie
- 从请求中拿到cookie信息
- 服务器响应给客户端cookie
cookie:一般会保存在本地的用户目录下/AppData下
一个网站cookie是否存在上限?
- 一个cookie只能保存一个信息
- 一个web站点可以给浏览器发送多个cookie,每个web站点最多存放20个cookie(
不同的浏览器会有所不同) - cookie大小有限制4kb
- 浏览器上限是300个cookie
删除cookie
- 不设置有效期,关闭浏览器,自动失效
- 设置有效期时间为0
新建一个项目

pom.xml
web.xml
CookieDemo01.java
CookieDemo02.java
CookieDemo03.java
17.session详解(重点)
17.1.session
什么是session?
- 服务器会给每一个用户(浏览器)创建一个session对象;
- 一个session独占一个浏览器,只要浏览器没有关闭,session就存在;
- 用户登录之后,整个网站它都可以访问。–》保存用户的信息;保存购物车的信息

web.xml
也可以存对象
Person.java
清空session
web.xml
测试:先调用/s3清空,在调用/s2获取session信息,就会报错

web.xml可以设置session自动失效时间
session和cookie的区别
- cookie是把用户的数据写给浏览器,浏览器保存(可以保存多个);
- session是把用户的数据写到用户独占的session中,服务器端保存(保存重要的信息,避免服务器的资源浪费);
- session由服务器创建


使用场景: - 保存一个登录用户的信息
- 购物车信息
- 在整个网站中经常会使用的数据,我们会将它保存在session中
18.jsp原理剖析
18.1.什么是jsp
java server pages:java服务器端页面,也是servlet一样,用于动态web技术!
最大的特点:
- 写jsp就像在写html
- 区别:
- html只给用户提供静态数据
- jsp页面中可以嵌入java代码,为用户提供动态数据
18.2.jsp原理
思路:jsp到底怎么执行的?
- 代码层面看不出啥(jsp)
- 服务器内部工作
tomcat中有一个work目录
idea使用tomcat的会在idea的tomcat中生产一个work目录

我电脑的地址
发现页面转变了java程序!

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问servlet
jsp最终也会被转换为一个java类
jsp本质上就是一个servlet

源码分析

在jsp页面中
只要是java代码就会原封不动的输出
如果是html代码,就会被转换为
这样的格式输出到前端

19.jsp基础语法和指令
任何语言都有自己的语法,java有,jsp作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可),java所有语法都支持。
新建一个项目

导包pom.xml
19.1.jsp表达式
19.2.jsp脚本片段

19.3.脚本片段的再实现


19.4.jsp申明


jsp声明,会被编译到jsp生成java代码的类中!其他的,就会被生成到_jspService方法中!
在jsp,嵌入java代码即可

查看页面源代码

发现:jsp的注释,不会在客户端显示,html会!
19.5.jsp指令

定制错误页面
500.jsp

验证

或者web.xml中配置错误页面
web.xml
404.jsp

测试:

<%@include "%>
footer.jsp
header.jsp
jsp2.jsp
测试:

jsp标签

分析一下源码


20.jsp内置对象及作用域
20.1.九大内置对象
- PageContext【存东西】
- Request 【存东西】
- Response
- Session【存东西】
- Application(ServletContext)【存东西】
- config(ServletConfig)
- out
- page【基本用不到】
- exception
新建pageContextDemo1.jsp

新建pageContextDemo2.jsp
结果(需要先请求一下pageContextDemo1.jsp然后再请求pageContextDemo2.jsp,不然都取不到值)

新建pageContextDemo3.jsp
新建pageContextDemo4.jsp

request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻
session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据
21.jsp、jstl标签、EL表达式
导包
EL表达式: ${ }
- 获取数据
- 执行运算
- 获取web开发的常用对象
- 调用java方法
jsp标签
jsptag.jsp
jsptag2.jsp

JSTL标签
jstl标签库的使用就是为了弥补html标签的不足;它自定义了许多标签,可以供我们使用,标签的功能和java代码一样!
- 核心标签(掌握)
- 格式化标签
- sql标签
- xml标签
核心标签如下:

JSTL标签库使用步骤:
- 引用对应的taglib
- 使用其中的方法
- 在tomcat也需要引入jstl的包,否则会报错
coreIf.jsp
coreWhen.jsp
coreForeach.jsp
22.javabean及作业
实体类
javaBean特定的写法:
- 必须要有一个无参构造
- 属性必须私有化
- 必须有对应的get/set方法
一般用来和数据库字段做映射
ORM:对象关系映射
- 表—》类
- 字段—》属性
- 行记录–》对象










版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/8187.html