后端入门学习
绪论
- 做一个b/s结构的大学教务管理系统
- 先学习了mybaits的后台数据库,了通过后台的xml文件配置了数据库。提高了JDBC代码的重用,避免了大量代码的修改。体会到了约定大于配置的思想。
- 学到这,觉得暂时没必要继续学习spring+springmvc。开始着手做一个项目。
- 卡在了前端,之前只是学过html标签,style样式表,js简单语法以及快要忘记的jquery库。只是学习了知识,但是想要实现具体功能,需要对知识运用的足够熟练和项目开发经验。
- html每个标签什么时候用,每个标签的属性的含义,都有哪些值。这些都没有熟练到能完整开发一个网页的程度,何况是开发一个现在十分美观的,交互性很强的网页呢???
- css的选择器,常用样式,盒子模型如何居中,位置????
- js基本不会用
- 几乎不可能开发出一个美观的前端
- 使用了前端的轻量级框架,解决了css不会写的问题
- 在了解了html标签的所有功能之后,学会按照功能去找代码。按照菜鸟教程上的代码示例删改。
- 基本了解了bootstrap上每一个css类标签的效果,按照功能查bootstrap表,找到想要使用的css类。
计算机软件的开发流程
可行性分析;需求分析;设计(概要、详细);开发阶段;测试阶段;运行维护。
可行性分析
- 公司要对项目确定项目经理,由公司和项目经理确定项目的主要组成人员,包括:产品经理、架构工程师、UI工程师、开发工程师、测试工程师等。
- 项目经理组织业务人员、产品经理等对项目的场景、效益、技术、管理等各方面进行调研和可行性分析,并把存在的问题及时与客户进行交流,输出项目的调研报告、可行性分析报告等。
- 若经过可行性分析,项目组能在规定的时间和资源范围内完成该项目,则出成本和资源使用计划书,并把相关资料提交给公司和客户,可以着手准备下一步的工作;若经过调研和分析,项目组无法在规定的时间和资源范围内完成该项目,则把相关依据提交给公司和客户,协调对资源进行调整,调整完成后进入下一步的工作。
需求分析
- 产品经理要进行需求采集、需求分析和需求确认这几方面的工作,然后输出需求分析文档和产品原型图,文档和产品原型图要及时与客户进行沟通,不符合客户要求的要及时修改,并做好修改记录。
- 确定原型图后,产品经理可输出业务流程图和页面 跳转流程图,并与客户做开发前的需求确认工作。
- 产品经理输出培训文档,对项目组的人员进行需求讲解。
- 架构工程师根据需求对整个软件的体系架构和关键模块进行分析设计。
- 架构工程师和开发工程师根据需求和架构设计,制定项目开发计划和模块分解表。
- UI工程师根据需求、原型图和开发计划,制定UI设计计划,以保证及时完成各页面UI设计工作。
用例图
- 用例图的作用 :用来描述用户,需求,系统功能单元之间的关系,展示了一个外部用户能够观察到的系统功能模型图,帮助一个团队以一种可视化的方式理解系统的功能需求。
- 用例图包含的元素:
2.1 参与者, 表示与您的应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。
2.2 用例(Use Case),用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。
2.3容器, 代表着一个系统
2.4 关系 ,用例图涉及的关系有,关联,泛化,包含,扩展
关联
泛化
包含
扩展
依赖
概要设计
- 架构工程师根据需求和体系架构对软件运行环境、模块编码、流程控制、接口、运行控制和数据结构进行设计,并输出概要设计文档。
- 开发工程师根据概要设计文档设计数据库结构,并输出数据库设计说明书。
- UI工程师根据需求分析、原型图和UI设计计划,制定UI设计规范,并输出文档。
详细设计
- UI工程师根据产品原型图、UI设计规范,设计软件界面效果图。
- 开发工程师确定每个模块的算法,写出每个模块详细的过程描述。
- 开发工程师确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节,并形成详细设计文档。
- 为每一个模块设计出一组测试用例,以便在开发阶段对模块代码进行预定的测试。
- 开发工程师根据数据库设计说明书进行数据库物理设计,设计数据库表、字段、描述等,统一命名规则。
开发阶段
- 开发工程师根据产品原型图、UI效果图、详细设计文档,选择合适的开发环境、开发工具、开发语言等,统一每个模块、页面的命名规范。
- 开发工程师搭建软件框架,进行模块编码。
- 开发工程师对自己开发出来的模块要进行测试用例自测或是开发人员之间互相测试,排除出现的问题。
- 开发工程师要养成良好的开发习惯,编写好开发说明文档,做好代码功能注释、使代码的可读性更强。
测试阶段
- 测试工程师根据开发阶段形成的说明文档和程序架构,设计测试用例,测试用例不仅要考虑合理的输入数据,也要考虑不合理的输入数据。
- 测试工程师对程序进行单元测试、集成测试、系统测试,检查是否正确完成规定的功能,把出现的编码错误、算法错误整理成文档,并提交给开发工程师。
- 开发工程师根据测试工程师提交的测试文档,对出现的错误进行修改,再交由测试工程师测试,通过后完成。
- 产品经理、测试工程师安排软件测试版给普通用户试用,并收集用户使用意见和问题,把软件出现的错误交由开发工程师进行修改,这时候软件的错误数量已经很少,对软件的改动不大。
- 产品经理、测试工程师完成软件各端口的操作手册、软件使用手册等。
运行维护
- 项目经理组织客户、业务人员、产品经理、开发工程师进行软件验收、上线运行工作。
- 产品经理对软件使用人员进行培训。
- 开发工程师定时对软件进行各项维护,对使用过程中出现的问题要及时进行修改。
JavaWeb 入门
java web环境变量配置:
- JAVA_HOME D:Program Files (x86)Javajdk-16
- JRE_HOME D:Program Files (x86)Javajdk-16jre1.8.0_281
- CLASSPATH %JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar
- Path %JAVA_HOME%bin;%JAVA_HOME%jrebin;
基本架包:
1、基本概念
web 开发:
- web
- 静态web
- html,css
- 提供给所有人看的数据始终不会发生变化
- 动态web
- 所有人看的数据始终发生变化,每个人在不同的时间,不同的地带你看到的信息不相同
- 技术栈:Servlet/JSP,ASP,PHP
在Java中,动态web资源开发的技术,称为JavaWeb
1.2 web应用程序
web应用程序:可以提供浏览器访问的程序:
- a.html 、b.html……多个web资源,这些web资源,对外界提供服务。
- 你们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上。
- URL
- 这个统一的web资源会被放在同一个文件夹下,web应用程序-->Tomcat;服务器
- 一个web应用由多个部分组成(静态web,动态web)
- html,css,js
- jsp,servlet
- java程序
- jar包
- 配置文件(Properties)
web程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理。
java wed零基础看什么书
1.3、静态web
- .html,.htm,这些都是网页后缀,如果服务器上一直存在这些东西,我们就可以直接进行存取。通络
- 静态web存在的缺点
- Web页面无法动态更新,所有用户看到的都是同一个页面
- 轮播图,点击特效:伪动态
- JavaScript
- Web页面无法动态更新,所有用户看到的都是同一个页面
- 动态web存在缺点
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序。
- 停机维护
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序。
- 动态web的优点
- Web页面可以动态更新
- 可以与数据库交互
会用框架-->分析原理,看源码-->手写框架
2、web服务器
ASP:
- 微软 :国内最早流行的
- 在html中嵌入了VB的脚本,ASP+COM
- ASP开发中,基本一个页面,在html中嵌入大量的业务代码,页面机器乱
- 维护成本高
php
- PHP开发速度快,功能很强大,跨平台,代码很简单
- 无法承载大访问量的情况(局限性)
JSP/Servlet:
- sun公司主推的B/S架构
- 基于java语言的(所有的大公司,或者一些开源的组件,都是用来Java写的)
- 可以承载三高问题带来的影响
- 语法像ASP,ASP-->JSP,加强市场强度
2.2 web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户的一些响应信息;
IIS 微软的lASP...Windows自带的
tomcat 有一定基础后,可以尝试手写Tomcat服务器
3 、Tomcat
tomcat环境变量配置:
- Path D:Program Files (x86)apache-tomcat-10.0.4bin
解决端口占用问题:
- netstat -ano|find "port"
- tasklist|find "PID"
- taskkill /f /t /im java.exe
tomcat版本问题
tomcat10.0以上版本的javax包改名,建议不要使用
网站的访问过程:
- 检查本机的C:windowsSystem32driversetchosts配置文件下有没有这个域名映射
- 有:返回对应的ip地址,在这个地址中,有我们需要的web程序,可以直接访问
- 没有,去DNS服务器找,找到就返回,找不到就出错。
发布一个网站,放到TOmcat中指定的web应用的文件夹下
讯享网4、HTTP
超文本传输协议:
- 文本,html,字符串
- 超文本:图片,音乐,视频,定位,地图
- 80端口
Https:安全的
- 443
http1.0 :客户端与web服务器连接后,只能获得一次资源,断开连接
http1.1:可以获得多个web资源
http请求:
讯享网
- 请求行
- 请求行中的请求方式:GET
- 请求方式:GET,POST,head,delete,put,tract……
- get可携带参数少,参数可视,大小有限制
- post大小无限制,不可视参数,低效
- 消息头
http响应:
讯享网
- 响应体
- 响应状态码
200 :请求响应成功
3:请求重定向
4:资源不存在
5:服务器代码错误
5、Maven
maven项目架构管理工具,可以导入相互依赖的架包
maven核心思想:约定大于配置
配置环境变量:
- MAVEN_HOME D:mavenapache-maven-3.6.3
- Path %MAVEN_HOME%bin
阿里云镜像:
- 加速下载
建立一个本地仓库:
idea中使用maven
- 创建一个maven项目,检查Java,勾选使用maven模板,选择maven-archetype-webapp模板
- G 组A项目名 V版本名
- 修改web.xml为最新的
- 将maven的结构搭建完整
maven的资源导出问题:
6、Servlet
6.1servlet简介
- sun公司开发动态web的一门技术
- 提供了一个接口,用来开发Servlet程序,实现了Servlet接口的Java程序叫做Servlet
- HttpServlet,GenericServlet默认实现类
6.2moudle
- 构建一个普通的Maven项目,删除src目录,新建moudle
- 父工程
子项目
子项目使用父项目jar包
6.3子项目中测试helloservlet
HelloServlet.java
6.4 servlet原理
6.5 路径优先级问题
指定的固有路径优先级大于通配符优先级
6.6 响应流
6.7 ServletContext
- web容器在启动的时候,会为每个web程序创建一个对应的ServletContext对象,Servlet上下文,是servlet之间的中间商,负责servlet之间的额通信.
第一个servlet往ServletContext中放参数
第二个servet到ServletContext中接受参数
- 获取初始化参数
- 请求转发(上图),重定向(下图)
- 读取资源文件
Tips:
项目的java文件、Resource文件被打包到target/classes下,路径写作"/WEB-INF/classes/java文件路径"或者"/WEB-INF/classes/资源文件路径"
6.8HttpServletResponse req应用
- 向客户端发送信息
- 下载文件
- 验证码
- 前端实现
- 后端实现,需要Java图片类生成图片
- 重定向(重定向一定要注意路径问题,这样才不会出现404.)
6.9 HttpServletRequest resp应用
- 获得前端的参数,请求转发
重定向和转发的区别:
重定向url改变,302;
转发url不变,307;
7.Cookie,Session
7.1会话
从浏览器打开,用户访问浏览器页面,到浏览器关闭的整个过程。
如何保存会话状态:
- 服务器 session
- 客户端 cookie 请求,响应
8. JSP
8.0 JSP原理
继承HttpJspBase类,实现JspSourceDepedent接口和JspSourceImports接口
8.1 JSP 语法
- <%= 变量或者表达式%> 用来将变量或者表达式的值输出到浏览器
- <% %> jsp脚本片段
- <% %>
嵌入html5代码段
<% %> - <%! %>定义在jspService方法体外的全局变量
- ${变量} 在html中取变量的值,EL表达式
- <%-- 注释 --%> jsp的注释只能在后台查看
8.2 JSP 指令
- <%@ include files=" "%> 将两个页面合二为一
- <jsp:include page="" /> 运行时进行拼接
- <%@page args%>
8.3 JSP九大内置对象
- PageContext 保存的数据只在一个页面中有效
- Request保存的数据只在一次请求中有效,请求转发会携带这个数据
- Response
- Session 保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
- Application [ServletContext] 存东西
- config [ServletConfig]
- out
- page
- exception
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的!
session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:
聊天数据;
8.4、JSP标签、JSTL标签、EL表达式
8.4.1 EL表达式: ${ }
- 获取数据
- 执行运算
- 获取web开发的常用对象
8.4.2 JSP标签
8.4.3 JSTL表达式
- 格式化标签
- SQL标签
- XML 标签
- 核心标签 (掌握部分)
JSTL标签库使用步骤:
- 引入对应的 taglib
- 使用其中的方法
- 在Tomcat 也需要引入 jstl的包,否则会报错:JSTL解析错误
c:if
c:choose c:when
c:forEach
9、JavaBean
实体类
JavaBean有特定的写法:
- 必须要有一个无参构造
- 属性必须私有化
- 必须有对应的get/set方法;
- 一般用来和数据库的字段做映射 ORM;
ORM :对象关系映射
- 表--->类
- 字段-->属性
- 行记录---->对象
10、MVC三层架构
11、Filter (重点)
Filter:过滤器 ,用来过滤网站的数据;
- 处理中文乱码
- 登录验证….
Filter开发步骤:
- 导包
导包不要错,javax.servlet.filter
- 编写过滤器
实现Filter接口,重写对应的方法即可
- 在web.xml中配置 Filter
12、监听器
实现一个监听器的接口;(有N种)
- 编写一个监听器
实现监听器的接口…
- web.xml中注册监听器
- 看情况是否使用!
13、过滤器、监听器常见应用
监听器:GUI编程中经常使用;

