JavaWeb

1.基本概念

web开发:

web,网页的意思,www.baidu.com

静态web

  • html, CSS
  • 提供给所有人看的数据始终不会发生变化!

动态web

  • 淘宝,几乎是所有的网站;
  • 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同
  • 技术栈: Servlet/ISP, ASP, PHP

在java中,动态web资源开发的技术统称为JavaWeb;

1.2 web应用程序

web应用程序:可以提供浏览器访问的程序;

  • a.html、b.htm.....多个web资源,这些web资源可以被外界访问,对外界提供服务;
  • 能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上。
  • URL
  • 这个统一的web资源会被放在同一个文件夹下, web应用程序->Tomcat:服务器
  • 一个web应用由多部分组成(静态web,动态web)

1.html, css, js

2.jsp, servlet

3.Java程序

4.jar包

5. 配置文件(Properties)

web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理;

1.3 静态web

  • *.htm,*.html,这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。通络;
  • 静态web存在的缺点

1.Web页面无法动态更新,所有用户看到都是同一个页面

轮播图,点击特效:伪动态

JavaScript[实际开发中,它用的最多]

VBScript

2.它无法和数据库交互(数据无法持久化,用户无法交互)

1.4 动态web

  • 页面会动态展示:"Web的页面展示的效果因人而异";
  • 缺点:

1.加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布;

2.停机维护

  • 优点:

1.Web页面可以动态更新,所有用户看到都不是同一个页面

2.它可以和数据库交互

2.web服务器

2.1 技术

ASP:

  • 微软:国内最早流行的就是ASP;
  • 在HTML中嵌入了VB的脚本, ASP + COM;
  • 在ASP开发中,基本一个页面都有几干行的业务代码,页面极其换乱维护成本高!
  • C#
  • IIS

php:

  • PHP开发速度很快,功能很强大,跨平台,代码很简单
  • 无法承载大访问量的情况(局限性)

JSP/Servlet:

B/S:浏览和服务器

C/S:客户端和服务器

  • sun公司主推的B/S架构
  • 基于Java语言的(所有的大公司,或者一些开源的组件,都是用Java写的)
  • 可以承载三高问题带来的影响;
  • 语法像ASP, ASP->JSP,加强市场强度;

2.2 web服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;

IIS

微软的;ASP.,Windows中自带的

Tomcat

面向百度编程;

Tomcat是Apache软件基金会 (Apache Software Foundation)的Jakarta 项目中的一个核心项目,最新的Servlet 和JSP规范总是能在Tomcat中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个Java初学web的人来说,它是最佳的选择

3.Tomcat详解

3.1 Tomcat启动和配置

文件夹作用:

启动、关闭Tomcat:

访问测试:http://localhost:8080/

可能遇到的问题:

1.java环境变量没有配置

2.闪退问题:需要配置兼容性

3.乱码问题:配置文件中设置

3.2配置

可以配置启动的端口号

  • tomcat的默认端口号为: 8080
  • mysqi: 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 发布一个web网站

将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了网站应该有的结构

--webapps : Tomcat服务器的web目录

-ROOT

-banstude : 网站的目录名

-WEB-INF

-classes : java程序

-lib : web应用所依赖的jar包

-web.xml :网站配置文件

-index.html :默认的首页

-static

-css

-style.css

-js

-img

-...

4.Http详解

4.1、什么是HTTP

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)---服务器

百度:

1.请求行

  • 请求行中的请求方式:GET
  • 请求方式:Get, Post, HEAD,DELETE,PUT,TRACT...

get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效

post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效

2.消息头

4.4 Http响应

  • 服务器---响应-----客户端

百度:

1.响应体

2.响应状态码

200:请求响应成功

3××:请求重定位

  • 重定位:你重新到我给你的新位置去;

4××:找不到资源 404

5××:服务器代码错误 500 502:网关错误

5.Maven

为什么要学习这个技术?

  1. 在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
  2. 如何能够让一个东西自动帮我导入和配置这个jar包。

由此,Maven诞生了!

5.1 Maven项目架构管理工具

我们目前用来就是方便导入jar包的!

Maven的核心思想:约定大于配置

  • 有约束,不要去违反。

Maven会规定好你该如何去编写我们的java代码,必须要按照这个规范来;

5.2下载安装Maven

Binary zip archive

下载完成后,解压即可

5.3 配置环境变量

