JavaWeb

最终那间凌乱的房子充斥着垃圾,再也不能岁月静好了


html和htm是一种静态的页面格式,也就是说不需要服务器解析其中的脚本,或者说里面没有服务器执行的脚本,而shtml和shtm基于SSI技术,当有服务器端可执行脚本时被当做一种动态编程语言来看待,就如asp、jsp、php一样,当其中不包含服务器端可执行脚本时,作用就和html和htm一样

相对定位占位置
静态定位占位置

hyper	亢奋,超越
markup	标记
meta	元
title	标题
face	脸
heading	标题
paragraph	段落
bold	粗体字
italic	斜体字
center	居中
horizontal	水平线
break	换行
preformatted	预定于格式的,HTML中的原生标签pre
image	图像
source	根源,源头
bootstrap
使用bootstrap来设计响应式页面点点干】】】

SQL:结构化的查询语言
DDL:数据定义语言create,alter,drop..
DML:数据操纵语言update,insert,delete..
DCL:数据控制语言grand,if..
DQL:数据查询语言select..
特点:
非过程性语言:一条语句就会有一个运行的结果。

create database 数据库名 [character set 字符集 collate 字符集校对];
表的CRUD操作
约束:primary key 

less\sass\stylus
它们是三种类似的样式动态语言,属于CSS预处理语言,它们有类似css的语言,为CSS赋予了动态语言的特性,如变量、继承、运算、函数等。这么做就是为了CSS的编写和维护
//不会被编译的注释//
/*会被编译的注释*/
变量:@w:
Node.js可以理解为时一门后端脚本语言,使用了和JavaScript相同的语法,会使用JavaScript的程序员能很快的上手node.js、nodejs在处理高并发性能卓越,目前很多公司在使用nodejs作为后端数据服务和前端开发的中间层


1.HTML
HTML概述和基本结构
HTML标题
HTML段落、换行与字符实体
HTML块、含样式的标签
HTML图像、绝对路径和相对路径
HTML链接
HTML列表
HTML表格及传统布局
HTML表单
HTML内嵌框架
2、CSS
CSS基本语法及页面使用
CSS文本设置
CSS颜色表示器
CSS选择器
CSS盒模型
CSS元素溢出
块元素、内联元素、内联块元素
浮动
定位
background属性
3、PS
4、前端开发流程
5、HTML5和CSS3
CSS权重
CSS3新增选择器
CSS3圆角、阴影、rgba
CSS3 transition动画
CSS3 transform变换
CSS3 animation动画
CSS浏览器前缀
HTML5新结构标签
HTML5新增表单控件
HTML5音频和视频
6、移动端页面开发流程
7、JavaScript
JavaScript介绍
JavaScript嵌入页面的方式
变量
获取元素
操作元素属性
函数
条件语句
数组及操作方法
循环语句
JavaScript组成
字符串处理方法
调试程序的方法
定时器
类型转换
变量作用域
封闭函数
闭包
内置对象
面向对象
新选择器
8、jQuery
jQuery介绍
jQuery加载
jQuery选择器
jQuery样式操作
jQuery属性操作
绑定click事件
jQuery特殊效果
jQuery链式调用
jQuery动画
尺寸相关,滚动事件
jQuery事件
主动触发与自定义事件
事件冒泡
事件委托
jQuery元素节点操作
滚轮事件与函数节流
json
ajax和jsona
正则表达式
本地存储
jQueryUI
9、移动端库
移动端js事件
zepto
swiper
bootstrap
10、前端自动化及优化
less、sass、stylus
grunt、gulp


MySQL:
常用的关系型数据库:
MySQL:免费的小型数据库,现在被Oracle收购
Oracle:Oracle公司收费的大型数据库
SQLServer:微软公司收费的中型数据库
DB2:IBM公司收费的大型数据库
SyBase:
SQLite:小型,移动端