用户登录之后才能进入主页!用户注销后就不能进入主页了!
- 用户登录之后,向Sesison中放入用户的数据
- 进入主页的时候要判断用户是否已经登录;要求:在过滤器中实现!
14、JDBC
什么是JDBC : Java连接数据库!
需要jar包的支持:
- java.sql
- javax.sql
- mysql-conneter-java… 连接驱动(必须要导入)
实验环境搭建
导入数据库依赖
IDEA中连接数据库:
JDBC 固定步骤:
- 加载驱动
- 连接数据库,代表数据库
- 向数据库发送SQL的对象Statement : CRUD
- 编写SQL (根据业务,不同的SQL) 5. 执行SQL
- 关闭连接
预编译SQL
事务
要么都成功,要么都失败!
ACID原则:保证数据的安全。
Junit单元测试
依赖
简单使用
@Test注解只有在方法上有效,只要加了这个注解的方法,就可以直接运行!
搭建一个环境
JavaWeb 技术栈
1. HTML
参考菜鸟教程
2.css
2.1 css 入门
- css做什么用
- css怎么使用
- 如何选中一个标签
- 标签选择器,类选择器,id选择器 p{} .class{} #id{}
- 层次(空格,>,+,~)选择器 A B{} A+B{} A>B{} A-B{}
- 伪类选择器与层次选择器的组合 :nth-child() {} nth-of-type(){}
- 属性选择器 []
- 什么是标准文档流,块元素和行内元素从上到下,从左到右的自然排列,行内元素不能包含块元素
- 什么是盒子模型
- 盒子模型总尺寸=border+ padding+margin+内容宽度
2.2 style的键值对
- 内容宽度 高度width height: auto length % inherit (计算实际宽度 定义宽度 基于父元素的百分比宽度 继承父元素宽度)
- 字体 字号 风格 粗细 全部属性font-family 、font-size、 font-weight、 font
- 文本样式 颜色 首行缩进 行高 font-style、 color 、 text-indent、 line-height
- 文本阴影 text-shadow: color x-offset y-offset blur-radius
- 水平对齐方式 text-align : left right center justify (左对齐 右对齐 居中 两端对齐 )
- 垂直对齐方式 vertical-align: middle、top、bottom
- 文本装饰 text-decoration:underline overline line-through(下划线 上划线 删除线 )
- 背景样式
- 背景图像
- background-image: url()
- background-repeat: repeat no-repeat repeat-x repeat-y
- background-position :
- xpx yp
- x% y%;
- left center right
- background-size: auto percentage cover contain(计算图片大小 图片百分比大小 放大平铺至整个容器 保持纵横比缩放)
- background:(背景颜色 背景图片 图片位置 平铺方式)
- 背景颜色 background-color:
- border边框:
- border-color:
- border-width: thin medium thick 像素值
- border-style:none hidden dotted dashed solid double
- border:粗细 样式 颜色
- border-radius:左上角 右上角 左下角 右下角| ?%
- 外边距 margin:
- margin-top -right -bottom -left : ?px
- margin: 上下外边距为0 左右外边距根据实际长度计算 0 auto
- 内边距 padding:
- pading -left -right -top -bottom :?px
- padding: ?px ?px
- box-sizing:盒子总大小 计算内容大小(内外边距为0) 继承父元素的盒子模型 context-box border-box inherit
- box-shadow:阴影类型 水平便宜量 竖直偏移量 模糊半径 阴影颜色
- display: 块级 行内 行内块元素 隐藏 block inline inline-block
- float:不换行向左飘 不换行向右飘 不飘 left right none
- clear:左侧不允许浮动 右侧不允许浮动 左右两侧都不允许浮动
- overflow溢出处理: 不裁剪内容 裁剪内容 滚动显示裁剪内容 如果内容被裁剪则用滚动条 visible、hidden、scroll、auto
- position
- 相对于原来位置position:relaive top:?px left:?px
- 以其他元素或者浏览器窗口为基准偏移 position:absolute right=?px
- z-index:int 大的在上,小的在下 绝对定位脱离文档流
- 以浏览器为基准定位 position:fixed
- 透明度
- opacity: 0-1 值越小透明度越高
- filter:alpha(opacity=x) x为0-100 值越小越透明
- 超链接伪类 a:hover {color:#ff7300}
- li标签
- list-style-type :无标记,圆,实心圆,实心正方形,数字none disc circle square decimal
- list-style-image
- list-style-position
- list-style
2.3 css手册
点我
3.Java web
3.1 Http
- http请求 (请求行 消息头)
- http响应
3.2 Servlet动态web技术
- 普通类继承HttpServlet,在方法中可以拿到req,resp对象
- this.getServletContext(),在java中拿到ServletContext的全局servlet对象
- setAttribuate 实现servlet之间共享数据
- getRequestDispatcher 实现请求转发
- getInitParameter("name") 获取web.xml中的初始化数据
- getResourceAsStream(打包路径) 读取配置文件
- HttpServletRequest resp
- resp.setCharacterEncoding(String var1)
- resp.setContentLength(int var1)
- 用resp实现下载文件,验证码功能,重定向功能
- ……具体参阅手册和idea
- HttpServletResponse req
- 获取请求的所有信息
- 请求转发
- ……具体参阅手册和idea
3.3 cookie 服务器创建,用户保存
3.4 HttpSession 服务器创建,服务器保存
3.5 jsp 标签----用jsp标签来在前端写Servlet代码
- <%= %> 输出变量或者表达式的值
- <% %> jsp脚本片段
- <%! %>Jsp声明 编译到Java类中,具有类作用域,其他变量方法只是方法作用域
- <%-- 注释 --%>
- <%@ include file="" %>页面拼接
- <jsp:include page=""> 运行时连接 本质上不是一个页面
- <jsp:forward page=""/>
3.6 JSTL标签--用JSTL标签在前端写简单的java代码
- 依赖
- 核心标签
3.7 EL表达式--在jsp静态页面中取四大作用域的变量值
这篇文章写的详细
3.8 其他:
- filter过滤器
- HttpSessionListener监听器
- jdbc
- 根目录的不同含义
- localhost:8080/ 写超链接,表单,请求重定向的时候
- localhost:8080/context/ 写请求转发,web.xml的时候默认都是在服务器内操作的,路径默认会加上context
- 所有配置到服务器的资源,路径都会被加上context,URL访问时需要加上context
4.JS Jquery
4.1概述
- js需要联网
- consloe->console.log(var)->回车调试
- DOM (Document Object Model)(文档对象模型)是用于访问 HTML 元素的正式 W3C 标准。文档流-->对象流。
- 改变元素属性+改变元素内容
4.2入门
- 同一变量可以反复赋值为不同类型,但只可声明一次,动态语言,变量不需要声明数据类型
- 'use strict',先声明后使用,不声明的变量是全局变量
- var num声明变量,声明不需要赋值,使用之前一定赋值
- Number (NaN ,Infinity) ture false
- === Math.abs(浮点数之差)<0.00000001
- null表示空 0是数值 ''表示长度为0 undefined表示未定义
- 对象
- "字符串"
- 反引号的多行字符串
- 字符串用"+"相连
- “${变量名}” 替换字符串
- .length获取长度
- str【index】下标操作 允许越界
- 其他字符串方法:
- str.toUpperCase() 转大写 str.toLowerCase()转小写
- str1.indexOf( str2) 返回str2在str1中的位置
- str3.substring(一个整数) 从该下标截到尾
str3.substring(整数1,整数2) 从下标1截到下标2之前
- 数组
- map提供的就是能够根据键快速地查找到值的一个功能,一一对应
set就是用来寸key的集合
- iterable给所有的集合统一的遍历方法
4.3函数
- 函数定义
- 传入参数个数不限 ,可以用typeof对参数类型检查
- 每个函数内部都可以使用arguments关键字,意为传参数组
- 用rest来轻松获取所有的未被变量接受的传参,定义为一维数组
- 变量作用域:
- 函数作用域和内部函数作用域
- 申请块级作用域
- 默认全局对象window与全局作用域,全局作用域下的变量和函数都是window的属性
- 解决一个全局作用域下的变量名冲突问题:
- 常量
- 绑定到对象的函数
- this变量,始终指向它所在函数所在作用域的当前对象。
- 当处在全局作用域内时,this指向的是window对象,需要特别注意
4.4 标准对象
- 标准对象 number string boolean undefined function object
- Date
- JSON --js对象的字符串表示法
- 对象为键值对,数据逗号隔开
- 花括号保存对象
- 方括号保存数组
4.5 面向对象编程
- 没有写好的类,所有的对象都是实例,所谓的继承关系不过时把一个对象的原型指向另一个对象
- 在js代码运行期间,可以不断改变原型指向
- 引入class关键字
4.6 操作BOM
- 浏览器,chorme,IE,firefox,safari
- window,全局作用域和浏览器窗口
- navigator,浏览器信息
- screen,屏幕信息
- location当前页面url
- document对象,当前页面,当前页面树形结构的根节点
- history,历史遗留问题
4.7操作DOM
- 选择器
- 更新DOM
- 更新节点(标签)属性
- innerHTML
- innerText会自动html编码,编码后script标签乱码
- 插入DOM
- 删除DOM,每一个js语句都会实时更新DOM节点
4.8 操作表单
4.9 JQUERY
- 公式 :
- selector同css选择器
- '#id' 按id
- 'p' 按标签
- '[name=???]' 按属性
- action(),具有批量操作的特点
- 修改text和html
- 修改css,可以链式调用
- 显示和隐藏DOM
- 获取DOM高宽信息,操作节点属性
- 操作表单
- 添加、删除DOM
- 事件
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/5222.html