在我们的系统环境变量中配置如下配置:

  • M2_HOME maven目录下的bin目录
  • MAVEN_HOME maven的目录
  • 在系统的path中配置 %MAVEN_HOME%\bin

测试Maven是否安装成功,保证必须配置完毕!

5.4 阿里云镜像

  • 镜像:mirrors

作用:加速我们的下载

  • 国内建议使用阿里云的镜像

5.5 本地仓库

本地仓库--------远程仓库

**建立一个本地仓库:**localRepository

6.Servlet

6.1、Servlet简介

  • Servlet就是sun公司开发动态web的一门技术
  • Sun在这些API中提供一个接口叫做: Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:

1.编写一个类,实现Servlet接口

2.把开发好的Java类部署到web服务器中。

把实现了Servlet接口的Java程序叫做,Servlet

6.2、HelloServlet

Serlvet接口Sun公司有两个默认的实现类:HttpServlet,GenericServlet

  1. 构建一个普通的Maven项目,删掉里面的src目录;这个空的工程就是Maven主工程;
  2. 关于Maven父子工程的理解:

父项目中会有:

子项目会有:

父项目中的Java子项目可以直接使用

3.Maven环境优化

1.修改web.xml为最新的

2.将maven的结构搭建完整

4.编写一个Servlet程序

1.编写一个普通类

2.实现Servlet接口,这里直接继承HttpServlet

  1. 编写Servlet的映射

为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;

6.配置Tomcat

注意:配置项目发布的路径就可以了

7.启动测试

6.3、Servlet原理

Servlet是由Web服务器调用, web服务器在收到浏览器请求之后,会:

6.4、Mapping问题

1.一个Servlet可以指定一个映射路径

2.一个Servlet可以指定多个映射路径

3.一个Servlet可以指定通用映射路径

4.指定一些后缀或者前缀等等...

6.优先级问题

指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;

6.5、ServletContext

web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用:

1、共享数据

我在这个Servlet中保存的数据,可以在另一个Servlet中拿到

1.需要创建一个放置数据的类

2.需要一个读取它的类

3.还需要配置一个web.xml

4.测试访问结果

2、获取初始化参数

3、请求转发

4、读取资源文件

Properties

  • 在java目录下新建properties
  • 在resources目录下新建properties

发现:都被打包到了同一个路径下:classes,我们俗称这个路径为classpath:

思路:需要一个文件流;

访问测试即可ok;

6.6、HttpServletResponse

web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse;

  • 如果要获取客户端请求过来的参数: 找HttpServletRequest
  • 如果要给客户端响应一些信息:找HttpServletResponse

1、简单分类

负责向浏览器发送数据的方法

负责向浏览器发送响应头的方法

响应状态码

2、常见应用

1.向浏览器输出消息

2.下载文件.

  1. 要获取下载文件的路径
  2. 下载的文件名是啥?
  3. 设置想办法让浏览器能够支持下载我们需要的东西
  4. 获取下载文件的输入流
  5. 创建缓冲区
  6. 获取OutputStream对象
  7. 将FileOutputStream流写入到buffer缓冲区
  8. 使用OutputStream将缓冲区中的数据输出到客户端!

3.实现重定向

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

常见场景:

  • 用户登录

测试:

重定向和转发的区别?,

相同点

  • 页面都会实现跳转

不同点

  • 请求转发的时候,url不会产生变化
  • 重定向时候,url地址栏会发生变化;

6.7、 HttpServletRequest

HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息;

获取参数,请求转发

重定向和转发的区别?,

相同点

  • 页面都会实现跳转

不同点

  • 请求转发的时候,url不会产生变化,307
  • 重定向时候,url地址栏会发生变化; 302

7、Cookie Session

7.1 会话

**会话:**用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话

**有状态会话:**一个同学来过教室,下次再来教室,我们会知道这个同学,曾经来过,称之为有状态会话

一个网站,怎么证明你来过?

客户端 服务端

  1. 服务端给客户端一个信件,客户端下次访问服务端带上信件就可以了;cookie
  2. 服务器登记你来过了,下次你来的时候我来匹配你;seesion

7.2 保存会话的两种技术

cookie

  • 客户端技术(响应,请求)

session

  • 服务器技术,利用这个技术,可以保存用户的会话信息?我们可以把信息或者数据放在Session中!

常见常见:网站登录之后,你下次不用再登录了,第二次访问直接就上去了!

7.3、Cookie