SQL:结构化的查询语句
SQL分类:
DDL:数据定义语句create,alter,drop
DML:数据操纵语句update,insert,delete
DCL:数据控制语句grand,if
DQL:数据查询语句
SQL语句的特点:非过程性语言:一条语句就会有一个运行的结果
创建数据库:create database 数据库名【character set 字符集 collate 字符集校对】
create databese db charater set utf8 collate utf8_bin;
查看数据库:
查询数据库中所有的数据库show databases;
查询某个数据库的定义信息show create database 数据库名;
查看当前正在使用的数据库select database();
删除数据库:
drop database 数据库名
修改数据库:
修改数据库是指修改数据库的字符集和校队规则:
alter database 数据库名 character set 新字符集 collate 校对规则
切换数据库:
use 数据库名

使用sql语句操作数据库中的表(对数据库表的CRUD操作)
创建表:
create table employee(
	eid int primary key auto_increment,
	ename varchar(20) not null,
	email varchar(30) unique,
)

表的查看:
查看数据库中有那些表
show tables;
查看表结构
desc 表名;
表的删除:
drop table 表名;
表的修改:
修改表添加列:
alter table 表名 add 列名 类型(长度) 约束;
修改表删除列:
alter table 表名 drop 列名;
修改表的列的类型的长度或约束
alter table 表名 modfiy 列名 新类型(长度) 新约束;
修改表的列名:
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
修改表名:
reneme table 旧表名 to 新表名;
修改表的字符集:
alter table 表名 character set 字符集; 
CRUD:
插入:insert into 表名 (列名,列名……) values(值1,值2……);
insert into 表名 values (值1,值2……)
修改:update 表名 set 列名=值,列名=值……【where 条件】
删除:
delete from 表名 【where 条件】


数据库都是关系数据库:存的是实体之间的关系,实体之间有哪些关系?
一对多
多对多
一对一         
多表的设计:
一对多建表原则:在多的一方添加外键,指向一的一方的主键
多对多建表原则:创建一张中间表,中间表至少有两个字段,分别作为外键指向多对多双方各自的主键。
一对一:唯一外键或者主键对应

使用sql创建一对多的关系:
 alter table orders add foreign key(cid) references customer(cid)

/* primary key auto_increment	foreign key*/

连接池改造:
自定义连接池中的问题及如何去解决:
没有面向借口编程
解决:不额外的提供api,就可以解决上诉问题:
能不能还调用connection的close方法
增强一个Java类中的某个方法有几种方法?
1、继承:前提是你能控制这个类的构造(找到它的父类)
2、装饰着模式:包装对象和被包装对象都要实现相同的接口;包装的对象中需要获得被包装对象的引用,缺点:如果接口的方法比较多,增强其中的某个方法,其他的功能方法需要原有调用如bufferedinputstream和inputstream
3、动态代理:被增强的对象实现接口就可以


手动的抽取一个dbutils工具类
需求:每一次进行jdbc的crud操作的时候,有很多代码都是相同的,可不可以抽取工具类,完成一个通用性的代码
分析:
技术分析:
JDBC的元数据
DATAbaseMetData:获得数据库连接的信息,获得数据库表的信息
	获得数据库元数据:Connection中的getMethodData();
ParameterMetData:获得sql中的参数个数及类型
	获得参数元数据:preparedStatement中的getParameterMetaData()
ResultSetMetData:获得结果集中的列名及列的类型
	获得结果集元数据:resulr中的get

使用xml作为配置文件的方式来完成模拟Tomcat
需求:现有一套页面,这套页面想被其他人访问到,端口号可以修改的
分析:
Java基础的网络编程
XML的概述:可扩展的标记语言,类似HTML,允许用户自定义(EXTensible Markup Language)
XML的作用:
传输和存取数据;
软件的配置文件:
(现在传输数据一般使用Json,存储数据使用数据库);
XML的语法:
XML的文档注释:
	文档声明:文档声明必须放在文档的第一行
	写法:
	  version:必须的,使用"1.0"
	  encoding:字符集,是使用浏览器打开的时候采用默认的字符集编码
	  standalone:描述xmL 文档是否需要依赖其他的文件.
