前端基础
HTML
input输入框
- type属性: 文本框, 单选框, 复选框, 下拉列表, 提交按钮, 重置按钮
get请求和post请求
get请求会将数据添加到url中, 明文数据不安全
post请求一般用于表单数据提交
当属性名和属性值相同时, 可以省略属性值
<input name></input>和<input name = "name"></input>的含义相同
CSS
- 标签名
p - 类样式
.–>class属性 - id样式
#–>id属性
style属性: 嵌入式样式表, 一般都是设置为外部样式表
引入外部样式表<link ref = "stylesheet" href="css/demo.css">
JS
JavaScript的变量类型
- 数值类型: number
- 字符串类型: string
- 对象类型: object
- 布尔类型: boolean
- 函数类型: function
JavaScript里面特殊的值
- undefined: 所有js变量未赋予初始值的时候
- null: 空值
- NAN: 非数字, 非数值
关系运算符
- ===全等于: 会判断数据类型
- ==等于
逻辑运算符
- &&: 返回第一个为假的值或最后一个为真的值
JavaWeb
标签
<a></a> : 超链接 <a href="http://www.baidu.com" target="_blank">百度</a> target="_blank"表示在新窗口打开,target="_self"表示覆盖当前页面<img></img> : 图片 <img src="http://..." width="" height="" alt="图片资源不可显示"/> alt="图片资源找不可显示" : 表示当图片资源找不到的时候用来代替的文本内容 相对路径和绝对路径 JavaSE中, 相对路径表示中工程名开始算, 绝对路径:盘符:/目录/文件名 web中, 相对路径: . 表示当前文件所在的目录 .. 表示当前文件所在的上一级目录 文件名 表示当前文件所在目录的文件,相当于./文件名 绝对路径: http://ip:port/工程名/资源路径 错误格式: 盘符:/目录/文件名<!--标签 : 表格--> <table border="1" width="300" height="200"> <tr> <td>1-1</td> <td>1-2</td> <td>1-3</td> </tr> <tr> <td>2-1</td> <td>2-2</td> <td>2-3</td> </tr> </table>div : 默认独占一行 span : 数据长度 p : 段落标签,前后各空一行
CSS选择器
标签名选择器
作用 : 可以决定哪些标签被动的使用样式,不同的标签使用不同的样式格式: 标签名{ 属性: 值; } div{ border: 1px solid yellow; color: blue; font-size: 30px; }id选择器
#id属性值{ 属性: 值; } #007{ color: blue; font-size: 30px; border: 1px yellow; }class选择器(类选择器)
.class属性值{ 属性: 值; }组合选择器 (n选1)
格式: 选择器1,选择器2,...,选择器n{ 属性: 值; } .class01,#id001{ color: blue; font-size: 20px; } 选择class="class001"或者id="id001"的对象,进行设置样式
js中的事件
onload 加载完成事件 页面加载完成之后,常用于做页面js代码初始化操作 onclick 单击事件 常用于按钮的点击响应操作 onblur 失去焦点事件 常用于输入框失去焦点后验证其输入内容是否合法 onchange 内容发生改变事件 常用于下拉列表和输入框内容发生改变后的操作 onsubmit 表单提交事件 常用于表单提交前验证所有表单项是否合法事件的注册(绑定)
静态注册
通过html标签的事件属性直接赋予事件响应后的代码动态注册
是指先通过js代码得到标签的dom对象,然后再通过dom对象.事件名=function{}这种形式赋予事件响应后的代码 动态注册的步骤: 1.window.onload = function(){ 2.获取标签对象 var Obj = document.getElementById(""); 3.标签对象.事件名=function(){ 待执行代码 return flase;//阻止事件进一步执行 return true;//事件正常执行 } }onload事件
静态注册 function onloadFunc(){ alert("静态注册onload事件,将所有需要执行的操作写入函数,通过调用函数的方式来避免body标签很臃肿"); } <body onload="onloadFunc"> 动态注册 window.onload = function(){ alert("动态注册onload事件"); }onclick事件
动态注册 <script> window.onload = func(){ //document是js语言提供的一个对象(表示整个文档) var btnObj = document.getElementById(""); btnObj.onclick = function(){ alert("动态注册的onclick事件") } } </script>onblur事件
静态注册 <script> function onblurFunc(){ console.log("静态注册失去焦点事件"); } </script> <body> 用户名:<input type="text"><br/> 密码 :<input id="password" type="text"><br/> </body>
动态注册
<script>
window.onload = function(){
var passwordObj = document.getElementById("password");
passwordObj.onblur = function(){
console.log("动态注册失去焦点事件");
}
}
function onblurFunc(){
console.log("静态注册失去焦点事件")
}
</script>
<body>
用户名:<input type="text"><br/>
密码 :<input id="password" type="text"><br/>
</body>
```
onchange事件
```html
静态注册
<script>
function onchangeFunc(){
alert("女神已经改变了");
}
</script>
<select onchange="onchangeFunc();">
<option>--女神--</option>
<option>--芳芳--</option>
<option>--佳佳--</option>
</select>
动态注册
<script>
window.onload = function(){
var selObj = document.getElementById("sel001")
selObj.onchange = function(){
alert("女神已经发生改变");
}
}
</script>
<select id="sel001">
<option>--女神--</option>
<option>--芳芳--</option>
<option>--佳佳--</option>
</select>
```
onsubmit事件(表单提交事件)
```html
```JQuery
$的功能
1. 当传入的参数为[函数]时,表示在文档加载完成后执行这个函数 $(function()){ alert("页面加载完成之后,自动调用"); } 2. 当传入的参数为[HTML字符串]时,根据这个字符串查找元素结点对象 $(""+ "div-span1"+ "div-span2"+ "").appendTo("body"); 在body的下面创建div,再在div下面创建两个span 3.当传入的参数为[选择器字符串]时 $("#id属性值"); id选择器,根据id查询标签对象 $("标签名"); 标签名选择器,根据指定的标签名查询标签对象 $(".class属性值"); 类选择器,可以根据class属性查询标签对象 4. 当传入的参数为[DOM对象]时,将DOM对象包装为jQuery对象返回选择器
基本选择器
- $(“#id”)
- $(“element”)
- $(“.class”)
- $(“*”)
层级选择器
- $(“from input”) : 找到from标签的子孙标签里面的input标签
- $(“from > input”) : 找from标签的直接子标签input
过滤选择器
基本过滤选择器
- :first $(“li:first”) 选择第一个li标签
- :last
- :not(selector)
- :even $(“tr:even”) 选择偶数行的tr标签
- :odd $(“tr:even”) 选择奇数行的tr标签
- :eq(index) $(“tr:eq(1)”) 选择第2行(索引值为1)的tr标签
- :gt(index) $(“tr:gt(0)”) 选择索引值大于0的tr标签
- :It(index) $(“tr:lt(0)”) 选择索引值小于0的tr标签
- :header
- :animated 选择正在执行动画效果的xx标签
- :focus
内容过滤选择器
:contains() $(“xxx:contains(‘yyy’)”) 查找所有包含yyy文本内容的xxx标签元素
:empty $(“td:empty”)查找所有不包含子元素或者文本的td元素
:parent 非空
has(selector) selector表示一个选择器
匹配含有p元素的div元素
$(“div:has(p)”)
并为其添加一个test类
$(“div:has(p)”).addClass(“test”)
属性过滤选择器
- [attribute]
- [attribute=value] $(“input[name=’newsletter’]”)查找name属性值为newsletter的input标签
- [attribute != value]
- [attribute ^= string] $(“input[name^=’news’]”)查找name属性值以news开头的input标签
- [attribute $= string] $(“input[name$=’news’]”)查找name属性值以news结尾的input标签
- [][][selector1] [selector2] 需要同时满足多个条件
表单过滤选择器
- :btn $(“:btn”)匹配type为btn的所有元素, 和内容过滤选择器有点不同,”:”号前面不需要加标签类型
- :file
-
过滤选择器
Http
请求
请求行General
请求头Request Headers: 客户端告诉服务器
请求体Payload/Form Data, 因为Content-Type不同
get方式没有请求体, 但是有一个queryString, 添加在url后面
post方式是Form Data
json格式是Request Payload
会话Session
Http无状态: 服务器无法判断两次请求是否是同一个客户端发送过来的
通过会话跟踪技术来解决http无状态的问题
使用setAttribute来保存数据到session作用域中, 可能需要执行重定向或内部转发的操作, 此时再从中作用域中将数据提取出来. 在某个页面中加载java内存中的数据称为页面的渲染. thymeleaf就是用来实现页面渲染的技术
服务器内部转发和客户端重定向
服务器内部转发: 服务器去联系服务器内的另一个Servlet, 然后另一个Servlet把数据返回给客户端, 此时客户端的url并不会发生变化
request.getRequestDispatcher("xxxxxx").forward(request, response);
客户端重定向: 服务器直接返回客户端新的Servlet地址, 然后客户端再次请求新的Servlet
response.sendRediret("xxxxx");