1.从请求中拿到cookie信息

2.服务器响应给客户端cookie

cookie:一般会保存在本地的用户目录下appdata;

一个网站cookie是否存在上限!

  • 一个Cookie只能保存一个信息;
  • 一个web站点可以给浏览器发送多个cookie,最多存放20个cookie;
  • Cookie大小有限制4kb;
  • 300个cookie浏览器上限

删除Cookie;

  • 不设置有效期,关闭浏览器,自动失效;
  • 设置有效期时间为0;

编码解码:

7.4、Session(重点)

什么是Session:

  • 服务器会给每一个用户(浏览器)创建一个Seesion对象;
  • 一个Seesion独占一个浏览器,只要浏览器没有关闭,这个Session就存在;
  • 用户登录之后,整个网站它都可以访问!->保存用户的信息;保存购物车的信息...

Session和cookie的区别:

  • Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
  • Session把用户的数据写到用户独占Session中,服务器端保存(保存重要的信息,减少服务器资源的浪费)
  • Session对象由服务创建;

使用场景:

  • 保存一个登录用户的信息;
  • 购物车信息;
  • 在整个网站中经常会使用的数据,我们将它保存在Session中;

使用Session:

会话自动过期:web.xml配置

8、JSP

8.1、什么是JSP

Java Server Pages : Java服务器端页面,也和Servlet一样,用于动态Web技术!

最大的特点:

  • 写JSP就像在写HTML
  • 区别:

HTML只给用户提供静态的数据

JSP页面中可以嵌入JAVA代码,为用户提供动态数据;

8.2、JSP原理

思路:JSP到底怎么执行的!

  • 代码层面没有任何问题
  • 服务器内部工作

tomcat中有一个work目录;

IDEA中使用Tomcat的会在IDEA的tomcat中生产一个work目录

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!

JSP最终也会被转换成为一个Java类!

JSP本质就是一个Servlet!

1.判断请求

2.内置一些对象

3.输出页面前增加的代码

4.以上这些个对象我们可以在JSP页面中直接使用!

8.3、JSP基础语法

任何语言都有自己的语法,JAVA中有。JSP作为java技术的一种应用,它拥有一些自己扩充的语法(了解,知道即可!), Java所有语法都支持!

JSP表达式

jsp脚本片段

脚本片段的再实现

jsp声明

JSP声明:会被编译到JSP生成Java的类中!其他的,就会被生成到.jspService方法中!

在JSP,嵌入ava代码即可!

JSP的注释不会在客户端显示,HTML就会!

8.4、JSP指令

8.5、9大内置对象

  • PageContext 存东西
  • Request 存东西
  • Response
  • Session 存东西
  • Application 【SerlvetContext】
  • config 【SerlvetConfig】
  • out
  • page
  • exception

request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的!

session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;

application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;

8.6、JSP标签、JSTL标签、EL表达式

EL表达式:

  • 获取数据
  • 执行运算
  • 获取web开发常用的对象

JSP标签:

JSTL表达式:

JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和java代码一样!

  • 核心标签(掌握部分)
  • 格式化标签
  • SQL标签
  • XML标签

JSTL标签库使用步骤

  • 引入对应的 taglib
  • 使用其中的方法
  • 在Tomcat也需要引入jstI的包,否则会报错:JSTL解析错误

9、JavaBean

实体类

JavaBean有特定的写法:

  • 必须要有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法;

一般用来和数据库的字段做映射 ORM;

ORM:对象关系映射

  • 表--->类
  • 字段-->属性
  • 行记录--->对象

10、MVC三层架构

什么是MVC:Model view Controller 模型、视图、控制器

10.1、早些年

用户直接访问控制层,控制层2就可以直接操作数据库;

10.2、MVC三层架构

Model

  • 业务处理:业务逻辑 (Service)
  • 数据持久层:CRUD (Dao)

View

  • 展示数据
  • 提供链接发起Servlet请求(a, form, img...)

Controller (Servlet)

  • 接收用户的请求:(req:请求参数、Session信息...)
  • 交给业务层处理对应的代码
  • 控制视图的跳转

11、 Filter

Filter:过滤器,用来过滤网站的数据;

  • 处理中文乱码
  • 登录验证.....

1.导包

2.编写过滤器

导包不要导错

3.在web.xml中配置 Filter

12、监听器

实现一个监听器的接口;(有N种)

1.编写一个监听器

