*作用:采集用户的输入的数据
method:
get:1. 请求参数会在地址栏显示
2.请求的参数大小有限制
3. 不太安全
post:1. 请求参数不会显示在地址栏
2.大小没限制
3.较为安全
*表单必须指明name属性
*input标签:
*type属性:
1)text:
*placeholder属性可以知道提示信息
2)radio:
1.多个单选,必须指定一样的name值
2.一般要提供value属性,获取值
3.checked 指定默认值
*lable
for属性可以与input的id对应,则点击lable,会让input获得焦点
选择器:
id:#idname{}
类:.classname{}
元素:div{}
优先级:id>类>元素
扩展选择器:
1.选择所有元素:*{}
2.并集选择:选择器1,选择器2{}
3.子选择器:选择器 选择器{}
4.父选择器:选择器1>选择器2{}
5.属性选择器:元素名称[属性名=“属性值”]{}
6.伪类选择器:
<a>
a:link{}
a:hover{}
a:active{}
a:vistied{}
*基本数据类型
1)String
2)boolean'
3)number
4)undefined
5)null
*特殊语法
1)结尾可以以换行符,也可也分号结尾
2) var 定义的是局部变量,不加var定义的是全局变量
*基础对象
*funtion对象
1)属性:
length
2)特点
1.返回值不用写,型参不用写
2.定义一个相同的方法对象,会被覆盖
3.js中,方法调用只与名称有关,与参数无关
4.方法中有内置对象arguments,保存所有参数
*Array对象
1)创建
1.var arr = new Array(1,23,3);
2.var arr = new Array(默然长度)
3.var arr = [1,2,3]
2.特点
1.长度是变化的
2.可以保存任意类型
*Date
1.方法:
getLocalString()
getTime()获取与1970 1 1 零点的毫秒时间差
*正则表达式对象
1.单个字符[]
如[a],[a-z0-9_]
\d表示数字
\w表示[a-zA-Z0-9_]
2.量词符号
?:零次或者1次
*零次或者多次
+1次或者多次
{m,n}m到n个
*创建
var reg = new RegExp("^\w{6,12}$")
var reg =/\w^{6,12}$/
*Global对象
*方法
1.decodeURL()
2.encodeURL()
3.decodeComponentURL()
4.encodeComponentURL()
对URL进行编码
5.eval(string)将string转化为js代码执行
6parseInt()
*BOM对象
1.windows对象
方法:
1)alert()
2)prompt()
3)confirm()
*定时调用
setTimeout(fun,3000)
setInteval(fun,3000)
2.Location对象
方法:
reload()
href属性
3.history
方法:
back()
forward()
go()
*DOC对象
1.获取元素
getByElementId()
2.创建元素
createElement()
*基本语法
1.xml第一行必须为文档声明<?xml version="1.0"?>
2.xml有且只有一个根标签
3.属性值必须使用引号(单双都可以)
4.区分大小写
*组成部分
1)文档声明
1.格式<? 属性列表?>
2.属性列表
*version="1.0"必须有
*encoding 默认是ISO-8859-1
*standlone="yes" 是否依赖与其他文件
*属性值唯一
*文本
*CDATA区:格式:<![CDATA[文本]]>
*约束
DTD
*引入dtd文件到xml中
*本地<!DOCTYPE 跟标签名 SYSTEM "dtd文件的位置">
*<!DOUCTYPE 根标签名 PUBLIC “dtd文件名称” “dtd URL地址”>
*JSoup
quickstart
1.导入jar包
2.String path = ClassExample.class.getClassLoader().gerRerourse("example.xml").getPath();
Document doucment = Jsoup.parse(new File(path,"utf-8");
Elements elements=document.getElementByTag("name");
概念:Servlet就是一个接口,定义Java类被tomcat识别的规则
quick start:
1.定义一个class类实现servlet接口
2.实现servlet中的抽象方法
3.配置servlet
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>com.java.web.hello<servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<servlet-patern>/hello</servlet-patern>
</servlet-mapping>
执行原理:通过url路径找到对应的Java类名称,然后Class.forName()加载进内存
之后cls.newInstance();然后调用cls.service();
详细过程:
1.tomcat根据url找到对应的类,生成实列,然后根据浏览器传递的reques参数创建
reque对象和response对象,然后将request对象和response对象传递给service()方法
。
Servlet生命周期:init()一开始被调用,而且只会调用一次
1.<load-on-startup>值为正整数是服务器启动就会调用init(),负数不会。
service()之后被调用,可以执行多次
destroy()tomcat关闭是调用一次
1.只有在服务器正常关闭时才会调用destroy();
Servlet3.0
1.可以使用注解
如@WebServlet(urlparttern="/demo")
public class demo implements Servlet{
public void init(){
}
public void service(){
}
public void destroy(){};
}
Servlet体系结构
1.Servlet - GenericServlet - HttpServlet;
HttpServlet对http协议进行了封装,我们只需要实现doGet(),和doPost()
1.0短链接每次请求之后会断开连接
1.1:长连接,一直连接
* 请求消息格式
1.请求行
*请求方式有7种
get:参数在请求行中
psot:参数在请求体中
2.请求头 键名:键值
Referer:
*作用告诉服务器请求来自哪个页面
*防止盗链
*统计
3.请求空行
4.请求体
*封装Post的参数消息
reques对象
1.获取请求行数据
*如 GET /day/demo/name=xiaoming HTTP/1.1
方法:
1)String gerMethod() :GET
2)String getContextPath() /day
3)String getServletPaht() /demo
4)String getQueryString() name=xiaoming
5)String getRequestURI(): /day/demo
getRequestURL()?http://localhost/day/demo
6)String gerProtocal() HTTP/1.1
7)获取客户的IP地址
String gerRemoteAddr()
2.获取请求头
1.String getHeader(String name)
2.getHeaderNames();
3.获取请求体(Post请求)
BufferedReader br = requeset.getReader();
br.readLine();
获取参数通用方法
1)getParametr(String name)
2)String[] getParameterValues(String name)
3)Enumeration<String> getParameter()获取所有参数名称
4)Map<String,String[]> getParameterMap();
中文乱码问题:
psot方法的参数是通过流获取的,所以需要指定编码格式
reques.setCharacterEncoding("UTF-8");
2.请求转发:一种在服务器内部资源跳转的方式
1.Request.getDispatcher(String uri);
2.Requestdispatcher.forward(request,response)
*特点
1.浏览器的地址栏不会发生变化
2.只能访问内部服务器的uri
3.只发送一次请求
3.共享数据
*代表一次请求的范围,用于转发资源共享
*方法
setAtribute(String name ,Onject obj);
getAttribute();
4.ServletContext对象
request.getServletContext()
获取Application对象
response对象
1.数据格式
1)响应行
状态码:
1XX:服务器接收没有完成,询问客户端
2xx:成功
3xx:302(重定向) 304(访问缓存)
4xx:客户端错误
*404没有对应的资源
*405请求没有对应的doXxx()
5xx:服务器内部错误
2)响应头:
content-type:告诉浏览器的编码格式
content-disposition:in-line默认值
attachment:以附件形式打开
2.设置数据
1.设置相应行
1)setStatus(int sc)
2.设置响应头
1)setHeader(String name,String value)
1.设置响应体:
1.获取输出流
字符输出流:PrintWtiter getWriter()
字节输出流: ServletOutputStream getOutputSteam()
3.重定向
1.设置状态码
2.设置响应头location
这两步相当与response.sendrRedirect("");
特点:
1.重定向地址栏是发生变化的
2.可以访问外部的资源
3.重定向是两次请求
4。路径
绝对路径
1)给服务器使用不需要加虚拟目录 转发
2)客户端需要加虚拟目录 重定向
5.中文乱码问题
response.setContentType("text/html;utf-8")
ServletContext对象
获取:
通过request或者HttpServlet
1.功能
1)获取mime类型
2)域对象
所有用户都可以共享数据
setAttrubute()
3)获取服务器路径 getRealPath();
*wbe目录下
getRealPaht("/example.properties")
*scr下
getRealPath("/WEB-INF/classes/example.properties")
###CookieSession
*Cookie
1.quickstart
1)创建cookie
new Cookie(String name,String value)
2)发送Cookie
response.addCookie(Cookie cookie)
3)获取Cookie
Cookie[] request.getCookies()
2.保存时间
1.默认情况,浏览器关闭之后就被销毁
2.持久化保存
*setMaxage(int seconds)
seconds 为负数时等于默认情况
secounds 正数表示存活多少秒
seconds 为0表示删除cookie
3.共享问题
1。同一服务器
同一个服务器类的多个项目是不能共享cooki的
如果要共享需要设置setPath("/");
2.不同服务器
需要设置一级域名相同就可以cookie共享
setDomain("baidu.com");
4.作用特点
1.cookie一般用于少量不太敏感的数据
2.在不登录的情况下,完成对用户的识别
*Session
概念:在一次会话中多次共享数据,将数据保存在服务端HttpSession
quickstart;
1.获取Session
request.getSession();
2.使用
setAttribute()
getAttrrubute();
*细节:
1.默认情况下当客户端关闭后,再次连接时,sesssion是不同的
所以需要在cookie中设置JSESSIONID的值。
2.服务器关闭之后Session都会被销毁
*Session的钝化
*在服务器关闭之前将Session对象序列化保存在work目录下
*Session的活化
*在服务器启动时读取Session.ser把session对象加载进内存中
ideal无法完成,需要tomcat目录下完成
*什么时候被销毁
1.服务器关闭
2.session对象调用invalidate()
3.默认失效时间为30分钟
可以在web.xml中更改
1.原理:
本质上就是一个Servlet类,当jsp被访问时,会被转化成java类,继承与HttpBase
2.脚本
*<% 代码 %>
定义在service()方法中,service可以写什么,里面就可以写什么
*<%! 代码 %>
定义在类的成员变量中,成员变量可以写什么,他就可以写什么
*<%= 代码%>
输出语句,相当于response.write()
3.JSP内置对象
*request
*response
*out:字符输出流对象
与respnose.getWrite区别
服务器会先寻找response的缓冲区内容打印出来,之后再打印out的缓冲区内容
分类:
*域对象
1.PageContext pageContext 当前页面共享数据,获取其它内置对象
2.HttpServletRquest request 一次请求访问多个资源共享数据
3.HttpSession session 一次会话多个请求
4.application ServletContext 所有用户共享数据
4.指令
作用:配置jsp页面,导入资源文件
格式:<%@ 属性名称=“属性值” %>
分类:
1.page:配置页面的,如格式,缓冲区大小
1.contentType设置mime,和jsp编码格式
2.import 导入java包
3.errorPage:发生异常后跳转到指定的页面
4.iserrorpage:表示是否是错误页面
2.include:页面包含的。导入页面资源文件
3.taglib:导入jstl包
5.注释
1.html注释
<!-- -->
2.jsp注释
<%-- --%>
###EL表达式
1。语法
4.获取值
1.语法:
${域名.键名}
域名:
pageScope
requestScope
sessionScope
applicationScope
${键名} 表示从最小的域中依次查到,找到为止
2.获取对象
普通对象
1.${域名.键名.属性名}(属性名就是对象对应的get方法名称去除get;)
List对象
1.${域名.键名[索引]}
Map对象
1.${域名.键名.key}
4.动态获取虚拟目录
${pageContext.request.contextPath}
1.if标签
1.test属性必须要,接受一个boolean
如<c:if test="${requestScope.number!=0}">
<h1> ${number}为奇数</h1>
</c:if>
2.choose标签 :相当于switch语句
3.foreach标签
属性:begin:
end:
var:
step:步长
varStatus:循环对象
qucikstart:
1.定义一个类,实现filter接口
2.配置
3.放行doFilter(req,resp);
生命周期:
服务器启动时,创建Filter对象,同时调用init()方法
访问页面时,调用doFilter()
服务器关闭时调用destory()
拦截路径:
1.具体资源:/index。jsp
2.拦截目录 /user/*
3.后缀名:*.jsp
4拦截所有资源 /*
拦截方式:
*设置dispatcherTypes属性
1.REQUEST 默认值,浏览器直接访问
2.FORWARD :转发访问资源
3.INCLUDE:包含访问资源
4.ERROR:错误跳转资源
5.ASYNC:异步访问资源
拦截顺序:
注解配置下:
同样的拦截路径安装类名小的先执行
web.xml下:
同样的拦截路径安装谁在上面谁先执行
代理模式:
动态代理:
1.动态代理
1。基本语法
var div1 = $("选择器");
div1.html()
2.js对象和jq对象转化
js ->jq对象:$(div1);
jq ->js对象 jq对象[索引];
3.选择器
1.基本语法
1.事件绑定
$("#button").click(funtion(){
})
2.入口函数
$(funtion(){
})
可以定义多次
与window.onload(funtion(){})只能定义一次,后面的覆盖前面定义的
3.$("#id").css("backGroudColor","pink");
分类:
1.基本选择器
1)标签选择器:$("html标签")
2)id选择器:$(“#id”)
3)类选择器:$(”.class“)
4)并集选择器:$(”.class,#id,div“ );
2. 层级选择器
1)$(div span)div标间下的所有span标签
2)$(div >span)div下的儿子span标签
3.属性选择器
1)选着有属性id,而且属性值包含“te”
$("div[id][title*='te']")
^=:以什么开头
$=:以什么结尾的属性值
4.过滤选择器:
1)$("div:first")选择第一个
2)$("div:last")最后一个
3)$("div:not(.one)")不包含class属性为one的
4)$("div:eq(3)")等于3的
5)$("div:lt(3)")小于3 gt(3)大于3
6)$("div:even")偶数
7)$("div:odd")奇数
8)$("div:header")获取标题元素
9)$("div:first")
5.表单过滤器
1.enable
2.disable
3.checked
4.selecked
4.DOM操作
1.内容操作
1.html()
2.text()
3.val()
2.属性操作
1.attr():获取/设置元素值
2.removeAttr()
3.prop();获取/设置元素值
4.removeProp()
*attr和prop区别:
1.如果操作的时固有属性,建议使用prop()
2.如果时自定义属性,建议使用attr():如有些selecked和option无法获取到
对class操作:
1.addClass()
2.removeClass();
3.toggleClass();
CRUD操作:
1.a.append(b)添加到内部
2.a.prepend(b);
3.a.after(b)平级
4.a.befroe(b)
a.empty()子元素删除
a.remove()删除所有
5。动画
1,显示与隐藏
1.show(speed,[easing],fun) speed有slow,normal,fast,也可以自定义时间,
easing::默认时swing,可以改成匀速的linear
2.hide
3.toggle
4.slideUp
5.slideDown
6.fadeIn
7.fadeOut
8.fadeToggle
2.遍历
1.$(#id).each(fun(index,element){})
2.for(li fo citys){}
6.事件绑定
1.jq对象.事件方法(fun(){})
*如果没有fun()则会触发浏览器默认方法
2.on/off
jq对象.on("事件名称",fun(){})
jq对象.off("事件名称")
3.toggle 需要引入插件
jq对象.toggle(fun1,fn2,fn3)依次调用,没有参数默认解绑所有事件
6.插件
1.对象增强
$.fn.extend({
方法名:function(){
this.prop()
}
});
2.全局增强
$.extend({
方法名:function(){
}
});
1.实现方式
$.({
url:"ajaxServlet11",
type:"POST,
data:{"username":"xiao","age":23},
success:funtion(data){ data时服务器返回的response数据
}
error:function(){
}
dataType:设置接受的数据格式
});
或者
$.get(url,data,fun,type);
$.post(url,data,fun,type);
概念:保存对象
1.语法
1.基本规则
多个键值都好隔开
键名可以加引号,也可以不加
2.Java转化为JSON
1.导入jackson相关的jar包
2.创建jackjson核心对象,objectmapper
3.调用objectmapper相关方法
*注解
@JsonIngnore
@JsonFormart(pattern="yyyy-MM-dd")
复杂对象:
List转化为一个数组
Map:转化为普通的json对象
中文乱码问题:
1.在$.get()中指定json数据格式
2.response.setContentType("application/json;charset=utf-8");
1.数据格式
key ,value
key是字符串
value:
1.字符串
2.hash 相当于map
3list 相当于linklist
4.set
5.sortedset
2.基本命令
*通用命令:
key *获取所有key
type key 查看数据类型
1.string类型数据
1.存储:set key value
2.获取 get key
3.删除 del key
2.hash类型
1.存储:hset hashname key value
2.获取 hget hashname key
1.hgetall hashname
3.删除 hdel key hashname
3.list类型
*存储
1.lpush key value
2.rpush key value
*获取
1.lrange key start end
*删除
1.lpop key
2.rpop key
4.set类型
*存储
1.sadd key value
*获取
1smembers key
*删除
1.srem key value
5.sortedset类型
*存储 zadd key score value
*获取 zrange key start end
*删除 zrem key value
3.持久化
*RDB模式
1.save 900 1 在900秒内,数据改变了1次则保存一次
2.save 300 10 在300秒内,数据改变了10次则保存一次
*AOF模式
开启:appendonly yes
appendfsync always 每一次操作都持久化
appendfsync everysec 每隔一秒
appendfsync no 不进行持久化
4.jedis
*quickstart
Jedis jedis = new Jedis(“localhost”,6379);
Jedis.setex(“key”,20,“value”);
Jedis.close()
*连接池
JedisPool jedispool = new JedisPool(config,"localhost",6379);
Jedis = jdesipool.getResourse()
1.常用命令
mvn clean 删除target目录
mvn compile 编译源代码
mvn test 编译测试代码
mvn package 生成war包和编译test,和src
mvn installl 编译所有,在仓库中生成本地bao
2.生命周期
编译,测试,打包,安装,发布deploy