JavaWeb笔记
作者:@冰山醉酒
本文为作者原创,转载请注明出处:https://www.cnblogs.com/douFrank/p/16117840.html
1|0JavaWeb
1|1基本概念
-
web,网页的意思,www.baiud.com
-
静态web
-
-
提供给所有人看的数据始终不会发生变化!
-
-
动态web
-
淘宝,几乎所有的网站
-
提供给所有人看的数据据始终会发生变化
-
技术栈:Servlet/JSP,ASP,PHP
-
在Java中,动态web资源开发的技术统称为JavaWeb;
1|2web应用程序
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
-
静态web存在的缺点
-
web页面无法动态刷新,所有的用户看到的都是同一个页面
-
轮播图,点击特效:伪动态
-
JavScript【实际开发中,它用的最多】
-
VBScript
-
-
它无法和数据库交互(数据库无法持久化,用户无法交互)
-
1|4动态web
页面会动态展示:web的页面展示的效果因人而异
缺点:
-
加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布
-
停机维护
-
优点:
-
web页面可以动态更新,所有用户看到的不是同一个页面
-
它可以与数据库交互(数据持久化,注册,商品信息,用户信息……)
2|0web服务器
2|1编程工具
ASP:
-
微软
-
页面过于混乱
php:
-
PHP开发速度块,功能很强大,跨平台,diamagnetic很简单(70%,)
-
无法承载大访问量的情况
JSP/Servlet:
-
B/S:浏览器和服务器
-
C/S:客户端和服务器
-
sun控死主推的B/S架构
-
可以承载三高问题带来的影响
2|2web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户的一些响应信息
IIS
微软的,ASP windows中自带的
Tomcat
3|0TomCat
3|1基础配置
文件夹的作用:
启动:start.bat,关闭shutdown.bat
测试:loacalhost:8080
可以更改配置的端口号
-
tomcat的默认端口号:8080
-
mysql:3306
-
http:80
-
https:443
可以更改主机名称
-
默认的主机名为:localhost-->127.0.0.1
-
默认网站应用存放的位置:webapps
高难度面试题
谈谈网站是如何进行访问的
1,输入一个域名;回车
2,检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射:
1,有:直接返回对应的IP地址,这个地址中,由我们需要访问的web程序,可以直接访问
2,没有:去DNS服务器找,找到的话就返回,找不到就返回找不到;
3,可以配置一些环境变量
3|2发布一个网站
不会就模仿
-
将自己写的网址,放到服务器(TomCat)中指定的web应用的文件夹(webapps)下,就可以访问了
网站应该有的结构
4|0Http
4|1什么是HTTP
HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上
-
80
https:安全的
-
443
4|2http请求
-
客户端--发请求(Request)==服务器
百度:
请求行
-
请求行的请求方式:GET
-
请求方式 get,post,head,delete,put.tract
-
get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏中显示数据内容,不安全,但高效
-
post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏中显示数据内容,安全,但不高效
-
消息头
4|3http响应
-
服务器==响应---客户端
百度:
响应头
响应状态码
200:请求响应成功
3xx:请求重新相应
-
重定向:重新到给的新地址
4xx:找不到资源 404
-
资源不存在
5xx:服务器代码错误 500 502网关错误
常见面试题
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
5|0Maven
1,在JavaWeb开发中,需要使用大量的jar包,我们手动去导入
2,如何能够让一个东西自动帮助导入和配置这个jar包,由此,Maven诞生了
5|1Maven项目框架管理工具
我们目前用来就是方便导入Jar包的
Maven的核心思想:约定大于配置
-
有约定,不要去违反
maven会规定号你该如何去编写我们的Java代码,必须要按照这个规范来
5|2阿里云镜像
-
镜像:mirrors
-
作用:加速我们的下载
-
-
国内建议使用阿里云的镜像
5|3本地仓库
在本地的仓库,远程仓库
建立一个本地仓库:localRepository
5|4在IDEA中创建Maven项目
创建Maven项目;
5|5在IDEA中创建TomCat项目
5|6pom文件时Maven的核心配置文件
maven由于它的约定大于配置,我们之后可能遇到我们写的配置文件,无法导出或者生效的问题,解决方案:
5|7IDEA操作
目录树
6|0maven仓库的使用
用来下载或者导入jar的依赖
网址:
7|0servlet简介
-
servlet就是sun公司开发动态web的一门技术
-
sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:
-
编写一个类,实现Servlet接口
-
把开发好的Java类部署到web服务器中
-
把实现了Servlet接口的程序叫做Servlet
7|1HelloServlet
-
构建一个普通Maven的项目,删除里面的src目录,以后我们的学习就在这个项目里面建立moudel;这个空空城就是Maven的主工程;
-
关于Maven父子工程的理解
父项目中会有
子项目中会有
父项目中的Java子项目可以直接使用
-
Maven环境优化
-
修改web.xml为最新的
-
将Maven的结构搭建完整
-
-
编写一个Servlet程序
-
编写一个普通类
-
实现Servlet接口,这里我们直接继承HttpServlet
-
编写Servlet的映射
为什么需要映射:我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务器中注册我们写的Servlet,还需要给它有一个浏览器能够访问的路径。
-
配置Tomcat
注意:配置项目发布的路径就可以了
-
启动测试
-
7|2Tomcat 10版本的坑
Tomacat 10 之后servlet依赖包名不是 javax.servlet,而是jakarta.servlet
需要加载jakarta包
7|3Srvlet原理
Servlet是由web服务器调用的,web服务器在收到浏览器的请求后,会:
7|4Mapping问题
-
一个Servlet可以指定一个映射路径
-
一个Servlet可以指定多个映射路径
-
一个Servlet可以指定通用映射路径
-
一个Servlet可以指定前缀或后缀映射路径
-
优先级问题
知道你过来固有的映射路径优先级最高,入股找不到就走默认的处理请求。
7|5ServletContext
web容器在启动的时候,他会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用
1、共享数据
我再这个Servlet中保存的数据,可以在另一个servlet中拿到
ServletContent:全局唯一
2,获取初始化参数
3,请求转发
4,读取资源文件
Properties
-
在Java目录下新建properties
-
在rescoures目录下新建properties
发现:都被打包到同一个路径下:classes,我们俗称这个路径为classpath;
7|6HttpServletResponse
web服务器收到服务器的http请求,针对这个请求,分别创建一个代表请求的HTTP Servlet Request对象,代表响应的一个HttpServlet
-
如果要获取客户端请求过来的参数找Httpserverletrequest
-
如果要给客户端响应一些信息找HttpServiceResponse
1、简单分类
负责向浏览器发送数据的方法
2、下载文件
-
向浏览器输出信息
-
下载文件
-
要获取下载文件的路径
-
下载的文件名是啥?
-
设置想办法让浏览器能够支持下载我们需要的东西
-
获取下载文件的输入流
-
创建缓冲区
-
获取OutputStream对象
-
将FileOutputStream流写入到buffer缓冲区
-
使用OutputStream将缓冲区中的数据输出到客户端
-
3、验证码功能
4,实现重定向
B一个web资源收到客户端A请求后,Bhi通知客户端去访问例外一个web资源,这个过程叫重定向
面试题:请你聊聊重定向和转发的区别
相同点
-
页面都会实现跳转
不同点
-
请求转发的时候,url不会发生变化 307
-
重定向的时候,url地址栏会发生变化 302
7|7HttpServletRequest
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,Http请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息
获取参数,请求转发
8|0Cookie、Session
8|1会话
会话:用户打开一个浏览器,点击了很多超链接,关闭浏览器,这个过程可以称之为会话。
有状态会话:一个同学来过教室,下次在来教室,我们知道这个同学,曾经来过,称之为有状态会话 一个网站,怎么证明你来过 客服端 客户端
-
服务端给客户端一个信件,客户端下次访问服务器带上新建就可以了 cookie
-
服务器等级你来过了,下次你来的时候我来匹配你 session
8|2保存会话的两种技术
cookie
-
客户端技术 (响应,请求)
session
-
服务器技术,利用这个技术,可以保存用户的会话信息?
-
我们可以把信息或者数据放在Session中!
常见:网站登录之后,你下次不用再登录了,第二次访问直接就上去了!
8|3Cookie
-
从请求中拿到cookie信息
-
服务器响应给客户端cookie
cookie:一般会保存在本地的用户目录下appdata;
一个网站cookie是否存在上限!聊聊细节问题
-
一个Cookie只能保存一个信息;
-
一个web站点可以给浏览器发送多个cookie,最多存放20个cookie;
-
Cookie大小有限制4kb:
-
300个cookie浏览器上限
删除Cookie;
-
不设置有效期,关闭浏览器,自动失效;
-
设置有效期时间为0:
编码解码:
8|4Session(重点)
什么是Session:
-
服务器会给每一个用户(浏览器)创建一个Seesion对象;
-
一个Seesion独占一个浏览器,只要浏览器没有关闭,这个Session就存在:
-
用户登录之后,整个网站它都可以访问! 保存用户的信息;保存购物车的信息
Session和cookie的区别:
-
Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
-
Session把用户的数据写到用户独占Session中,服务器端保存(保存重要的信息,减少服务器资源的浪费)
-
Session对象由服务创建;
使用场景:
-
保存一个登录用户的信息;
-
购物车信息;
-
在整个网站中经常会使用的数据,我们将它保存在Session中:
Seeion的使用
会话自动过期:在web.xml中配置
9|0JSP
9|1什么是SP
Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术!
最大的特点:
-
写JSP就像在写HTML
-
区别:
-
HTML只给用户提供静态的数据
-
JSP页面中可以嵌入JAVA代码,为用户提供动态数据:
-
9|2JSP原理
思路:JSP到底是怎样运行的
-
代码层面没有任何问题
-
服务器内部工作
tomcat中有一个work目录;
IDEA中使用tomcat的会在IDEA的tomcat中生产一个work目录
我电脑的目录
发现页面转变成了Java程序
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet
JSP最终也会被转变为Java类
JSP本质就是一个Servlet
-
判断请求
-
内置一些对象
-
输出页面前增加的代码
-
以上的对象我们可以在JSP页面中直接使用!
在JSP页面中:
只要是JAVA代码就会原封不动的输出;
如果是HTML代码,就会被转换为:
这样的格式,输出到前端!
9|3JSP基础语法
任何语言都有自己的语法,JAVA中也有。JSP作为Java技术的一种应用,它拥有一些自己扩充的语法(了解,知道 即可!),Java所有语法都支持!
JSP表达式
JSP脚本片段
脚本片段的再实现
jsp声明
JSP声明:会被编译到JSP生成Java的类中!其他的,就会被生成到jspService方法中!
JSP的注释,不会在客户端显示,HTML就会!
9|4JSP指令
9|59大内置对象
-
PageContext 存东西
-
Request 存东西
-
Response
-
Session 存东西
-
Application [SerlvetContext] 存东西
-
config [servletConfig]
-
out
-
page
-
exception
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的!
session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数 据
9|6JSP标签、JSTL标签、EL表达式
导入依赖包
EL表达式:${}
-
获取数据
-
执行运算
-
获取web开发的常用对象
jsp标签
JSTL表达式
JSTL标签库的使用就是为了弥补HTM标签的不足:它自定义许多标签,可以供我们使用,标签的功能和va代码
一样!
格式化标签
SQL标签
XML 标签
核心标签(核心掌握)
JSTL标签库使用步骤
-
引入对应的taglib
-
使用其中的方法
-
在Tomcat也需要引入jst的包,否则会报错:JSTL解析错误
<jsp: tag>
<c: if>
<c: when>
<c: forEach>
10|0JavaBean
实体类
JavaBean有特定的写法:
-
必须要有一个无参构造
-
属性必须私有化
-
必须有对应的get/set方法
一般用来和数据库的字段做映射 ORM;
ORM:对象关系映射
-
表-->类
-
字段-->属性
-
行记录-->对象
id | name | age | address |
---|---|---|---|
1 | 机器人1号 | 12 | 河南 |
2 | 机器人2号 | 13 | 河北 |
3 | 机器人3号 | 14 | 河西 |
11|0MVC三层框架
什么是MVC:model view controller 模型,视图,控制器
11|1早些年
用户直接访问控制层,控制层就可以直接操作数据库:
11|2MVC三层框架
Model
-
业务处理:业务逻辑(Service)
-
数据持久层:CRUD (Dao)
View
-
展示数据
-
提供链接发起Servlet请求(a,form,img……)
Controller (Servlet)
-
接受用户的请求:(req:请求参数,Session信息……)
-
交给业务层处理对应的代码
-
控制视图的跳转
12|0Filter (重点)
filter 过滤器:用来过滤网站的数据
-
处理中文乱码
-
登陆验证……
-
敏感信息显示为***
12|1Filter的使用
-
导包
-
编写过滤器
-
导报不要导错(Jakarta.servlet.Filter)
-
实现Filter接口,重写对应的的方法即可
-
在web.xml中配置filter
13|0Listener
监听器有N多种
-
-
编写一个监听器
-
在web.xml中注册
-
看情况是否需要销毁
过滤器监听器的常用应用
监听器:页面关闭时的监听
用户登录之后才能进入主页!用户注销后就不能进入主页了! 1.用户登录之后,向Session中放入用户的数据 2.进入主页的时候要判断用户是否已经登录:
__EOF__

本文链接:https://www.cnblogs.com/douFrank/p/16117840.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义