1.2 安装过程中有一步让输入一个密码,建议使用oracle作为密码,方便记忆
1.3 安装完成之后,打开系统服务,查看服务是否已经正常启动,具体情况参照文档:oracle系统服务.txt
1.4 打开cmd,输入sqlplus,然后回车查看是否能执行该命令
1.5 如果不能执行,则需要把安装目录里面的BIN里面配置到系统环境变了path中,然后重新打开一个cmd窗口即可。
3.用户创建好之后,使用sqlplus命令登录到oracle数据库中,然后把之后要使用到的表及其数据导入到数据库中.参照文档:导入数据.txt
4.了解导入的三张表以及相互关系
s_emp 员工表
s_dept 部门表
s_region 地区表
5.之后登录或者操作数据库,就可以使用这个新创建的用户了。
sql的五大分类:
Data retrieval:数据查询
select
DML:数据操纵语言(行级操作语言):操作的是表格当中一条一条的数据
insert update delete
DDL:数据定义语言(表级操作语言):操作的内容为表格(对象)
create alter drop truncate rename
transaction control:事务控制
commit rollback savepoint
DCL:数据控制语言
grant revoke
delete,truncate区别:
delete: 删除表中的一条或者多条记录,该操作需要提交事务
truncate:清空表中数据,该操作不需要提交事务
比如:MOD(x,y)返回 x 除以 y 的余数(x 和 y 可以是两个整数,也可以是表中的整
数列)。常用的单行函数有:
字符函数:对字符串操作。
数字函数:对数字进行计算,返回一个数字。
转换函数:可以将一种数据类型转换为另外一种数据类型。
日期函数:对日期和时间进行处理。
6.-2. 聚合函数:聚合函数同时可以对多行数据进行操作,并返回一个结果。比如 SUM(x)
返回结果集中 x列的总合。
1.2 安装过程中有一步让输入一个密码,建议使用oracle作为密码,方便记忆
1.3 安装完成之后,打开系统服务,查看服务是否已经正常启动,具体情况参照文档:oracle系统服务.txt
1.4 打开cmd,输入sqlplus,然后回车查看是否能执行该命令
1.5 如果不能执行,则需要把安装目录里面的BIN里面配置到系统环境变了path中,然后重新打开一个cmd窗口即可。
3.用户创建好之后,使用sqlplus命令登录到oracle数据库中,然后把之后要使用到的表及其数据导入到数据库中.参照文档:导入数据.txt
4.了解导入的三张表以及相互关系
s_emp 员工表
s_dept 部门表
s_region 地区表
5.之后登录或者操作数据库,就可以使用这个新创建的用户了。
sql的五大分类:
Data retrieval:数据查询
select
DML:数据操纵语言(行级操作语言):操作的是表格当中一条一条的数据
insert update delete
DDL:数据定义语言(表级操作语言):操作的内容为表格(对象)
create alter drop truncate rename
transaction control:事务控制
commit rollback savepoint
DCL:数据控制语言
grant revoke
delete,truncate区别:
delete: 删除表中的一条或者多条记录,该操作需要提交事务
truncate:清空表中数据,该操作不需要提交事务
比如:MOD(x,y)返回 x 除以 y 的余数(x 和 y 可以是两个整数,也可以是表中的整
数列)。常用的单行函数有:
字符函数:对字符串操作。
数字函数:对数字进行计算,返回一个数字。
转换函数:可以将一种数据类型转换为另外一种数据类型。
日期函数:对日期和时间进行处理。
6.-2. 聚合函数:聚合函数同时可以对多行数据进行操作,并返回一个结果。比如 SUM(x)
EL全称 Expression Language(表达式语言),是jsp2.0最重要的特性之一,可以利用EL表达式来访问应用程序中的数据,来消除jsp页面中的java脚本。
el表达式的语法
expression例如x+y可以写成expression例如x+y可以写成{x+y}el中的关键字
以下是el中的关键字,他们不能用做标识符:
and,eq,gt,true,instanceof,or,ne,le,false,empty,not,lt,ge,null,div,mod
后面会对部门关键字做进一步讲述.运算符 [ ] 和 .
EL表达式可以返回任意类型的数值。例如EL表达式的结果是一个带有属性的对象,则可以利用 [ ] 和 . 来访问属性值,效果完全一样,只不过 [ ] 比 . 稍微正规一点。eg:
${object.["propertyName"]} 或 ${object.propertyName}
但是,要注意一个非常重要的“陷阱”,当属性名称不是有效的java变量名时,就只能用 [] ,而不能用 . 操作。
eg:获取请求头中host属性的值${header["host"]} 或 ${header.host}
这是没问题的。但是,当要获取accept-language属性时,就只能用 []。
el表达式的取值规则
el表达式的取值是从左到右进行的,对于expr-a[expr-b]形式的表达式,取值规则入下:
1)先计算expr-a,得到value-a
2)如果value-a为null,则返回null
3)然后计算expr-b,得到value-b
4)如果value-b为null,则返回null
5)如果value-a为map,则查看value-b是否是map中的一个key,如果是,则返回value-a.get(value-b),若不是,则返回null
6)如果value-a为list,或者array,则要进行如下处理
6.a)强制将value-b转为int,若转换失败,则抛出异常。
6.b)如果value-a.get(value-b)抛出IndexOutOfBandsException或者Array.get(value-a,value-b)抛出ArrayIndexOutBandsException,则返回null。
6.c)否则,若value是list则返回value-a.get(value-b),若value-a是一个Array,则返回Array.get(value-a,value-b)7)如果value-a不是一个map,list或者array,那么,value-a必须是一个JavaBean,这时,必须强制value-b为String。如果value-b是value-a是一个可读属性,则要调用getter方法。
EL表达式的隐式对象
在jsp页面中,可以利用jsp脚本来方法jsp隐式对象。但是在免脚本的jsp页面中,则不可能访问这些隐式对象,EL表达式通过提供一组自己的隐式对象来访问不同的对象。EL表达式是隐式对象有:
*pageContext:它与jsp中的PageContext对象相对应。initParam:它包含所有环境初始化参数,并用参数名作为key的map
*param:它包含所有请求参数,并用参数名作为key的map,每一个key 的值是指定名称的第一个参数值。
*paramValues:它包含所有请求参数,并用参数名为key的map。每个key的值是一个字符串数组,其中包含了指定参数名称的所有参数值。
header:这是一个包含请求标题,并用标题名作为key的map。每一个key的值就是指定标题名称的第一个标题。
headerValues:这是一个包含请求标题,并用标题名作为key的map。每个key的值是一个字符串数组,其中包含了指定标题名称的 所有参数值。
*cookie:这是一个包含了当前请求对象中所有cookie对象的map,cookie名称就是key的名称,每一个key都映射到一个cookie对象。
applicationScope:这个是一个包含了ServletContext对象中所有属性的map,并用属性名作为key。
sessionScope:这是一个包含了HttpSession对象中所有属性的map,并用属性名作为key。
requestScope:这是一个map,包含了当前HttpServletRequest对象中的所有属性,并用名称作为key。
pageScope:这是一个map,其中包含了全页面范围的所有属性,属性名称作为key。-
JSP虽然为我们提供了EL表达式用来替代JSP表达式,但是由于EL表达式仅仅具有输出功能,而不替代页面中的JSP脚本片段。
-
为了解决这个问题,JSP为我们提供了可以自定义标签库(Tag Library)的功能。
-
所谓自定义标签库就是指可以在JSP页面中以类似于HTML标签的形式调用Java中的方法。使用方法和我们JSP动作标签类似。
-
而为了方便开发使用Sun公司又定义了一套通用的标签库名为JSTL(JSP Standard Tag Library),里面定义很多我们开发中常用的方法,方便我们使用。
-
JSTL的标准由Sun公司定制,Apache的Jakarta小组负责实现。
-
JSTL由5个不同功能的标签库组成。
使用JSTL
-
然后还需要在JSP页面中通过taglib标签引入标签库。
-
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
prefix用来指定前缀名,我们通过该名来使用JSTL
-
uri相当于库的唯一标识,因为JSTL由多个不同的库组成,使用该属性指定要导入哪个库。
-
-
使用JSTL
-
-
<c:out value="hello"></c:out>
-
这个例子标识,调用前缀为c的标签的out方法,向页面中输出value属性中的字符串。
-
JSTL的使用非常像html标签。
核心标签(Core Tags)
-
Core标签库,包括了我们最常用的标签。
-
要使用Core标签库需要在JSP页面中加入:
-
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
<c:out>
-
<c:out>用于计算一个表达式并将结果输出到当前页面。
-
功能类似于JSP表达式<%= >和EL表达式${}
-
可以设置的属性
-
-
value
-
-
作用:要输出的值
-
参数类型:Object
-
-
default
-
-
作用:当value为null时显示的默认值。
-
参数类型:Object
-
-
escaXml
-
-
作用:是否对特殊字符进行转义。
-
参数类型:boolean
-
-
-
例:
-
-
<c:out value="${user.name}" default="" escapeXml="true"></c:out>
-
<c:set>
-
<c:set>用于添加或修改域中的属性
-
可以设置的属性:
-
-
value
-
-
作用:要设置的值
-
参数类型:Object
-
-
var
-
-
作用:表示域中存放的属性名。
-
参数类型:String
-
-
scope
-
-
作用:指定域(page、request、session、application),若不指定则为page域对象
-
参数类型:String
-
-
target
-
-
作用:要修改的域对象的属性名(必须是JavaBean或者Map)
-
参数类型:Object
-
-
property
-
-
作用:指定要修改的对象的属性名
-
参数类型:String
-
-
-
例
-
-
设置属性:
-
-
<c:set var="key" value="value" scope="request"></c:set>
-
-
修改属性:
-
-
<c:set property="name" target="${user}" value="孙悟空"></c:set>
-
-
<c:remove>
-
<c:remove>用于移除域中的属性
-
可以设置的属性:
-
-
var
-
-
作用:设置要移除的属性的名字
-
作用:String
-
-
scope
-
-
作用:设置要移除属性所在的域,若不指定则删除所有域中的对应属性
-
参数类型:String
-
-
-
例:
-
-
移除所有域中key属性:<c:remove var="key"/>
-
移除request中的key属性: <c:remove var="key" scope="request"/>
-
<c:if>
-
<c:if>用于实现if语句的判断功能
-
可设置的属性
-
-
test
-
-
作用:设置if判断的条件,用于判断标签体是否被执行
-
参数类型:boolean
-
-
var
-
-
作用:用于指定接收判断结果的变量名
-
参数类型:boolean
-
-
scope
-
-
作用:指定判断结果保存到哪个域
-
参数类型:String
-
-
-
例:
<c:if test="${empty user }" var="isUserEmpty" scope="request">用户为空</c:if><c:choose>、<c:when>、<c:otherwise>
只要有一个when执行,其他不执行<c:choose>标签里面不能放注释-
<c:choose>、<c:when>、<c:otherwise>三个标签配合使用,功能类似于Java中的if/else
-
<c:choose>是<c:when>和<c:otherwise>的父标签
-
<c:when>的属性
-
-
test
-
-
作用:用于设置判断条件,若正确则c:when中的代码执行,否则不执行
-
参数类型:boolean
-
-
-
<c:otherwise>
-
-
作用:如果所有的<c:when>都没有执行则执行<c:otherwise>的标签体
-
-
例:
<c:choose><c:when test="${param.age>=18 }">您已经成年</c:when><c:otherwise>您未成年</c:otherwise></c:choose><c:forEach>
-
<c:forEach>用于对多个对象的集合进行迭代,重复执行标签体,或者重复迭代固定的次数。
-
可设置属性:
-
-
var
-
-
作用:设置遍历出对象的名称并且将其放入到page域中
-
参数类型:String
-
-
items
-
-
作用:指定要遍历的集合对象
-
参数类型:数组、字符串和各种集合
-
-
varStatus
-
-
作用:指定保存迭代状态的对象的名字,该变量引用的是一个LoopTagStatus类型的对象,通过该对象可以获得一些遍历的状态:
-
-
count
-
index
-
first
-
last
-
name
-
-
参数类型:String
-
-
begin
-
-
作用:指定遍历的开始位置
-
参数类型:int
-
-
end
-
-
作用:指定遍历的结束位置
-
参数类型:int
-
-
step
-
-
作用:迭代的步长
-
参数类型:int
-
-
-
例:
<c:forEach items="${list}" var="user" begin="0" end="4" step="2" varStatus="vs">${vs.index} -- ${user.name } -- ${user.age }<br /></c:forEach><c:url>
-
<c:url>主要用来重写URL地址
-
-
可设置的属性:
-
-
value
-
-
作用:设置要处理的URI地址,注意这里要以/开头
-
可接受参数:String
-
-
var
-
-
作用:修改后存储到域对象中的uri属性名。
-
可接受参数:String
-
-
scope
-
-
作用:设置修改后uri存放的域
-
可接受参数:String
-
-
-
-
例:
-
-
使用相对路径:
-
<c:url value="index.jsp" var="uri" scope="request"><c:param name="name" value="张三"></c:param></c:url>-
-
-
会生成如下地址:index.jsp?name=%E5%BC%A0%E4%B8%89
-
-
使用绝对路径会自动在路径前加上项目名:
-
<c:url value="/index.jsp" var="uri" scope="request"><c:param name="name" value="张三"></c:param></c:url>-
-
-
会生成如下地址:/Test_JSTL/index.jsp?name=%E5%BC%A0%E4%B8%89
-
-
<c:redirect>
-
<c:redirect>主要用于将请求重定向到另一个资源地址
-
可设置的属性:
-
-
uri
-
-
作用:指定要重定向到的目标地址,注意这里指定绝对路径会自动加上项目名
-
参数类型:String
-
-
-
例:
<c:redirect url="/target.jsp"></c:redirect> -
-
-