XML的注释:
	
XML的元素:
	命名规则:
	名称可以包含字母,数字
	不能以数字或者标点符号开头
	不能以XML开头
XML的shuxing
XML的特殊字符和指令
	<……
	CDATA区:里面的所有内容都会被当成字符串
		
XML解析:
DOM:
SAX:
Document:
Element:
Attribute:
Text:
Node:




Servlet:就是一个运行在服务器端的小的Java程序,用来接收和响应从客服端发送过来的请求,通常使用HTTP协议
HTTP协议的详解:
请求部分:
	提交方式:GET、POST
	请求头:一般一个可以一个value

响应行状态码:
200:成功
302:重定向
304:查找本地资源
404:资源不存在
500:服务器内部错误

Servlet的生命周期:
	第一次访问Servlet的时候,服务器就会创建一个Servlet对象,init方法就会执行。任何一次请求服务器就会创建一个Service方法。service方法内部根据请求方式调用doXXX.当服务器关闭的时候,Servlet就会被销毁,destroy方法就会执行。

Request何时创建和销毁?
创建:从客户端向服务器发送请求,name服务器就会创建一个request对象。
销毁:服务器为这次请求做出了响应之后,服务器就会销毁request对象。
作用范围:一次请求。

ServletConfig对象(了解)
ServletContext对象(掌握):
	1、获得文件的MIME类型
	2、获得全局初始化参数
	3、存取数据作为域对象使用
		setAttribute(String name,String value);
		getAttribute(String name);
		removeAttribute(String name);
	4、读取WEB项目的文件
		getResourceAsStream(String path);
		getRealPath(String path);

Request:
	使用request获得客户机的信息:getRemoteAddr(),getMethod(),getRequestURI(),getRequestURL()
	获得请求参数:getParameter(),getParameterValues(),getParamterMap();
	作为域对象存取数据:setAttribute(),getAttribute(),removeAttribute();

Response:
	通过response设置状态码:setStatus(int status);
	通过response设置响应头:setHeader(String name,String value);
	通过response设置响应体:getOutputStream(),getWriter();


文件下载:
	设置两个头一个流:
	Contant-Type		----MIME类型
		//response.setHeader("Contant-Type",this.getServletContext().getMimeType(filename))
	Contant-Disposition	----告诉浏览器用下载的方式接受响应
		//response.setHeader("Content-Dispositon","attrachment;filename=xxxx");
	InputStream
重定向:response.sendRedirect("客服端路径");
转发:	request.getRequestDispatcher("服务端路径").forword(req,resp);
区别:	转发是一次请求一次响应,重定向两次请求,两次响应
	转发地址栏不变,重定向会变
	转发的路径不需要就工程名,重定向需要加工程名
	转发只能在本网站内部,重定向可以定向到任何网站

中文处理:
1、get请求有中文:
String value = new String(value.getBytes("iso-8859-1"),"utf-8");
2、post请求有中文
response.setCharacterEncoding("utf-8");
3、响应有中文(字符流---一定会乱码):
response.setContant-Type("text/html;charset=utf-8");
4、响应有中文(字节流---不一定):
response.setHeader("Contant-Type","text/html;charset=utf-8");
response.getOutputStream().write("中文".getBytes("utf-8"));
5、文件下载有中文:
	String userAgent = request.getHeader("User-Agent");
		if(userAgent.contains("Firefox")) {
			filename = base64(filename)
		} else {
			filename = URLEncode.encode(filename, "utf-8");	
		}
		response.setHeader("Content-Disposition", "attachment;filename="+filename);


Cookie:就是将数据保存到客户端浏览器的会话技术
*从浏览器获取Cookie:request.getCookies();
*向浏览器回写Cookie:response.addCookie(Cookie cookie);