实现监听器的接口...

2.web.xml中注册监听器

3.看情况是否使用!

13、过滤器常见应用场景

用户登录之后才能进入主页!用户注销后就不能进入主页了!

1.用户登录之后,向Sesison中放入用户的数据

2.进入主页的时候要判断用户是否已经登录;要求:在过滤器中实现!

14、 JDBC

什么是JDBC:Java连接数据库!

需要jar包的支持:

  • java.sql
  • javax.sql
  • mysql-conneter-java...连接驱动(必须要导入)

实验环境搭建

导入数据库依赖

IDEA中连接数据库

jDBC固定步骤:

1.加载驱动

2.连接数据库,代表数据库

3.向数据库发送SQL的对象Statement: CRUD

4.编写SQL(根据业务,不同的SQL)

5.执行SQL

6.关闭连接

预编译SQL

事务

要么都成功,要么都失败!

ACID原则:保证数据的安全。

Junit单元测试

依赖

简单使用

@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行!

失败的时候是红色

15、项目搭建

项目如何搭建?

考虑使用不使用Maven?依赖,Jar

项目搭建准备工作

1.搭建一个maven web项目

2.配置Tomcat

3.测试项目是否能够跑起来

4.导入项目中会遇到的jar包;

jsp,Servlet,mysq|驱动,jstl, stand...

5.创建项目包结构

6.编写实体类;

ORM映射:表-类映射

7.编写基础公共类

1.数据库配置文件

2.编写数据库的公共类

3.编写字符编码过滤器

8.导入静态资源

登录功能实现

1.编写前端页面

2.设置首页

3.编写dao层登录用户登录的接口

4.编写dao接口的实现类

5.业务层接口

6.业务层实现类

7.编写Servlet

8.注册Servlet

9.测试访问,确保以上功能成功!

登录功能优化

注销功能:

思路:移除Session,返回登录页面

注册xml

登录拦截优化

编写一个过滤器,并注册

密码修改

1.导入前端素材

2.写项目,建议从底层向上写

  1. UserDao接口
  1. UserDao接口实现类
  1. UserService层
  1. UserService实现类
  1. Servlet记得实现复用,需要提出取方法!

8.测试

优化密码修改使用Ajax

1.阿里巴巴的fastjson

2.后台代码修改

用户管理实现

思路:

1.导入分页的工具类

2.用户列表页面导入

userlist.jsp

1、获取用户数量

  1. UserDao
  1. UserDaolmpl

  2. UserService

  1. UserServicelmpl

2、获取用户列表

  1. userdao
  1. userdaolmpl

  2. userService

  1. userServicelmpl

3、获取角色操作

为了我们职责统一,可以把角色的操作单独放在一个包中,和POJO类对应

RoleDao

RoleDaolmpl

RoleService

RoleServicelmpl

4、用户显示的Servlet

1.获取用户前端的数据(查询)

2.判断请求是否需要执行,看参数的值判断

3.为了实现分页,需要计算出当前页面和总页面,页面大小...

4.用户列表展示

5.返回前端

相关推荐
曲幽1 天前
让 FastAPI Agent 思考不阻塞:手把手教你实现异步任务与后台处理方案
redis·python·agent·fastapi·web·async·celery·ai agent·backgroundtask
一只大袋鼠1 天前
SpringMVC 框架中的拦截器
java·springmvc·javaweb·拦截器
其实防守也摸鱼1 天前
upload-labs靶场的pass-2~12的解题步骤及原理讲解
笔记·安全·web安全·网络安全·教程·web·工具
带刺的坐椅1 天前
SolonCode v2026.5.13 发布:开启“数字员工”新时代
web·ai编程·soloncode·im机器人
一只大袋鼠2 天前
SpringMVC全局异常处理
java·开发语言·springmvc·javaweb
我命由我123453 天前
Dart - Dart SDK、Hello World 案例、变量声明、常量声明、常量 final、字符串类型
前端·flutter·前端框架·html·web·dart·web app
曲幽3 天前
让FastAPI Agent真正记住你:聊聊会话记忆与持久化存储的落地实践
redis·python·postgresql·fastapi·web·chat·async·session·ai agent
_Twink1e3 天前
基于Vue的纯前端的库存销售系统
前端·vue.js·vue·web
一只大袋鼠4 天前
JavaWeb四种文件上传方式(下篇)
java·开发语言·springmvc·javaweb