- HTML
- 文字排版类标签
- 标题标签:h1~h6
- 横线标签:hr
- 换行标签:br
- 段落标签:p
- 图片标签img
- 文字排版类标签
属性:
src:图片的路径
alt:图片显示不出来的时候,给的文字提示信息
title:鼠标悬浮提示
-
- 清单和超链接
- 清单标签
- 无序清单:ul
- 清单标签
- 清单和超链接
属性type:circle/square/disc
-
-
-
- 有序清单:ol
-
-
属性type:1/a/A/i/I
-
-
-
- 清单项标签:li
- 超链接标签a
-
-
属性:
href:跳转到哪
target:在哪显示新页面 _self/_blank/framename
-
- 表格标签
- 表格标签table
- 行标签:tr
- 单元格标签:td
- 表头单元格:th
- 表格标题:caption
- 合并单元格的步骤:
- 表格标签
- 确认用哪个属性:跨行合并用rowspan,跨列合并用colspan
- 确定属性加在哪个单元格上:加在要合并的单元格里最前边的那个
- 确定属性的值:要合并几个单元格,值就是几
- 删除被合并掉的单元格
-
- 框架标签
框架标签,是用来切分页面的。切分谁,就用frameset把谁替换掉
-
-
- 框架集标签frameset
-
属性:
rows:分行。比如rows=”200,*”分成了两行,第一行高200px,第二行占剩余全部
cols:分列。用法和rows完全一样
frameset里分了几部分,就必须有几个frame标签
-
-
- 框架标签frame
-
属性:
src:要嵌套进来的页面的路径
name:框架的名称,主要是给超链接标签使用的
-
- 表单标签(重点)
- 表单标签form
- 表单标签(重点)
method: 表单的提交方式get/post
action:表单提交路径
-
-
- 表单项标签input
- type属性:
- 表单项标签input
-
text:文本框。使用value属性设置默认值
password:密码框。使用value设置默认值
radio:单选按钮。name相同的radio属于同一组,同组radio互斥。
在需要默认选中的选项上增加属性:checked=”checked”
checkbox:复选框。name相同的checkbox属于同一组,目的仅仅是方便后台接收参数:request.getParameterValues();
在需要默认选中的选项上增加属性:checked=”checked”
button:普通按钮
submit:提交按钮
reset:重置控制
image:图片提交按钮,功能和submit完全一样,只是用图片作为按钮
file:文件选择框,默认提交的是文件名称
hidden:隐藏域
-
-
-
- name属性:表单项的名称
-
-
如果表单项的数据需要提交,就必须有name属性
-
-
-
- value属性:作用会随type不同而改变
-
-
text/password:value是默认值
radio/checkbox:value表示某一个选项的值,选中哪个选项就提交哪个选项的value值
button/submit/reset:value表示按钮上的提示信息
image:value没有实际意义
file:value是无效的
hidden:value表示隐藏域的值
-
-
-
- readonly属性:表示表单项只读,数据不可更改
- disabled属性:表示表单项不可用,数据不可更改并且不会提交
-
-
-
-
- 下拉框标签select
- 下拉框标签:select
- 下拉框标签select
-
name属性:如果下拉框的数据要提交就必须有name属性
multiple属性:固定值multiple,表示下拉框可以多选
-
-
-
- 下拉选项标签:option
-
-
value属性:表示一个下拉选项的值,选中哪个下拉选项,就提交哪个选项的value值
-
-
-
- 默认值设置:
-
-
如果默认的下拉模式,默认选中第一个选项。
手动设置默认值:在下拉选项上添加属性:selected=”selected”
-
-
- 文本域标签textarea
-
name属性:如果数据要提交就必须有name属性
cols属性:文本域的宽
rows属性:文本域的高
文本域的默认值设置:直接写在textarea标签体里边。
- CSS
- 引入方式
- 内嵌样式/行内样式
- 引入方式
<div style=”样式名:值;样式名:值;….”></div>
-
-
- 内部样式
-
在head标签里增加子标签style,把样式写在style标签体里
<style>
选择器{
样式名:值;…
样式名:值;
}
</style>
-
-
- 外部样式
-
在head标签里使用link标签来引入外部的css文件
<link rel=”stylesheet” href=”css文件路径”>
-
- 选择器
- 基本选择器
- 标签选择器 div{样式…}
- id选择器 #id值{样式…}
- class选择器 .class名称{样式…}
- 基本选择器
- 选择器
优先级:id选择器 > class选择器 > 标签选择器
-
-
- 层级选择器
-
多个选择器之间使用空格隔开,表示下级选择器。
空格表示后代,而不是父子关系
div span{样式….}
-
-
- 属性选择器
-
选择器[属性名=’值’]{样式…}
-
- 常用样式(略)
- JavaScript
js的作用:用来操作浏览器或者操作html文档的
-
- 引入
- 内部js
- 引入
使用script标签,把jsp代码写在script标签体里
<script type=”text/javascript”>
alert();
</script>
-
-
- 外部js
-
使用script标签引入外部的js文件
<script type=”text/javascript” src=”js文件路径”></script>
js代码在html内部任意位置都可以运行,有一个原则:在不影响页面显示效果的前提下,js越晚加载越好
-
- 组成
- ECMAScript基本语法规范
- 变量定义:var
- 数据类型
- 原始数据类型
- ECMAScript基本语法规范
- 组成
- number类型
- boolean类型
- string类型
- null类型
- undefined类型
-
-
-
- 引用数据类型
-
-
-
- Array数组类型
定义数组:
var arr = new Array();
var arr = new Array(3);
var arr = new Array(“a”, “b”);
var arr = [“a”, “b”];
属性:
length:用来获取数组的长度,或者设置数组的长度
方法:
join(分隔符):把数组拼接成字符串
arr3.concat(arr1, arr2):把多个数组合并成一个
- Math数据工具类
Math.PI
Math.abs():绝对值
Math.ceil():向上取整
Math.floor():向下取整
Math.round():四舍五入
Math.random():取随机数
- Date日期对象
定义日期对象:var date = new Date();
常用方法:
toLocaleString();:转换成本地日期字符串
getTime():获取毫秒值
setTime():设置毫秒值
- RegExp正则表达式对象
定义正则表达式:
var reg = new RegExp(“表达式”);
var reg = /表达式/;
常用方法:
reg.test(字符串):校验字符串格式,返回boolean值
-
-
-
- 运算符
-
-
- ==和===
==只比较值,值相同就是true
===比较值和类型,都相同才是true
- &&和||
js里进行boolean类型的逻辑运算,只有&&和||,没有&和|
- +-*/
+:如果有字符串,是拼接字符串。如果全部都是数据,是加法运算
-*/:如果有字符串,会尝试转换成数据再运算。如果转换不成功,结果NaN
-
-
-
- 逻辑语句
-
-
if判断和Java的if判断不同。
if判断时,参数类型:
boolean:
number:0是false,非0是true
string:””是false,非””是true
null:始终是false
undefined:始终是false
-
-
-
- 函数(重点)
- 普通函数
- 函数(重点)
-
-
function add(a, b){
return a+b
}
add(3, 5);
-
-
-
-
- 匿名函数
-
-
-
var fn = function(a, b){
return a+b;
}
匿名函数应用方式1:fn(3, 5);
匿名函数应用方式2:把匿名函数作为另外一个函数的实参传递进去
setTimeout(function(){}, 2000);
-
-
-
- 事件(重点)
- 常见事件:
- 事件(重点)
-
-
onclick/onload/onsubmit/onchange
-
-
-
-
- 绑定事件
-
-
-
- 事件和响应行为完全嵌入到事件源标签里
<input type=”button” value=”按钮” οnclick=”alert()”/>
- 通过js动态绑定事件(派发事件)
document.getElementById(“btn1”).οnclick=function(){
alert();
}
-
-
- BOM用来操作浏览器的
- 有哪些bom对象
- BOM用来操作浏览器的
-
- window浏览器窗口对象,是所有bom对象的顶级对象
- location浏览器地址信息对象,可以用来获取或者设置网址
- history浏览器历史记录信息对象,可以用来进行历史记录切换
- screen屏幕显示信息对象,主要是前端用来做一些显示上的特效
- navigator浏览器信息对象,只读的。可以用来获取浏览器的内核、版本、操作系统等信息
-
-
- window对象
-
-
- 提供了一些弹窗方法
普通弹窗alert()
确认弹窗confirm()
输入弹窗prompt()
- 提供了定时器
执行多次的定时器:
var timer = setInterval(函数对象, 间隔毫秒值);
clearInterval(timer);
执行一次的定时器(延时器)
var timer = setTimeout(函数对象, 延迟毫秒值)
clearTimeout(timer);
- 提供了一些全局函数
parseInt():转换成整数
parseFloat():转换成小数
eval():把字符串作为js代码来执行
encodeURI():编码字符串
decodeURI():解码字符串
-
-
-
- location对象
-
-
- 获取当前网址:
var url = location.href;
- 设置当前网址(网址跳转):
location.href = “网址”;//在当前窗口打开页面
window.open(“网址”);//在新窗口打开页面
-
-
-
- histroy对象
-
-
前进一步:forward()
后退一步:back();
切换n步:go(n); n是正数前进n步;n是负数后退n步
-
-
- DOM用来操作html文档的
- 标签操作
- DOM用来操作html文档的
-
- 获取标签:
document.getElementById
document.getElementsByName
document.getElementsByTagName
document.getElementsByClassName
- 创建标签
var divElement = document.createElement(“div”);
- 插入标签
父标签对象.appendChild(子标签对象);
- 操作标签体
获取标签体:标签对象.innerHTML
设置标签体:标签对象.innerHTML = “标签体的内容”
-
-
-
- 属性的操作
-
-
- 获取属性:
var value = 标签对象.属性名;
var value = 标签对象.getAttribute(“属性名”);
- 设置属性:
标签对象.属性名 = 值;
标签对象.setAttribute(“属性名”, 值);
- jQuery
jQuery是一个js框架,用来简化js代码的。提供了更简单的dom,event, animate, ajax的简易操作。
-
- dom操作
- 获取标签对象(jQuery选择器:重点)
- 基本选择器(重点)
- 获取标签对象(jQuery选择器:重点)
- dom操作
- 标签选择器 $(“div”)
- id选择器 $(“#btn1”)
- class选择器 $(“.cls”)
-
-
- 层级选择器
-
-
祖孙选择器$(“a b”)
父子选择器$(“a>b”)
兄弟选择器$(“a+b”)
弟弟选择器$(“a~b”)
-
-
-
- 属性选择器
-
-
$(“a[attr]”):包含attr属性的所有a元素
$(“a[attr=’v’]”):attr属性值是v的a元素
$(“a[attr^=’v’]”):attr属性值以v开头的a元素
$(“a[attr$=’v’]”):attr属性值以v结尾的a元素
$(“a[attr*=’v’]”):attr属性值中包含v的a元素
$(“a[attr!=’v’]”):attr属性值不等于v的a元素
$(“a[attr=’v’][attr1]”):复合属性选择器
-
-
-
- 基本过滤选择器
-
-
:first 第一个
:last 最后 一个
:even 索引为偶数的
:odd 索引为奇数的
:not(.cls) 排除掉selector的结果
:eq(n) 索引为n的
:gt(n) 索引大于n的
:lt(n) 索引小于n的
:animated 获取动起来的动画
:header 获取所有标题h1~h6
-
-
-
- 表单属性选择器(重点)
-
-
:enabled 获取可用 的表单项
:disabled 获取不可用的表单项
:selected 针对下拉选项option的,获取被选中的option标签
:checked 针对radio和checkbox的,获取被选中的单选或多选项
-
-
- 其它dom操作
- 操作标签体/文本/值
- 其它dom操作
-
操作标签体:html();
操作文件:text()
操作值:val()
-
-
-
- 操作css:
-
-
$(“div”).css(“color”,”red”);
$(“#div1”).css(“color”);
-
-
-
- 操作html属性
-
-
attr(“属性名”,属性值);/attr(“属性名”)/removeAttr(“属性名“)
prop(“属性名”,属性值);/ prop (“属性名”)/removeProp(“属性名“)
如果是操作selected和checked属性,必须使用prop相关方法。其它属性优先使用attr,如果不行再用prop
-
-
-
- 操作class属性
-
-
添加class:addClass()
删除class:removeClass()
切换class:toggleClass()
-
-
-
- 创建标签
-
-
$(“<div>aaaa</div>”)
-
-
-
- 插入标签
-
-
插入到内部最后:append
插入到内部最前:prepend
插入到前边:before
插入到后边:after
上边四个有反向插入的方法
appendTo
prependTo
insertBefore
insertAfter
-
-
-
- 删除标签:remove()/empty()
-
- 事件操作
-
- js事件名称带on,jQuery事件名称不带on
- js事件是属性,jQuery事件是方法
- js响应行为是事件属性的值,jQuery响应行为是事件方法的实参
$(“#btn1”).click(function(){
alert();
});
-
- jQuery的循环遍历
- 原始循环遍历for循环
- jQuery的全局each方法
- jQuery的循环遍历
$.each(被循环遍历的对象, function(index, element){
//index 是当前对象的索引
//element 是当前对象
//this 是当前对象
});
-
-
- jQuery对象的each方法
-
jQuery对象.each(function(index, element){
//index 是当前对象的索引
//element 是当前对象
//this 是当前对象
});
-
- 插件validate
- 引入文件:jQuery,validate插件,语言js(可不引)
- 基本语法
jQuery表单对象.validate({
rules:{
表单项的name:{
校验规则名称:规则的值,…
校验规则名称:规则的值
}
},
messages:{
表单项的name:{
校验规则名称:提示信息,…
校验规则名称:提示信息
}
}
});
- 自定义提示信息的位置
<label for=”表单项的name” class=”error”></label>
- 自定义校验规则
$.validator.addMethod(“规则名称”,function(value, element, params){
//value:要校验的值
//element:要校验的表单项标签对象
//params:校验规则的值
return true表示校验通过;
}, “默认提示信息”);
- Bootstrap
- 引入的文件
css/fonts/js
页面上引入的文件:
bootstrap.css/jQuery.js/bootstrap.js
-
- 栅格系统
用来做页面布局,本质仍然是div+css。在应用上更接近于table表格布局
-
-
- 容器
-
container:宽度随设备类型而改变
lg:大型设备
md:中型设备
sm:小型设备
xs:超小型设备
container-fluid:始终宽100%
-
-
- 行row
-
一行分成12份
-
-
- 单元格col-*-*
-
第一个*:设备类型
第二个*:单元格占几份
- Http协议和tomcat
- HTTP协议
Http协议包括两部分:请求和响应。没有请求就没有响应。
-
-
- http请求
- 请求行
- http请求
-
请求方式 请求资源 协议版本
POST /web/login.html HTTP/1.1
-
-
-
- 请求头
-
-
格式: key:value 一个键值对是一个请求头,一次请求有n多个请求头。
-
-
-
- 请求体
-
-
格式: name=value&name=value…
提交的post表单参数。并不是任何时候请求体都有数据:
post提交,并且有参数的时候。
-
-
- http响应
- 响应行
- http响应
-
格式: 协议版本 响应状态码 响应状态描述
比如 HTTP/1.1 200 OK
-
-
-
- 响应头
-
-
格式: key:value 一个键值对是一个响应头,一次响应可以有n多个响应头
-
-
-
- 响应体
-
-
响应的正文内容。浏览器请求什么,就响应什么。
-
- web开发中常见的概念
- 软件架构
- C/S架构 client/server架构
- B/S架构 browser/server架构
- 软件资源
- 软件架构
- web开发中常见的概念
静态资源:html,js,css, gif
动态资源:一个资源不同人访问,不同时候访问结果不同。jsp,Servlet
-
-
- 常见的web应用服务器软件
-
- tomcat:apache免费小型服务器软件
- weblogic:oracle的大型收费服务器软件
- websphere:IBM大型收费服务器软件
- tomcat
- Servlet(重点)
- Servlet接口
- API和生命周期
- init(ServletConfig config)初始化方法
- API和生命周期
- Servlet接口
Servlet被创建时调用。
参数:ServletConfig是Servlet的配置信息对象(了解)
- 获取Servlet的名称
- 获取初始化配置信息
- 获取ServletContext对象
-
-
- service(ServletReqest req, ServletResponse resp)
-
-
业务处理方法,每次调用Servlet都必定会执行这个方法。
参数:
代表http请求的request对象
代表http响应的response对象
-
-
-
- destory()
- 生命周期
-
-
何时创建:默认第一次访问时,服务器软件创建,创建时必定会执行init,一个Servlet类只有一个对象存在。
何时销毁:服务器关闭,服务器软件执行destory方法
每次访问必定会执行的方法是:service方法
-
-
- 配置信息
- servlet标签
- servlet-name:Servlet的名称,不重复即可
- servlet-class:servlet的全路径名称,服务器根据这个值通过反射创建对象
- init-param:初始化参数配置,可以有多个
- servlet标签
- 配置信息
-
param-name:参数名称
param-value:参数值
-
-
-
-
- load-on-startup标签:用来配置Servlet的创建时机
-
-
-
值是自然数。
0:表示默认,默认第一次访问时创建
正整数:表示服务器一启动就创建Servlet对象,数值越小优先级越高
-
-
-
- servlet-mapping标签
- servlet-name:给哪个Servlet配置访问路径
- url-pattern:Servlet的访问路径配置,可以有多个url-pattern
- servlet-mapping标签
-
-
- 完全匹配 /demo
- 目录匹配 以/开头,以*结尾 /aa/bb/*
- 扩展名匹配 以*开发,以扩展名结尾 *.jsp
- HttpServlet
- 创建Java类,继承HttpServlet父类(用eclipse菜单创建,会自动生成配置信息)
- 重写doGet/doPost方法
继承体系:
LoginServlet extends HttpServlet
HttpServlet extends GenericServlet
GenericServlet implements Servlet
-
- ServletContext
代表整个web应用的对象,服务器软件在启动服务时为每个web应用创建一个ServletContext对象。
-
-
- 获取方式
-
ServletContext context = this.getServletContext();
-
-
- 作用
- 获取全局的初始化参数
- 作用
-
String value = context.getInitParameter(String name);
-
-
-
- 获取web资源的实际路径
-
-
String realPath = context.getRealPath(服务端路径);
-
-
-
- 是一个域对象(重点)
-
-
- 域对象必定会有三个方法:
setAttribute
getAttribute
removeAttribute
- ServletContext域对象的生命周期:
何时创建:服务器启动时
何时销毁:服务器关闭时
作用范围:整个web应用
- response
代表http响应,主要是用来由服务端向客户端发送数据
-
- 设置响应行数据
设置响应状态码:
response.setStatus(int code);
设置错误状态码:
response.sendError(int code);
-
- 设置响应头数据
设置响应头:
response.setHeader(String name, String value);
response.setIntHeader(String name, int value);
response.setDateHeader(String name, long value);
追加响应头:
response.addHeader(String name, String value);
response.addIntHeader(String name, int value);
response.addDateHeader(String name, long value);
-
- 设置延迟刷新:响应头refresh
response.setHeader(“refresh”, “秒数;url=客户端地址”);
-
- 重定向(重点:应用)
response.sendRedirect(String 客户端路径);
-
- 设置响应体数据
- 设置字符型响应体
- 设置响应体数据
PrintWriter writer = response.getWriter();
中文字符型响应体乱码:
原因:response缓冲区默认iso-8859-1,要求缓冲区编码和客户端解码方式一致
解决:
response.setContentType(“text/html;charset=utf-8”);
-
-
- 设置字节型响应体
-
ServletOutputStream os = response.getOutputStream();
-
-
- 文件下载
-
- 告诉客户端以附件的形式来处理响应体的内容
response.setHeader(“Content-Disposition”,”attachment;filename=另存主的文件名称”);
- 告诉客户端传递过去的数据的MIME类型
response.setContentType(context.getMimeType(filename));
- 使用输入流读取文件,写到 ServletOutputStream里
下载文件时,另存为的文件名称,中文乱码:
原因:通过响应头告诉客户端的文件名称,但是响应头只支持iso-889-1
解决:
先对文件名称进行编码,按照浏览器的解码方式进行编码。
/**
* 自动根据不同浏览器对文件名称进行编码,避免文件下载时中文文件名称乱码<br>
*
*/
public String encodeFilename(HttpServletRequest request, String filename){
try{
String agent = request.getHeader("User-Agent");
if (agent.contains("MSIE")) {
// IE浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+", " ");
} else if (agent.contains("Firefox")) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
filename = "=?utf-8?B?"+ base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
} else {
// 其它浏览器
filename = URLEncoder.encode(filename, "utf-8");
}
}catch(Exception e){
e.printStackTrace();
}
return filename;
}
- request(重点)
代表http请求的request对象,主要是用来接收客户端传递过来的数据
-
- 获取请求行的数据
获取请求方式 :request.getMethod()
获取请求资源:
request.getRequestURL()
request.getRequestURI()
获取web应用的名称:request.getContextPath();
-
- 获取请求头的数据
String value = request.getHeader(String name);
Enumeration values = request.getHeaders(String name);
-
- 获取请求参数
获取单值参数:String value = request.getParameter(String name);
获取多值参数:String[] values = request.getParameterValues(String name)
获取参数map:Map<String, String[]> map = request.getParameterMap();
获取中文参数乱码:
- post乱码
- 原因:request默认使用iso-8859-1解码
- 解决:指定request以utf-8的方式解码
request.setCharacterEncoding(“utf-8”);
- get乱码
- 原因:是在请求行里传递的参数,只支持iso-8859-1
- 解决:先获取乱码,然后手动转码还原
String value = request.getParameter(String name);
value = new String(value.getBytes(“iso-8859-1”), “utf-8”);
-
- 域对象和请求转发(重点)
- request域对象
- 域对象和请求转发(重点)
必定有三个方法:setAttribute/getAttribute/removeAttribute
生命周期:
何时创建:一次请求开始
何时销毁:一次请求结束
作用范围:一次请求转发链中
-
-
- reuqest实现请求转发
-
request.getRequestDispatcher(服务端路径).forward(request, response);
- 会话技术cookie/session
- 会话技术
用来保存某一个客户端和服务端之间,会话数据的技术。
-
- cookie
把会话数据保存在客户端
-
-
- 怎样创建Cookie
-
Cookie cookie = new Cookie(String name, String value);
-
-
-
- 设置有效期
-
-
默认有效期:一次会话期间
手动设置有效期:
cookie.setMaxAge(int seconds);
-
-
-
- 设置有效路径
-
-
默认有效路径:生成Cookie的资源所在的路径是有效路径,只有浏览器在访问有效路径内的资源时,才会携带Cookie。
手动设置有效路径:
cookie.setPath(有效路径);
-
-
- 怎样发送到客户端
-
response.addCookie(cookie);
-
-
- 怎样接收客户端携带的cookie
-
Cookie[] cookies = request.getCookies();
-
-
- 删除客户端已经存在的Cookie
-
创建一个同name,同path,同domain的Cookie,设置有效期为0,发送到客户端覆盖已有的Cookie。
-
- session
把会话数据保存在服务端,sessionid使用Cookie保存:session依赖于Cookie
-
-
- 怎样获取session对象
-
HttpSession session = request.getSession();
什么时候获取原有的session:客户端的JSESSIONID和服务端的session对应的上的时候
什么时候创建新的session:客户端的JSESSIONID和服务端的session对应不上的时候。
-
-
- 怎样向session中存取数据(域对象:重点)
-
必定有三个方法:setAttribute/getAttribute/removeAttribute
生命周期:
何时创建:request.getSession(),客户端的JSESSIONID和服务端的session对应不上
何时销毁:服务器非正常关闭/会话超时/手动销毁session.invalidtae()
作用范围:一次会话期间
-
- 会话技术应用场景
购物车
登录状态
验证码
- JSP
- 原理
JSP文件不能直接运行,必须部署到服务器里。
jsp文件-->翻译-->java文件(Servlet)-->编译-->class文件-->加载并运行class
-
- 基本语法
- 嵌套Java脚本
- 基本语法
- <%= Java表达式 %>向页面输出内容
会被转换成Servlet的service方法里:out.write(Java表达式)
- <% Java代码块 %>
会被原封不动的拷贝到Servlet的service方法里
- <%! Java声明 %>
会被原封不动的拷贝成为Servlet的成员内容
-
-
- 注释
-
- HTML注释
- Java注释
- JSP注释 <%-- JSP注释 --%>
- 指令
作用在翻译期间,指导服务器软件怎样去翻译jsp
<%@ 指令名称 属性=“值” 属性=“值” %>
-
-
- page指令
-
指导服务器软件翻译jsp文件。写在jsp第一行
常用属性:
language:jsp支持的脚本语言,仅支持java
contentType:等价于response.setContentType()
pageEncoding:jsp文件实体的编码
import:等价于Java类里的import,是page指令里唯一一个可以出现多次的属性
session:true|false,jsp是否内置session对象。默认true
errorPage:错误页面路径。如果jsp出现异常,会显示错误页面的内容
isErrorPage:true|false,给错误页面使用的。如果为true,jsp会内置exception对象
-
-
- include指令(静态包含)
-
用来把另外一个页面包含到当前页面中。
<%@ include file=”子页面的服务端路径”%>
-
-
- taglib指令
-
用来引入外部标签库
<%@ taglib uri=”” prefix=”” %>
-
- 内置对象
- 有9个内置对象
- 内置对象
request
response
sessoin
application
pageContext
page
config
out
exception
-
-
- out对象
-
用来向页面输出内容的,指向自己的缓冲区。当服务器响应时会flush到response缓冲区。
-
-
- pageContext对象(域对象)
- 是域对象
- pageContext对象(域对象)
-
何时创建:JSP对应的Servlet被调用时
何时销毁:JSP对应的servlet被调用完成时
作用范围:当前jsp页面中
-
-
-
- 可以获取其它8个内置对象
-
- 动作(jsp标签)
- include标签(动态包含)
-
用来把另外一个页面包含到当前页面中
<jsp:include page=”子页面的服务端路径”></jsp:include>
-
-
- 静态包含和动态包含的区别(面试)
-
- 包含的时机不同:静态包含是翻译期包含,动态包含是运行期包含
- 包含的请求不同
- 生成的文件数据不同:静态包含生成一个Java文件,动态包含生成多个Java文件
- EL
EL表达式主要是用来代替JSP中<%=Java表达式%>
基本语法:${requestScope.key} 或者 ${requestScope[“key”]}
-
- 从域里取数据显示到页面上
${key} 等价于 <%=pageContext.findAttribute(“key”) %>
从小到大开始获取,如果pageScope没有则向上一层域对象里面寻找
-
- 可以进行运算
- 基本的运算+-*/
- 可以进行运算
${number+1}
-
-
- 逻辑运算
-
使用关键字:gt, lt, ge, le, eq, ne, and, or
使用运算符:>, <, >=, <=, ==, !=, &&, ||
-
-
- 可以判空empty
-
v_null: true
v_number: false
v_empty_string: true
v_notEmpty_string: false
v_bean: false
v_empty_list: true
v_notEmpty_list: false
v_empty_map: true
v_notEmpty_map: false
-
-
- 三元运算符
-
${age>18?”成年”:”未成年”}
-
- 有11个内置对象
- 4个域对象:
- 有11个内置对象
pageScope, requestScope, sessionScope,applicationScope
-
-
- 两个 请求参数对象:
-
param
paramValues
-
-
- 两个请求头对象:
-
header
headerValues
-
-
- 一个pageContext对象
-
${pageContext.request.contextPath} 获取web应用名称
-
-
- 一个初始化参数对象:initParam
- 一个cookie对象
-
- JSTL
- 引入
- 导包
- 在JSP里引入标签库
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
JSTL本身不具备获取数据,数据运算的能力,需要借助于EL表达式
-
- if判断
<c:if test=”判断条件”>
判断为true时,这里的内容会显示
</c:if>
属性:
test:使用EL表达式进行判断
-
- forEach循环遍历
- 基本循环
- forEach循环遍历
<c:forEach var=”i” begin=”0” end=”9” step=”1”>
${i}
</c:forEach>
属性:
var:循环遍历的变量,变量的值是被保存到了pageScope域中
begin:从几开始循环
end:循环到几结束
step:每次循环加几
-
-
- 增强循环
-
<c:forEach items=”${从域中获取数据}” var=”item” varStatus=”vs”>
数据是:${item}
是否每一次循环:${vs.first}
是否最后一次:${vs.last}
当前第几次(序号):${vs.count}
</c:forEach>
属性:
items:被循环遍历的对象,通常是使用EL从域中取出来的
var:循环遍历的变量,变量的值被保存到了pageScope域中
varStatus:循环状态对象,里边保存了当前循环第几次,是否第一次,是否最后一次
-
- Java开发模式
- MVC模式
- Java开发模式
M:Model模型层,通常指JavaBean
V:View 视图层,通常指页面
C:Controller控制层,通常指Servlet
-
-
- JavaEE开发三层架构
-
web层:web包
service层:service包
dao层:dao包
domain包:放JavaBean
utils包:放工具类