Cookie的相关API:
	setPath(String path);---客户端路径
	setMaxAge(int time); ---有效时长
	setDomain(String domain);
Cookie的分类:
	会话级别的Cookie:会话级别关闭浏览器的时候Cookie就销毁了,默认的分类
	持久级别的Cookie:设置有效时长,关闭浏览器不会被销毁

Session:就是将数据保存到服务器端的会话技术。基于Cookie回写SessionID的。
*session存取数据:
	setAttribute(String name,Object value);
	getAttribute(String name);
*Session作用域:
	session的作用范围:一次会话(多次请求);
	session的生命周期:
		创建:第一次调用getSession的时候创建session。
		销毁:
			非正常关闭服务器
			session过期
			手动调用invalidate方法的时候



JSP:Java Server Pages(Java服务器端的页面)
执行JSP的过程:JSP翻译成Servlet,编译这个Servlet的类,生成Class文件,得到执行

JSP的脚本:
<%!  %>	:翻译成Servlet的中成员内容,定义变量,方法,类---不安全,不建议
<%    %>	:翻译成Servlet中的service方法内部的内容。定义类,变量
<%=   %>	:翻译成Servlet中Service方法中的out.print();

JSP的注释:HTML/JAVA/JSP

***JSP的三个指令:page、include、taglib
	指令的语法:<%@ 指令名称 属性名称="属性值" 属性名称="属性值" ……%>

**JSP的page指令:设置JSP的

	language	:JSP脚本中使用的语言。现在只能写Java
	*contentType	:设置浏览器打开这个JSP的时候采用的默认的字符集编码
	*pageEncoding	:设置文件保存到本地硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码
	*import		:在JSP中引入类对象,但是import可以出现多次
	extends		:设置JSP翻译成Servlet之后继承的类
	autoFlush	:设置JSP的缓存自动刷出。true:自动刷出
	buffer		:设置JSP的缓冲区大小,默认是8KB
	session		:设置在JSP中是否可以直接使用session对象。默认值是true;
	isELIgnored	: 设置在JSP中是否忽略EL表达式,默认值是false不忽略
	errorPage	:设置错误友好页面的提示;
	isErrorPage	:通过这个设置显示JSP的错误消息;

**JSP的include指令:指示JSP包含其他页面。
	<%@ include file="logo.jsp" %>
	<%@ include file="menu.jsp" %>
	

BODY部分

