MVC一种将业务逻辑、数据、界面分离的方法组织代码的框架,在改进界面及用户交互的同时,不用重写业务逻辑,MVC将传统输入与输出和处理进行了分离。
MVC设计模式的优点:
为了实现显示和数据的分离在M和V上加了一层C,用户在V上只能通过C来实现对M的操作,一旦M有更新,M就会通知V视图更新。用户通过对事件的操作,可以触发视图的各种事件,通过控制器,以达到更新模型或数据的目的。
为什么要使用框架开发?
因为软件系统发展到今,已经相当复杂了…
标签必填字段:<input type=“text” required/>
正则字段
<input type=“text” pattern ="[0-9]{10}">
//填写email的文本框
<input type= “email”>
//填写url的文本框
<input type=“url”>
//滑动组件
<input type=“range” min=“1” max= “10” value=“1”>
//日期字段
<input type=“date” min=“2010-12-16”>
//时间字段
<input type=“time” step= “1800”>
//拾色器
//增强的表单控件
//搜索
<input type = “search”>
//进度条
<progress value=“25” max=“100”>24%
//输出
10+5=<onput name= “sum”>
正则表达式
\D 匹配一个数字字符
\n 匹配一个换行符号
\r 匹配一个回车符号
\s 匹配一个空格符号
\S 匹配一个任意非空格符号
\t 匹配一个table 符号
\W 匹配任何非单词符号
\w 匹配任何单词符号
[0-9]取值范围,[a-z],[A-Z]混合
{2,5}限制前面的字符个数
var reg=new RegExp("\d+", ‘g’)
var str = “123abc345de434fg”;
document.write(str.replace(regExp, “#”))
document.write("
")
document.write(str.replace(/\d+/g, ‘#’)
1、匹配所有的正数:^[0-9]+$
2、匹配所有的小数:^\-?[0-9]*\.?[0-9]*$
3、匹配所有的整数:^\-?[0-9]+$
4、提取信息中的中文字符串: [\u4e00-\u9fa5]* ;
5、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
6、提取信息中的中国手机号码:(86)*0*13\d{9}
7、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
8、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
9、提取信息中的中国身份证号码:\d{18}|\d{15}
10、提取信息中的任何数字:(-?\d*)(\.\d+)?
11、匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
12、匹配邮箱:/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点 数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点 数 + 0)
^[A-Za-z]+$ //匹配由26 个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母 的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个 英文字母或者下划线组成的字符串
建立日期对象
var mydate= new Date()
alert() //弹出警告对话框
confirm() //确认对话框
prompt() //输入对话框
document.表单名称.复选对象名称[索引].属性
document.表单名称.复选对象名称[索引].方法
属性、方法、事件处理程序
[a-z][A-Z]
a-z或者A-Z任意一个字符
[0-9]中任意一个数字
[^a-m2-5]不包含a-m的字符和2-5的数字
{m,n}最少m个,最多n个{n},{n,}
. 除换行以外的任意字符
? 0个或者1个
* 0个或多个
+1个或者多个
^ 行首匹配
$ 行尾匹配
| he|she he或者she中的一个
() 分组,括号内所有字符看做一个字符处理
元素.innerText=“这是一段无格式的文字,覆盖原来标记内的文字”
可以对元素div,span,label,p等包含的文本段内容进行修改,无格式
元素.innerHTML=“带格式文本”
可以对div,span,label,p等包含的文本段经修改,带有HTML格式
静态内容:HTML静态内容
指令:以<%@开始以%>结束,比如:
<%@include file= “filename”%>
表达式 <%=Java表达式%>
jsp页面 <%java代码%>
声明<%!函数和方法%>
动作 以<jsp:动作名称开始,以</jsp:动作名称>结束
<jsp:include page=“Filename”/>
<%-- 这也是注释,但客户端不能查看到 --%>
jsp 基本方法
<%@ %>jsp 指令:page指令,include指令和tablib指令
<%!%>声明 <%!int count= 1;%>和<%int count=0;%>的区别
<%%>jsp小脚本
<%=%>jsp表达式
jsp:jsp动作,jsp标准动作 jstl中的动作 用户自定义动作
jsp标准动作包括
<jsp:forward><jsp:include><jsp:plugin><jsp:useBean><jsp:getProperty><jsp:setProperty>
<%----%>jsp注释
jsp页面生命周期
理解jsp的执行过程
浏览器访问一个jsp页面,服务端的web容器将jsp转换成servlet,并处理之执行此servlet中的相关内容,产生响应的结果,然后再由web容器将响应返回客户端浏览器
理解jsp页面转换
理解jsp页面的生命周期
页面转换-》页面编译-》加载类-》创建实例-》调用jspInit方法-》调用jspService方法-》调用jspDestroy方法
理解page指令,该指令用于告诉容器关于jsp页面的全局属性,该指令适用于整个转换单元而不仅仅是它所声明的页面
jsp隐式对象的引入
运用输入/输出对象:request(是HttpServletRequest的隐含变量)、response、和out进行jsp编程
运用作用域通信对象:session(应用程序对象),application和pageContext进行jsp编程
理解Servlet相关对象:page(页面对象)和config
理解错误对象:exception
作用域对象:
应用作用域:application;ServletContext 在整个web应用程序有效
会话作用域 session HttpSession 在一个用户会话范围内有效
页面作用域page pageContext在当前页面内有效
request,servletRequest 在用户的请求和转发的请求内有效
request 客户端的请求信息被封装在该对象中
response 对请求的应答
pageContext 对jsp页面内所有对象及名称的访问,可以取输出流、session、request、response、属性、页面跳转、包含文件
session 客户端和服务器的一次会话,从客户连接到服务器的一个Web Application开始,直到客户端和服务器断开连接为止
request 对象常用的方法
getParameter(String name) 根据页面组件名称获取请求页面的提交的数据
getParameterValues(String name) 表单对象对应多个值的时候,用户请求数据
void setAttribute(String name, Object value)
Object getAttribute(String name)
request 对象的转发
request.getRequestDisPatcher(".jsp").forward(request, response)
动作的转发
<jsp:forward page=“new.jsp”></jsp:forward>
response的重定向
response.sendRedirect(“new.jsp”)
js 的跳转
response常用方法
void setContextType(String name)
设置字符编码
void sendRedirect(String name)//重定向
发送一个响应给浏览器,指示其应请求另一个URL
out 对象:
out.write("")
out.print("")
session对象
web服务器为单个用户
发送的多个请求创建会话
存储有关会话的所有信息
session对象最常用的方法有:
void setAttribute(String name, Object name) ;
以键值的方式,将一个对象的值存在session中
Object getAttribute(String name)
根据名称去获取session中存放对象的值
pageContext对象常用的方法是
void setAtrribute(String name, Object value)
以键值的形式,将一个对象存在pageContext中
可以有第三个参数,取值如下:
PageContext.PAGE_SCOPE(没实用性)
PageContext.REQUEST_SCOPE
PageContext.SESSION_SCOPE
PageContext.APPLICATION_SCOPE
servlet对象包括page config
AJAX
WEB页面不用打断交互流程,实现动态更新,可以创建接近本地桌面应用的,直接的、高可用的、更丰富的、更动态的wev用户接口界面
把以前的一些服务器负责的工作转到客户端处理,有利于客户端闲置的处理能力
XMLHttpRequest对象,完成数据层面的交换,不用每次都刷新界面,也不用每次将数据处理的工作提交给服务器来做
var req = new XMLHttpRequest()或req = new ActiveXObject()
相关方法
abort() 停止当前请求
getAllResponseHeader(“headerLabel”)//作为字符串返回单个header标签
setRequestHeader(“label”, “value”)设置header并且和请求一起发送
open(“method”, “url”, )
send(content)发送请求,get模式下为null,post模式下要自己拼接参数串
XMLHttpRequest 主要属性
onreadystatechange 状态改变的事件触发器
readyState 对象状态
0 未初始化 1 读取中 2已经读取
3 交互中 4完成
status 服务器返回的状态码 如:404 200
responseText 服务器进程返回数据的字符串形式
responseXML 服务器进程返回数据的兼容DOM的XML文档对象
var url = "ajaxServlet"
req = new XMLHttpRequest()
req.open("GET", url, true)
req.onreadystatechange=complete
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(null) ///get方法发送,httpbody位空
var url = "ajaxServlet"
req = new XMLHttpRequest()
req.open("POST", url, true)
req.onreadystatechange=complete
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send("user=aa&&pass=bb") ///get方法发送,httpbody位空
设置complete方法
function complete() {
if(req.readyState= 4) {
if(req.status == 200) {
var xmlarray = req.responseXML.getElementByTagName("type_name");
var result = req.responseText ;//获取文本格式数据
}
}
}
事务的acid特性
原子性
事务是数据库的逻辑工作单位,事务中包含的诸操作要么全做,要么全不做
一致性
事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态
一致性状态
数据库中只包含事务执行成功的结果
不一致性状态
数据库中包含失败事务的结果
隔离性
对并发执行而言,一个事务的执行不能被其他事务所干扰
并发执行的各个事务之间不能相互干扰
持续性
永久性,一旦事务提交,他对数据库中的数据改变是永久的
接下来的其他操作或故障不应该对其执行结果有任何影响
jsp的执行方式是编译方式
编写一个Filter需要实现Filter接口
有关会话技术跟踪技术:
Cookie是web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器。
关闭浏览器意味着会话ID丢失,但所有与会话关联的会话数据仍然保留在服务器,直至会话过期
在禁用Cookie时,使用URL重写跟踪会话
自动义标签:可以减少jsp中的java代码,将代码与界面标签分离,简化前台开发
request.getRequestDespatcher().forward(request, response)称之为转发