JavaWeb
一、基本概念
1、前言
web开发:
web,网页的意思
web分为两种:
- 静态web
- html、css
- 提供给所有人看,里面的数据始终不会发生改变
- 动态web
- 例如:淘宝,B站,几乎所有的网站都是动态的
- 提供给所有人看,里面的数据会发生改变
- 技术栈:Servlet/JSP、ASP、PHP
在Java中,动态web资源开发的技术统称为 JavaWeb
2、web应用程序
什么是web应用程序:
- 多个 html 多个 web 资源组成,这些web资源可以被外界访问,对外界提供服务
- 一个web应用由多部分组成(静态web、动态web)
- html、css、js
- jsp、servlet
- java程序
- jar包
- 配置文件(Properties)
web应用程序编写完毕后,若想提供给外界访问,需要一个服务器来进行统一管理
3、静态web
- *.html的纯静态网页,从服务器中读取所有人看到的都是同一个页面,里面的东西都是写死的
- 无法和数据库进行交互(数据无法持久化存储,用户无法进行交互)
4、动态web
- 页面会动态展示,用户可以进行交互操作
- 可以连接数据库进行持久化存储
- 一旦服务器的动态web资源出现了错误或需要替换就需要重新编写后台程序,进行重新发布,也就是停机维护
二、web服务器
1、技术讲解
PHP
- PHP开发速度很快,功能很强大,跨平台,代码很简单
- 无法承载大访问量的情况(局限性)
JSP/Servlet
- sun公司主推的B/S结构,基于Java语言
- B/S:浏览器和服务器
- C/S:客户端和服务端
- 可以承载三高(高并发、高可用、高性能)问题带来的影响
2、web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息
Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
三、Tomcat
1、安装Tomcat
Tomcat官网:点此进入
选择需要的Tomcat版本进行下载解压
解压后获得Tomcat本体
Tomcat目录介绍
- bin:启动和关闭的脚本文件
- conf:配置文件
- lib:依赖的jar包
- logs:日志文件
- temp:临时文件
- webapps:存放网站的目录
2、Tomcat环境配置
-
打开系统的环境变量设置页面
-
在系统变量中添加两个变量
CATALINA_BASE
和CATALINA_HOME
-
在ClassPath的变量值中加入:
%CATALINA_HOME%\lib\servlet-api.jar;
(可以不用配置) -
在Path的变量值中加入两个值:
%CATALINA_HOME%\bin
和%CATALINA_HOME%\lib
(必须配置) -
测试,在cmd中使用输入
startup
命令启动Tomcat,能成功启动则环境配置完成
3、Tomcat启动和关闭
- Tomcat运行出现问题优先检查Java环境配置
启动Tomcat服务:
关闭Tomcat服务:
4、配置文件
Tomcat服务器核心配置文件:conf
——>server.xml
配置文件中可以修改端口号:
常见的端口号:
- Tomcat:8080
- Mysql:3306
- Http:80
- Https:443
5、在 IDEA中配置Tomcat
6、发布一个简单的web网站
将自己写的html文件,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了
网站结构:
Tips:网站是如何访问的?
-
输入一个域名,回车访问
-
浏览器检查本机配置文件(C:\Windows\System32\drivers\etc\hosts)下是否有这个域名的映射
- 有:直接返回对应的ip地址,这个地址有需要访问的web程序,则可以直接访问。
- 没有:访问DNS服务器,找到匹配的就返回,找不到就返回找不到,报错。
7、解决Tomcat控制台出现乱码
把tomcat文件下的conf下的log.properties日志文件打开然后替换掉所有的UTF-8为GBK
四、HTTP
1、什么是HTTP
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
2、HTTP的两个时代
- HTTP1.0
- HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,然后就断开连接。
- HTTP/2.0
- HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
3、HTTP请求
客户端--->发请求(request)--->服务器
1、请求行
- 请求行中的请求方式:GET
- 请求方式有很多种:
- GET:请求能携带的参数较少,大小有限制,在浏览器的URL地址栏显示数据内容,不安全,但高效。
- POST:请求能携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
2、请求头
- Accept:告诉浏览器,它所支持的数据类型
- Accept-Encoding:告诉服务器,它支持哪种编码格式 例:GBK、UTF-8
- Accept-Language:告诉浏览器,它的语言环境
- Cache-Control:缓存控制
- Connection:告诉浏览器,请求完成后是断开还是保持链接
4、HTTP响应
服务器--->响应--->客户端
1、响应体
- 跟请求头差不多,多了点东西
- Refresh:告诉客户端,多久刷新一次
- Location:让网页重新定位
2、响应状态码
- 200:请求响应成功
- 3xx:3打头的,都是请求重定向
- 重定向:跳转到另一个位置
- 4xx:4打头的,找不到资源,例:404
- 资源不存在
- 5xx:5打头的,服务器代码错误,例:500
- 502:网关错误
五、Maven
为什么要学习Maven?
- 在JavaWeb开发中,需要使用大量的jar包,需要手动导入,十分繁琐。
- 有什么东西能一键自动协助我们导入和配置这个jar包?——Maven:正是在下
1、Maven项目架构管理工具
Maven的核心思想:约定大于配置
- 有约束,不要违反。
Maven会规定好该如何编写Java代码,必须按照这个规范来;
2、下载安装Maven
Maven官网:点此进入
3、配置环境变量
配置的目录最好不要出现中文路径
配置MAVEN_HOME:
MAVEN_HOME
在环境变量中添加:
%MAVEN_HOME%\bin
测试是否配置完成:
mvn -version
4、修改镜像地址
由于Maven使用的镜像地址默认是国外的,又因为国内有结界保护导致访问很慢,可以把地址修改为阿里云的镜像地址,这样就能快速访问了
阿里官方教程:点此进入
-
打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ),在
<mirrors></mirrors>
标签中添加 mirror 子节点: -
老版配置:
5、本地仓库
在本地建立一个仓库不需要每次都去远程仓库下载
6、在IDEA中使用Maven
Maven版本不同有可能和Idea冲突
-
创建MavenWeb项目
-
选择使用的Maven版本
- IDEA自带了一个Maven
- IDEA按测不到自己下载的Maven可能是Maven环境没配好
-
第一次使用Maven需要等包下好,下载完成控制台会有提示
7、创建普通的Maven项目
8、pom.xml文件
1、详细介绍
2、导入其它包
- 可以到Maven仓库中查找需要的jar包
- 只需要在
<dependencies>
标签中添加即可
3、可能出现的问题
Maven资源导出问题:
Maven由于约定大约配置,在一个文件夹出现一个不该出现的其他类型的文件,可能会出现写的配置文件,无法导出或者生效的问题
解决办法:
在build中配置resources,来防止我们资源导出失败的问题
六、Servlet
1、Servlet简介
实现了Servlet接口的Java程序叫做,Servlet
- Servlet是Sun公司开发动态Web的一门技术
- Sun公司在这些API中提供了一个接口叫做
Servlet
- 开发一个Servlet程序,只需两步:
- 编写一个实现类,实现Servlet接口
- 把开发好的Java类部署到Web服务器中
2、HelloServlet
Servlet有两个默认的实现类:HttpServlet,
-
构建一个Maven项目,把src目录删掉,方便之后学习中在这个项目中添加Model,这个空的工程就是Maven的主工程
-
关于Maven父子工程
父项目会有:
子项目会有:
-
Maven环境优化
- 修改web.xml文件为最新版(可以直接去Tomcat里copy)
- 将Maven的结构搭建完整
-
编写Servlet程序
-
新建一个普通类
-
实现Servlet接口,直接继承HttpServlet
-
-
配置Servlet映射
为什么需要映射?
之前编写的是 Java 程序,但是需要通过浏览器访问,而浏览器需要链接 Web 服务器,所以需要在 Web 服务器中注册之前写的 Servlet,还需要设置一个浏览器访问它的路径
-
配置WEB-INF文件夹下的web配置文件
-
-
配置Tomcat
参考Tomcat小节
-
启动测试
3、Mapping问题
-
一个Servlet指定一个映射路径
-
一个Servlet指定多个映射路径
-
一个Servlet指定通用映射路径
-
默认请求路径(少用)
这个路径会覆盖根路径,直接进这个页面
-
指定后缀路径
4、ServletContext
web容器在启动的时候,它会为每个web程序都创建一个对应的 ServletContext 对象且 ServletContext 全局唯一,它代表了当前的Web应用
1、数据共享:
在一个servlet类中保存数据,另一个servlet类能拿到那个数据
另一个servlet类进行读取
编写web.xml配置文件,注册刚刚写的servlet类
2、获取初始化参数
-
在web配置文件中编写一个初始化的值(存在servletContext中?)
-
编写一个类,通过
getInitParameter()
方法读取web配置文件中初始化的值 -
编写完读取类别忘了在web配置文件中注册
3、请求转发
调用getRequestDispatcher()方法实现请求转发
5、HttpServletResponse
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest
对象和一个代表响应的HttpServletResponse
对象
- 要获取客户端请求的参数:找HttpServletRequest
- 要给客户端响应一些信息:找HttpServletResponse
1、常见应用
- 向浏览器输出数据
2、下载文件
- 获取下载文件的路径
- 选择需要下载的文件名
- 设置浏览器支持下载需要下载的文件(百度搜“web下载文件头信息”就能找到,参考)
- 获取下载文件的输入流
- 创建缓冲区
- 获取OutputStream对象
- 将FileOutputStream流写入到缓冲区(buffer)
- 使用OutPutStream将缓冲区中的数据输出到客户端
3、实现重定向
什么是重定向?
客户端A 向 Web资源B 发送一个请求,Web资源B 收到请求后通知 客户端A 找另一个 Web资源C,这个过程叫重定向
使用sendRedirect()
方法实现
常见场景:
- 用户登录:登陆成功后会跳转到另一个页面
测试:
重定向和转发的区别
相同点:
- 页面都会进行跳转
不同点:
- 请求转发是在服务端
- 请求转发时,URL地址栏不会发生变化 状态码:307
- 重定向是在客户端
- 重定向时,URL地址栏会发生变化 状态码:302
6、HttpServletRequest
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest()的方法,获得客户端的所有信息
1、获取前端参数,以及请求转发
前端页面:
实现类:
七、Cookie、Session
1、会话
会话:用户打开浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话
有状态会话:一个用户登录了这个网站,下次再登录,服务器有记录,就能知道这个用户曾经登录过,称之为有状态会话
2、保存会话的两种技术
cookie
- 客户端技术(通过响应拿到,通过请求上传)
session
- 服务器技术,利用这个技术可以保存用户会话信息,可以把信息或数据放在 Session 中
常见场景:有些网站登录一次过后,下次再进这个网站就不需要再次登录了
3、Cookie
- 从请求中拿到Cookie的信息
- 服务器响应给客户端Cookie
一个网站的Cookie是否存在上限?
- 浏览器Cookie上限为300个
- 一个Web站点可以给浏览器发送多个Cookie,最多存放20个Cookie
- 一个Cookie只能保存一个信息
- Cookie的大小限制为
4kb
删除Cookie
- 不设置Cookie的有效期,关闭浏览器,自动失效
- 设置cookie有效期为0
4、Session(重点)
什么是Session:
- 服务器会给每一个用户(浏览器)创建一个session对象
- 一个Session独占一个浏览器,只要这个浏览器没有关闭,这个Session就存在,无论这个浏览器创建了多少个新窗口
使用场景:
- 保存一个登录用户的信息
- 购物车信息
- 在整个网站中经常使用的数据,可以将它保存在session中
Session和Cookie的区别:
- Cookie是把用户数据写给用户的浏览器,由浏览器保存(存在本地可以保存多个)
- Session把用户的数据写到用户独占Session中,由服务器保存(一般只保存重要的信息,减少服务器资源的浪费)
- Session对象由服务器创建
Session的使用:
另一个Servlet中调用数据
手动注销session
在web.xml配置文件中设置session会话自动失效时间
八、JSP(了解)
1、 什么是JSP
JSP(Java Server Pages):Java服务器端页面,也和Servlet一样,用于动态Web技术
特点:写JSP就像写HTML一样
区别:
- HTML只能给用户提供静态的数据
- JSP页面中则可以嵌入Java代码,为用户提供动态数据
2、JSP原理
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet
JSP最终会转换成一个Java类
JSP本质上就是一个Servlet
3、JSP基础语法
略
九、三层架构
什么是MVC:Model(模型)、View(视图)、Controller(控制器)、
经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。
1、三层架构分别的作用
Model
- 业务处理:业务逻辑(Service)
- 数据持久层:CRUD(Dao)
View
- 展示数据
- 提供链接发起Servlet请求(a、form、img...)
Controller(Servlet)
- 接收用户的请求:(req:请求参数、Session信息...)
- 交给业务层处理对应的代码
- 控制试图跳转
十、Filter(过滤器)
(待添加)
__EOF__

本文链接:https://www.cnblogs.com/WNAOII/p/15312710.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」