<%@ include file="footer.jsp" %> **JSP的taglib指令:指示JSP引入标签库: <%@ taglib uri="标签的URI的路径" prefix="标签的别名" %> ***JSP的9大内置对象: 内置对象:在JSP中可以直接使用的对象 * request HttpServletRequest getParameter(),setAttribute(String name,Object value); * response HttpServletResponse setHeader(String name,String value);getOutputStream();getWriter(); * session HttpSession setAttribute();getAttribute(); * application ServletContext setAttribute();getAttribute(); * page Object toString();wait(); * pageContext pageContext setAttribute(); getAttribute(); * config ServletConfig getServletName();getServletContext(); * out JspWriter write();print(); * exception Throwable getMessage();getCause(); 设置isErrorPage="true" page内置对象: 真是对象是Object,就是JSP翻译成Servlet后类的引用 out内置对象: out和response.getWriter是不是同一个对象?区别是什么?(out输出的先转到response.gerWriter)(out真是对象是JSPWriter,response获得Writer是PrintWriter。) *pageContext内置对象: * 获得其他8个内置对象:编写通用性代码或者框架的时候 * 向JSP中的四个域中存取数据: JSP的四个域范围: * PageScope :当前页面有效 * RequestScope :一次请求范围 * SessionScope :一次会话范围 * ApplicationScope:应用范围 JSP的动作标签:(列出6个) :用于页面转发 :用于页面包含(动态包含) ****静态包含和动态包含的区别?(<%@ include%> 和 :用于带有路径的标签下传递参数 :用于在JSP中使用JavaBean :用于在jsp中设置JavaBean属性的 :用于在JSP中获得JavaBean的属性 EL表达式: 目的:为了使JSP写起来更加简单。提供了在JSP中简化表达式的方法,减少<%%> 表达式:${ EL表达式 } EL的功能: 获取数据:(JSP的四个域) 执行运算 操作WEB开发额常用对象 调用Java中的方法:--很小用 EL获取数据:数组、list、map、对象、对象的集合(.和[]的区别?) EL执行运算:逻辑运算、关系运算、三元运算、empty运算 EL操作WEB开发的常用的对象11个:获取JSP中域的数据(4个:pageScope,requestScope,sessionScope,applicationScope)、接受参数(2个:param,paramValues)、获取请求头信息(header、headerValues)、获取全局初始化参数(initParam)、web开发中cookie(cookie)、web开发中的pageContext(pageContext)。 JSTL:JSP标准标签库,由4个定制标记库(core、format、xml和sql)和一对通用标记库验证器组成,使用必须导包 为什么学习JSTL:JSTL和JSP结合,替换页面中的<%%> 版本:JSTL1.0:不支持EL表达式。1.1和1.2支持 JSTL的标签库:包含了五类标签 *core(核心标签),fmt(国际化标签),xml(xml标签),sql(sql标签),fn(JSTL提供EL函数库) 使用JSTL: 引入JSTL的相关jar包 在页面中引入标签库:<%@ taglib uri="" prefix=""%> JSTL的核心标签的用法: *if *forEach JSTL的提供的EL的函数库: ${ fn:contains("hello world","hello") } contains,length,toLowerCase,forEach ${ i } JSP的设计模式: JSP的设计模式一:JSP + JavaBean设计模式: JSP的设计模式二:JSP + Servlet + JavaBean设计模式:MVC模式 M;Model V:View C:Controller MVC和EE开发三层结构的关系 反射: 获得类的字节码对象:Class对象。三种获得方式 类名.class; 类的实例.getClass(); Class.forName(); 获得构造器:Constructor 获得属性:Field 获得方法:Method JDBC的事务管理: 事务:指的是逻辑上的一组操作,要么一起成功,要么一起失败 事务特性: 原子性:不可分割 一致性:数据完整性 隔离性:一个事务执行不应该受到另一个事务干扰 持久性:事务一旦结束,将永远修改到数据库 如果不考虑隔离性:脏读、不可重复度、需读 JDBC进行事务管理: Connection: setAutoCommit(boolean flag); commit(); rollback(); MVC架构模式: *查询所有的商品: 在首页上点击【查询所有的商品】链接 提交到Servlet中: 调用业务层-->调用DAO层 将商品信息保存到request域中: 转发到商品列表的页面 在商品列表的页面显示商品 *商品的添加功能: 在首页上点击【添加】,跳转到添加页面: 在添加页面输入参数,提交到Servlet中 在Servlet中: 接受参数: 封装数据: 调用业务层: 页面跳转: 解决是否重复提交的问题:令牌机制(一次性)session *商品信息的修改: 在列表页面上点击【修改】: 提交到Servlet中:根据ID查询该商品,将该商品信息显示到修改页面: 在修改页面上修改该商品数据,点击【提交】按钮: 提交到Servlet中:完成商品的修改 *商品的信息的删除: 在列表页面上点击【删除】: 提交到Servlet中: 调用业务层完成删除的操作: *商品的模糊查询: *商品的分页显示: 分页条:【首页】 【上一页】 [1] [2] [3] [4] [5] 【下一页】 【尾页】 分页类型: *物理分页:缺点:经常和数据库交互。优点:数据量特别大不会导致内存的溢出; 逻辑分页: 不同的数据库对分页的语句也是不一样的: MySQL:limit Oracle:使用sql语句嵌套 SQL Server:top Ajax和JQuery: 什么是Ajax:异步的JavaScript And XML 功能:完成页面的局部刷新,不中断用户的体验 XMLHTTPRequest: readyState:XMLHTTPRequest的状态 onreadstatechange:当XMLHTTPRequest状态发生改变的时候触发一个函数 status:获得响应的状态码:200、404、 requestText:获得响应的文本数据 requestXML:获得响应的XMl的数据 **方法: open(请求方式,请求路径,是否异步):异步的去向服务器发送数据 send(请求参数):发送请求 setRequestHeader(头信息,头得值):处理post请求方式中文乱码的问题 创建XMLHTTPRequest对象: (乱入):内省Introspector.getBeanInfo(User.class); AJAX的入门: 第一步:创建一个新的异步对象 第二步:设置对象状态改变触发一个函数 第三步:设置后台提交的路径 第四步:发送请求 JQuery的AJAX: 部分方法: Jq的对象.load(路径,参数,回调函数); $.get(路径、参数、回调函数、数据类型); $.post(路径、参数、回调函数、数据类型); $.ajax(); serialize();--JQ的AJAX传递参数的时候需要使用的方法 AJAX的响应的数据: 文本,一段HTML的数据,XML,JSON 使用工具生成XML的文件: 通常使用xStream工具,将集合,数据,对象转成XML。 JSON:是一种轻量级的数据交换结构。 数据格式:键值对对象数组 JSON的生成工具: JSONArray :将数组或List集合转成JSON JSONObject :将对象或Map集合转成JSON Listener $$ Filter Listener:就是一个Java类,用来监听其他Java类的状态的变化 用途:主要是用在图形化界面比较多:GUI、Android 监听器的术语: 事件源:指被监听的对象 监听器:指的是监听的对象 事件源和监听器绑定: 事件:指的是事件源的改变 WEB中的监听器:3类8种 一类:监听三个域对象的创建和销毁的监听器: ServletContextListener HttpSessionListener ServletRequestListener 二类:监听三个域对象的属性的变更的监听器(属性添加、移除、替换) ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener 三类监听HTTPSession中的JavaBean的状态码的改变(绑定、解除绑定、钝化、活化) HttpSessionBingdingListener HttpSessionActivationListener ServletContextListener监听ServletContext对象的创建和销毁: contextDestroyed、contextInitialized ServletContext对象的创建和销毁: 创建:服务器启动的时候,服务器为每个WEB应用创建一个属于该web项目的对象ServletContext 销毁:服务器关闭或者项目从服务器移除的时候 HttpSessionListener:监听HttpSession的创建和销毁的监听器: sessionCreated\sessionDestroyed HttpSession何时创建和销毁的 创建:当服务器第一次调用getSession(); 销毁:三种情况 ServletRequestListener:监听ServletRequest对象的创建和销毁的监听器: contextDestroyed、contextInitialized request对象何时创建何时销毁: 创建:客户端向服务器发送请求一次,服务器就会常见·创建request对象。 销毁:服务器对这次请求做出响应之后就会request对象。 二类: attributeAdded、attributeRemove、attributeReplaced 三类: valueBound(绑定)、valueUNbound(解除绑定) sessionDidActivate(活化--反序列化) sessionWillPassivate(钝化--序列化到硬盘) Filter:可以过滤从客户端向服务器发送的请求。 使用:IP过滤、脏话过滤、自动登录、响应压缩…… 过滤器的生命周期: 创建:服务器启动的时候 销毁:服务器关闭的时候 FilterConfig:过滤器的配置对象 FilterChain:过滤器链 配置中的: REQUEST :默认值 FORWORD :转发 INCLUDE :包含 ERROR :错误页面跳转(全局错误页面) 通用的字符集编码过滤器: 增强request中的getParamter方法: 继承:控制这个类的构造 装饰着模式:增强的类和被增强的类实现相同的接口,增强的类中获得到被增强的类的引用(缺点:接口中方法太多) 动态代理:被增强的类实现接口就行

你可能感兴趣的:(Web)