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后端技术总结相关推荐

  1. 华清远见-重庆中心-JavaWeb后端阶段技术总结

    华清远见-重庆中心-JavaWeb后端阶段技术总结 JavaWeb 使用Java开发Web服务的技术,统称为JavaWeb. B/S与C/S模式 B/S:Browser/Server 浏览器/服务器模 ...

  2. 华清远见-重庆中心-框架阶段技术总结/知识点梳理

    文章目录 华清远见-重庆中心-框架阶段技术总结/知识点梳理/个人总结 框架 Java主流框架 Spring 概念 组成 名词解释 IOC DI Spring控制台应用 1.创建一个普通的Maven项目 ...

  3. 华清远见-重庆中心-前端阶段技术总结

    华清远见-重庆中心-前端阶段技术总结 HTML Hyper Text Markup Language 超文本标记语言 超文本:超级文本/超链接文本,超越了文本的限制,如多媒体文件.超链接等. 标记:也 ...

  4. 华清远见-重庆中心-数据库阶段技术总结/知识点梳理/个人总结/面试题解析

    目录 Java Web阶段核心内容 (一)初识Web 1.JavaWeb定义 2.B/S与C/S模式 3.网站与网页 4.Tomcat服务器 5.Maven 6.常见的Http状态码 7.Servle ...

  5. 华清远见重庆中心-HTML+CSS技术总结(基础部分)

    HTML基础 个人软件推荐 1.VSCode:轻量级编辑器,更适合入门级的修行者,需要下载很多插件(暂时免费) 2.WebStorm:企业级开发工具,个人更喜欢,和JAVA的IDEA工具同源,做项目更 ...

  6. 华清远见-重庆中心-JavaWeb阶段技术总结/知识点梳理/个人总结

    文章目录 JavaWeb B/S与C/S模式 网站 网页 网络服务器 Tomcat 下载 目录结构 Maven 使用IDEA创建基于Maven的Web项目 1.新建webapp模板 2.设置项目名称和 ...

  7. 华清远见-重庆中心-框架阶段技术总结

    框架 一套规范. 实际是他人实现的一系列接口和类的集合.通入导入对应框架的jar文件(maven项目导入对应的依赖),进行适当的配置,就能使用其中的所有内容. 开发者可以省去很多模板代码,如dao中的 ...

  8. 华清远见-重庆中心-数据库阶段技术总结/知识点梳理/个人总结/关于JavaWeb技术的解析(看法)

    JavaWeb 使用Java开发Web服务的技术,统称为JavaWeb. B/S与C/S模式 B/S:Browser/Server 浏览器/服务器模式 用户只需要一个浏览器即可访问服务器 C/S:Cl ...

  9. 华清远见-重庆中心-数据库阶段技术总结

    JavaWeb 使用Java开发Web服务的技术,统称为JavaWeb. B/S与C/S模式 B/S:Browser/Server 浏览器/服务器模式 用户只需要一个浏览器即可访问服务器 C/S:Cl ...

最新文章

  1. 简单快捷方法:CAJ 文件转 成PDF文件
  2. Spring ShedLock指南
  3. 【直播回放】150分钟详解模型压缩理论和实践
  4. spring项目属性注入和bean管理xml 注入一般属性和集合属性
  5. 被黑客盯上了…数据都给打包带走了…
  6. LeetCode 1901. 找出顶峰元素 II(二分查找)
  7. 【PyTorch】contiguous==>保证Tensor是连续的,通常transpose、permute 操作后执行 view需要此方法
  8. node.js——sequelize-auto模块生成数据库models及使用
  9. 当推荐系统遇到物联网...
  10. Spring MVC 之 请求url 带后缀的情况
  11. 7-1抓老鼠啊-亏了还是赚了
  12. java 钩子程序,在kill 的时候程序平滑退出
  13. matlab pid参数仿真研究,利用MATLAB实现PID参数整定及仿真
  14. php 求幂数,C 笔记九 求幂函数
  15. Google自动翻译工具:对接谷歌翻译接口,实现本地化运行
  16. USB-HDD和USB-ZIP制作U盘启动盘有什么区别?
  17. DBLE分库分表实战
  18. SQL开窗函数(窗口函数)详解
  19. 8b/10b编码是什么?
  20. 基于springboot的电影院会员管理系统

热门文章

  1. 指尖江湖李忘生鸿蒙初开,剑网3指尖江湖李忘生技能秘籍哪个好 李忘生技能秘籍搭配教程一览...
  2. Python(序列化json,pickle,shelve)
  3. 使用kettle采集excel表格中的数据
  4. 怎样使用CPropertyPage类和CPropertySheet类创建属性表
  5. 经典习题 十进制数转化为二进制数
  6. 直播开发中音画不同步如何解决
  7. 微信小程序+jsp+Mysql 电影详情的微信小程序 源代码+设计文档+说明文档
  8. 储能变流器(Power Control System——PCS)设计原理
  9. SECTION 1 python核心编程 快速入门
  10. SQLTracker跟踪工具用法