华清远见重庆—JAVA WEB后端技术总结
JavaWeb
网站
用户通过浏览器访问某个域名或ip后,浏览到的综合性页面。 实际是发布在服务器上的一个应用程序,通过浏览器访问。
网页
网站中的某张页面
静态页面:所有人看到的内容都一样
动态页面:不同的人看到页面中的数据不一致
JavaWeb就是在B/S模式下,使用Java开发综合性web服务网站的技术。
网络服务器
部署web项目的平台
Tomcat
由Apecha、Sun公司及其他公司和个人共同开发的web服务器。 免费、开源、轻量级、在中小型系统中普遍使用。 是学习和开发web项目的首选服务器。
启动tomcat
打开bin目录下的startup.bat文件,tomcat启动后的默认端口号为8080。
在浏览器中输入localhost:8080或127.0.0.1:8080,即可进入tomcat默认启动页面。
该页面位于ROOT目录下,名为index.jsp,localhost:8080表示进入ROOT目录下访问index文件
部署项目到tomcat中
将项目整个目录,保存到webspps下,在bin目录中打开startup.bat文件,等待启动成功后, 在浏览器中输入"localhost:8080/自定义项目目录名"或"127.0.0.1:8080/自定义项目目录名"访问。 如果将项目放在ROOT目录下,在启动定义一个index页面,就能直接省略自定义项目名,直接通过 localhost:8080访问
Maven
用于管理项目的工具。 如管理项目中所需的jar文件、打包项目等。 通过在Maven项目中加入某个jar文件所需的dependency(依赖),让其自动从Maven仓库中下载对应jar 文件。
Maven本地仓库
Maven默认的配置文件会从官网下载jar文件,速度较慢,并且下载的jar文件保存在c盘。 这里在D盘的根目录下新建了一个MavenRepository的本地仓库,用于保存下载后的jar文件, 设置国内镜像下载
在IDEA中创建基于Maven的Web项目
1.新建webapp模板
2.在src目录下新建文件夹,之后在此创建java文件
3.修改项目中web.xml版本为4.0
4.配置tomcat服务器
web资源目录结构
webapp下如果有index文件,访问项目后会自动访问index文件,如果没有名为index的文件,就会出现 404,表示index页面不存在
项目上下文路径
域名+端口+项目名 称为项目上下文路径 如localhost:8080/web01就是项目上下文路径,可以理解为项目根目录 webapp目录直接通过项目上下文路径访问,无需显式写出
Servlet
Servlet表示Server+Applet,意味运行在服务器上的程序。是一个被动运行程序,每次请求都要执行。 BS结构客户端访问服务器端的流程
编写Servlet的步骤
1.在项目中导入Servlet所需依赖
三层架构
在软件开发中,并不是将所有的功能集成到一个类或文件中实现,而是要将其分层处理。从而达到"高内 聚,低耦合"的目的。
低耦合是指降低各个模块之间的关联程度,便于开发和维护,各个模块各司其职。
高内聚指各个模块的功能不开再分。
通常所说的三层架构中的三层,指"数据访问层、业务逻辑层和视图表现层"
数据访问层:用于连接操作数据库的类。对数据进行增删改查。
业务逻辑层:用于处理业务逻辑,在适当的情况下访问数据访问层中的内容。
视图表现层:用于展示和提供用户输入的渠道,在适当的情况下访问业务逻辑层中的内容
访问服务器某个URL的方式
在浏览器的地址栏中输入对应URL,属于get请求
使用a标签,在href中定义对应的URL,属于get请求
使用form表单,在action中定义对应的URL,根据method属性的值控制get或post请求
页面向服务器端提交数据的方式
使用form表单的name属性显式提交
提交的数据会暴露在浏览器的地址栏中
使用form表单的name属性隐式提交
提交的数据不会暴露在浏览器的地址栏中
通过"?参数1=值&参数2=值"方式显示提交
在浏览器的地址栏中输入
使用a标签
服务器端获取前端提交的数据
前端页面传递数据
在Servlet的doGet或doPost方法中, 通过request.getParameter("name值或?后的参数")获取数据,返回值为String
HTTP状态码
表单提交数据注意
表单如果是get方式提交,无法在action中使用?提交数据。
表单如果是post方式提交,可以在action中使用?提交数据
使用表单的隐藏域提交,无论get还是post方式,都能提交参数
web.xml文件中常用标签
web.xml是web模块的配置文件
<?xml version="1.0" encoding="UTF-8"?>
Servlet的生命周期
构造方法一次-->init()一次-->service()-->destroy()一次
在第一次访问某个servlet时,执行
1.构造方法一次
2.init()方法一次
3.有service()方法执行service()方法,没有则执行doXXX()方法,如果都没有,报405状态码,表示请求 不允许
4.当服务器停止时,执行destroy()方法一次
使用注解开发Servlet
JSP
Java Server Pages
使用Java开发,运行在服务器上的页面,称为JSP。
JSP页面的后缀名为.jsp
由于最初由Servlet编写页面,会在Servlet中出现大量的HTML代码,使用极不方便,
由SUN公司主导推出JSP,在HTML页面中嵌入Java代码,简化了页面的编写过程,页面也成为动态页 面。
JSP实际是一个java类,具体为一个Servlet,第一次访问某个JSP页面,相当于编译运行Servlet,所以会 慢一些。
访问JSP的流程:编译对应的Servlet-->运行Servlet。
JSP的生命周期同Servlet。
使用JSP时,可以导入该依赖,在JSP中方便提示
JSP的组成
1.HTML元素*
2.Java脚本*
3.表达式*
用于在页面中输出变量或字符串。 无需分号。
4.注释
jsp注释在访问jsp时不会在浏览器中看到
html注释在访问jsp时会再浏览器中看到
5.指令
6.声明
可以在这里定义方法、全局变量等
7.动作
使用标签定义一些功能
跳转
HTML to HTML/JSP
HTML to Servlet
Servlet/JSP to Servlet/JSP/HTML
请求转发
request.getRequestDispatcher("目的路径").forward(request,response)
使用请求转发跳转到目的地后,浏览器的地址栏是最初访问的路径
可以在请求转发时,在request对象中保存数据,如request.getParameter()、 request.setAttribute()
在执行查询时,通常将查询后的结果保存在request对象中后,使用请求转发跳转到页面中
重定向
response.sendRedirect("目的路径");
使用重定向跳转到目的地后,浏览器的地址栏是最终访问的目的地路径
如果在重定向时使用request对象保存数据,后续无法获取保存的内容
在执行增删改后使用重定向跳转到目的地,防止重复提交
跳转过程中传递参数
由页面发送数据到servlet或jsp,通常使用表单元素或在某个URL后使用"?参数=值"方式提交参数, 获取时使用request.getParameter("参数")获取
四大作用域对象
作用域:共享数据的区域。
如request就是一个作用域对象,request.setAttibute(String str,Object obj)在请求作用域中保存数据, request.getAttibute(String str)在请求作用域中获取数据
pageContext
当前页对象。共享数据的范围为当前页面。 如果不在一个页面,数据无法读取。
request
请求对象。共享数据的范围为一次请求。 只要请求不改变(不重定向),数据一直保存在请求对象中。
session
会话对象。共享数据的范围为指定的会话时间内。 默认会话超时为30分钟,表示如果30分钟没有对该站点进行访问,自动销毁会话。
application
应用程序(项目)对象。共享数据的范围为整个项目中。
作用域范围
最大到最小 application>session>request>pageContext
pageContext对象用于jsp页面中,保存的数据只能在当前页面使用
request对象常用于servlet中保存查询后的集合,使用请求转发跳转到jsp页面中输出集合
session对象常用于登录后保存登录的用户,在其他页面中共享用户对象
application对象保存共享于整个项目中的数据
Ajax
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
任何的浏览器都支持ajax。通过原生的js使用ajax极不方便,这里使用jquery封装后的ajax使用。
使用
1.在页面中引入jquery文件
<script src="jquery文件路径"></script>
2.给某个节点绑定事件后使用ajax提交数据
<script>$("#btn").click(()=>{$.ajax({//访问的地址url:'URL地址',//提交的数据,以键值对的形式提交,也可以提交单个数据data:{id:123,op:"xxx"},//提交方式type:"post",//访问成功后的回调函数succuss:(res)=>{//res为访问URL地址后的返回值},//访问失败后的回调函数error:(res)=>{}});});
</script>
EL
Expression Language 表达式语言
是为了使JSP中的输出写起来更加简便,替换JSP中的,即表达式。
主要输出保存在某个作用域中的数据。
特点
减少代码(获取对象、转换对象、获取对象属性)
如果通过"某个作用域对象.setAttribute(String str,Object obj)"方法保存的对象,
在JSP页面中,如果用表达式,写为;如果使用EL,写为${str}。
会依次从pageContext-->request-->session-->application中获取指定对象,如果一旦从某个 作用域中获取到了对象,就不再判断后续作用域。
也可以指定从某个作用域中获取对象,如${session.str}表示从session作用域中获取对象。
免去非空判断
如果要使用的某个对象不存在,不会输出null,而是输出空字符串""
使用
1.获取保存在作用域中的对象 获取保存在某个作用域中的对象:${对象名}
2.从指定的作用于中获取对象
输出对象的属性
输出对象的方法返回值
注意
web.xml版本在4.0之后,在JSP中使用EL时,默认可以识别。
如果JSP中无法识别EL,原样输出${}符号时,在指令()中加入 isELIgnored="false" 表示不 忽略EL
如果在使用EL的过程中,出现PropertyNotFoundException异常,表示未发现指定属性,原因有
缺少指定属性
指定属性没有对应的get方法
JSTL
Java Server Page Standarded Tag Library JSP标准标签库
${param.username}获取提交的数据 可以使用JSTL中的特定标签,来替换JSP中常见的java代码,如循环判断等。减少JSP中的java代码,提高 页面的可读性。
使用
导入jstl依赖
在JSP页面中,加入标签库指令
JSP内置对象
在JSP中,可以不用定义,就能直接使用的对象,称为内置对象。
一共有9个内置对象
"rrppsoace"
pageContext 作用域对象,当前页面作用域。
request 作用域对象,请求作用域。
session 作用域对象,会话作用域。
application 作用域对象,项目作用域。
response 响应对象
out 输出对象,相当于Servlet中的response.getWriter()方法的返回值对象
page 表示当前页面自身对象,相当于servlet中的this
config 配置对象,获取servlet的配置信息
exception 异常对象,只能使用在有isErrorPage="true"声明的jsp页面中,用于获取异常对象
Session和Cookie
session
session称为会话,是一个作用域,使用session.setAttribute()保存数据,使用session.getAttribute()获 取数据。
默认session会话有效期为30分钟,可以更改,超时或关闭浏览器,session失效。
保存在session中的数据,可以在同一个站点下的不同页面中共享。
session共享数据的原理
访问任意JSP页面时,默认都会创建一个JSESSIONID(可以取消自动创建),是一段session编号,保 存在一个cookie文件中
session对象常用方法
设置项目全局session有效时长
在web.xml文件中设置,单位为分钟
cookie
cookie是一个用于保存数据的对象,实际是一个保存在客户本地的文件。关闭浏览器,cookie依然存 在。手动清理或自动超时清理后,数据随之消失。
cookie通常用于更久地保存数据,即便关闭浏览器,也能一直存在。如登录信息、购物车信息等 cookie中保存的数据有上限(4kb),
cookie在浏览器中保存的数量也有上限(30~300根据浏览器不同略有变化)。
创建cookie
保存cookie
遍历cookie
session和cookie的对比
session中保存的数据可以是任意类型,没有大小限制;cookie中保存的是键值对,单个值大小上 限为4kb
session中保存的数据存在服务器中,cookie中保存的数据存在浏览器中。
session到期或随着浏览器关闭而失效,cookie如果设置了有效时长,即使关闭浏览器也会存在, 在到期或手动清理时失效
过滤器Filter
是一个特殊的servlet
使用
1.新建一个类,继承HttpFilter
2.重写doFilter()方法,设置过滤条件
3.配置过滤器,过滤一切请求
监听器Listener
监听一些特殊的事件,当这些事件发生的时候,监听器的代码就会执行
作用:框架的加载和初始化, 记录日志。。。
常用的监听器
ServletContextListenser application监听器
HttpSessionListener session监听器
ServletRequestListenser request监听器
小技巧
解决tomcat控制台中输出中文时的乱码
解决请求和响应时的中文乱码
华清远见重庆—JAVA WEB后端技术总结相关推荐
- 华清远见-重庆中心-JavaWeb后端阶段技术总结
华清远见-重庆中心-JavaWeb后端阶段技术总结 JavaWeb 使用Java开发Web服务的技术,统称为JavaWeb. B/S与C/S模式 B/S:Browser/Server 浏览器/服务器模 ...
- 华清远见-重庆中心-框架阶段技术总结/知识点梳理
文章目录 华清远见-重庆中心-框架阶段技术总结/知识点梳理/个人总结 框架 Java主流框架 Spring 概念 组成 名词解释 IOC DI Spring控制台应用 1.创建一个普通的Maven项目 ...
- 华清远见-重庆中心-前端阶段技术总结
华清远见-重庆中心-前端阶段技术总结 HTML Hyper Text Markup Language 超文本标记语言 超文本:超级文本/超链接文本,超越了文本的限制,如多媒体文件.超链接等. 标记:也 ...
- 华清远见-重庆中心-数据库阶段技术总结/知识点梳理/个人总结/面试题解析
目录 Java Web阶段核心内容 (一)初识Web 1.JavaWeb定义 2.B/S与C/S模式 3.网站与网页 4.Tomcat服务器 5.Maven 6.常见的Http状态码 7.Servle ...
- 华清远见重庆中心-HTML+CSS技术总结(基础部分)
HTML基础 个人软件推荐 1.VSCode:轻量级编辑器,更适合入门级的修行者,需要下载很多插件(暂时免费) 2.WebStorm:企业级开发工具,个人更喜欢,和JAVA的IDEA工具同源,做项目更 ...
- 华清远见-重庆中心-JavaWeb阶段技术总结/知识点梳理/个人总结
文章目录 JavaWeb B/S与C/S模式 网站 网页 网络服务器 Tomcat 下载 目录结构 Maven 使用IDEA创建基于Maven的Web项目 1.新建webapp模板 2.设置项目名称和 ...
- 华清远见-重庆中心-框架阶段技术总结
框架 一套规范. 实际是他人实现的一系列接口和类的集合.通入导入对应框架的jar文件(maven项目导入对应的依赖),进行适当的配置,就能使用其中的所有内容. 开发者可以省去很多模板代码,如dao中的 ...
- 华清远见-重庆中心-数据库阶段技术总结/知识点梳理/个人总结/关于JavaWeb技术的解析(看法)
JavaWeb 使用Java开发Web服务的技术,统称为JavaWeb. B/S与C/S模式 B/S:Browser/Server 浏览器/服务器模式 用户只需要一个浏览器即可访问服务器 C/S:Cl ...
- 华清远见-重庆中心-数据库阶段技术总结
JavaWeb 使用Java开发Web服务的技术,统称为JavaWeb. B/S与C/S模式 B/S:Browser/Server 浏览器/服务器模式 用户只需要一个浏览器即可访问服务器 C/S:Cl ...
最新文章
- 简单快捷方法:CAJ 文件转 成PDF文件
- Spring ShedLock指南
- 【直播回放】150分钟详解模型压缩理论和实践
- spring项目属性注入和bean管理xml 注入一般属性和集合属性
- 被黑客盯上了…数据都给打包带走了…
- LeetCode 1901. 找出顶峰元素 II(二分查找)
- 【PyTorch】contiguous==>保证Tensor是连续的,通常transpose、permute 操作后执行 view需要此方法
- node.js——sequelize-auto模块生成数据库models及使用
- 当推荐系统遇到物联网...
- Spring MVC 之 请求url 带后缀的情况
- 7-1抓老鼠啊-亏了还是赚了
- java 钩子程序,在kill 的时候程序平滑退出
- matlab pid参数仿真研究,利用MATLAB实现PID参数整定及仿真
- php 求幂数,C 笔记九 求幂函数
- Google自动翻译工具:对接谷歌翻译接口,实现本地化运行
- USB-HDD和USB-ZIP制作U盘启动盘有什么区别?
- DBLE分库分表实战
- SQL开窗函数(窗口函数)详解
- 8b/10b编码是什么?
- 基于springboot的电影院会员管理系统
热门文章
- 指尖江湖李忘生鸿蒙初开,剑网3指尖江湖李忘生技能秘籍哪个好 李忘生技能秘籍搭配教程一览...
- Python(序列化json,pickle,shelve)
- 使用kettle采集excel表格中的数据
- 怎样使用CPropertyPage类和CPropertySheet类创建属性表
- 经典习题 十进制数转化为二进制数
- 直播开发中音画不同步如何解决
- 微信小程序+jsp+Mysql 电影详情的微信小程序 源代码+设计文档+说明文档
- 储能变流器(Power Control System——PCS)设计原理
- SECTION 1 python核心编程 快速入门
- SQLTracker跟踪工具用法