JavaWeb学习笔记。
Java Web,是用Java技术来解决相关web互联网领域的技术栈。
使用到的技术&工具:IDEA + Maven + Tomcat + Servlet+ JSP
- 开发工具:IDEA
- 项目构建工具:Maven
- 服务器:Tomcat
- 动态web技术:JSP/Servlet技术
走一遍创建一个web应用程序到部署(启动)的流程。详细笔记见:传送门。
JavaWeb
基本概念
Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。摘自百度百科。
web开发:
- web,网页的意思,www.baidu.com
- 静态web
- html、css
- 提供给所有人看的数据,始终不会发生变化
- 动态web
- 淘宝,几乎所有的网站
- 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同
- 技术栈:servlet/JSP,ASP,PHP
- 在Java中,动态web资源开发的技术统称为Javaweb
web应用程序
web应用程序:可以提供浏览器访问的程序;
- a.html、b.html… … 多个web资源,这些web资源可以被外界访问,对外界提供服务
- 能访问到的任何一个页面或资源,都存在于这个世界的某一个角落的计算机上
- URL:统一资源定位符(uniform resource locator)是因特网的万维网服务程序上用于指定信息位置的表示方法。摘自百度百科。
- 这个统一的web资源会被放在同一个文件夹下,web应用程序 –> Tomcat服务器(web应用程序编写完毕后,若想提供给外界访问需要一个服务器来统一管理)
- 一个web应用程序由多部分组成(静态web、动态web)
- html,css,js
- Jsp,servlet
- Java程序
- jar包
- 配置文件(Properties)
静态web
*.htm,*.html
这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。静态web存在的缺点
- web页面无法动态更新,所有用户看到都是同一个页面
- 轮播图,点击特效:伪动态
- JavaScript(实际开发中,使用的最多)
- VBScript
- 它无法和数据库交互(数据无法持久化,用户无法交互)
- web页面无法动态更新,所有用户看到都是同一个页面
动态web
页面会动态展示:web的页面展示效果因人而异
缺点:
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布
- 停机维护
优点:
- web页面可以动态更新,所有用户看到都不是同一个页面
- 它可以与数据库交互(数据持久化:注册,商品信息,用户信息)
HTTP
简介
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
- 文本:html,字符串,…
- 超文本:图片,音乐,视频,定位,地图…
- 80端口
HTTPS:安全的(HTTP + SSL)
- 443端口
两个时代
- http1.0
- http/1.0:客户端与服务器连接后,只能获得一个web资源,随即断开连接(非持续连接)
- http2.0
- http/1.1:客户端与服务器连接后,可以获得多个web资源。(持续连接)
HTTP请求
- 客户端向服务器发起请求(Request)
百度:
1 |
Request URL: https://www.baidu.com/ 请求地址 |
1 |
Accept: text/html |
请求行
- 请求行中的请求方式:GET
- 请求方式:Get/Post,Head,Delete,Put,Tract…
- Get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
- Post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效
消息头
1 |
Accept: 告诉服务器,它所支持的数据类型 |
HTTP响应
- 服务器响应客户端(Response)
百度:
1 |
Bdpagetype: 1 缓存控制 |
响应体
1 |
Accept: 告诉浏览器,它所支持的数据类型 |
响应状态码
- 2xx:成功
- 200:请求响应成功
- 3xx:请求重定向
- 303:查看其他位置
- 4xx:请求错误
- 404:找不到资源
- 5xx:服务器代码错误
- 500:服务器内部错误
- 502:网关错误
更多响应状态码介绍,见百度百科。
web服务器
B/S架构 – 浏览器/服务器
C/S架构 – 客户端/服务器
技术详解
ASP:
- 微软:国内最早流行的就是ASP
- 在HTML中嵌入了VB的脚本,ASP+COM
- 在ASP开发中,基本一个页面都有几千行业务代码,页面极其混乱
- 维护成本高
- C#、IIS
PHP:
- PHP开发速度很快,功能很强大,跨平台,代码很简单
- 无法承载大访问量的情况(局限性;中小型企业使用)
JSP/Servlet:
- sun公司主推的B/S架构(浏览器/服务器)
- 基于Java语言的(所有的大公司,或者一些开源的组件,都是用Java写的)
- 可以承载三高问题带来的影响(高并发、高可用、高性能)
- 语法像ASP,ASP –> JSP,加强市场强度
服务器
服务器上一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;
IIS
- 微软的;ASP技术;Windows中自带的
Tomcat
- Tomcat 服务器是一个免费的开放源代码的Web 应用服务器
- Tomcat是Apache 软件基金会的一个项目,支持最新的Servlet 和JSP 规范
- Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet
- 工作3-5年后,可以尝试手写Tomcat服务器
Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器。Tomcat是Apache 软件基金会的一个项目,支持最新的Servlet 和JSP 规范。Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。
IDEA+Tomcat:传送门
下载安装&使用,详细笔记见:传送门。
项目构建工具
Maven
为什么要学习这个技术?
- 在Javaweb开发中,需要使用大量的jar包,我们手动去导入很麻烦
- 如果能够让一个东西自动帮我们导入和配置这些jar包
- Maven应运而生
Maven:项目架构管理工具,方便Java开发时导入jar包。详细介绍,见菜鸟教程。
- 核心思想:约定大于配置(有约束,不要去违反)
- 会规定如何去编写Java代码,必须要按照这个规范来
- 下载安装&使用,详细笔记见:传送门
IDEA+Maven(注意看web应用程序打包后的结构):传送门
MVC
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。摘自百度百科。详细笔记见:传送门。
后端技术
Servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。详细笔记见:传送门。
Filter
Filter,过滤器,顾名思义,即是对数据等的过滤,预处理过程。为什么要引入过滤器呢?在平常访问网站的时候,有时候发一些敏感的信息,发出后显示时 就会将敏感信息用*等字符替代,这就是用过滤器对信息进行了处理。(摘自这篇博客)
详细笔记见:传送门。
监听器
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。(摘自这篇博客)
详细笔记见:传送门。
前端技术
JSP
JSP(全称JavaServer Pages)是由[Sun Microsystems](https://baike.baidu.com/item/Sun Microsystems)公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。摘自百度百科。
JSP技术并不是目前流行的前后端分离技术。详细笔记见:传送门。
数据库
JavaBean
bean,豆子。实体类
JavaBean有特定的写法:
- 必须要有一个无参构造器
- 属性必须私有化
- 必须有对应的get/set方法
一般用来和数据表的字段做映射–ORM(对象关系映射,Object Relational Mapping)
- 表 –> 类
- 字段 –> 属性
- 行记录 –> 对象
JavaBean应用案例笔记:传送门。
JDBC
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。摘自百度百科。
传统JDBC操作流程:
- 获取JDBC连接
- 声明SQL
- 预编译SQL
- 执行SQL
- 处理结果集
- 释放结果集
- 释放Statement
- 提交事务
- 处理异常并回滚事务
- 释放JDBC连接
案例笔记见:传送门。
事务
控制数据的安全访问(数据库)。
详细笔记见:传送门。
案例
案例1:
SMBMS,SuperMarket Bill Managing System,超市订单管理系统。案例笔记见:传送门。
更多案例:
更多案例,访问这里。