Oracle数据库 JavaWeb网站

oracle数据库用得不是很多,但总体用起来也没啥问题,因为大多数时候就是增删查改的操作,这些跟其他数据库也没多大区别。这次我们的数据库新的认识。
1.首先学会装载Oracle数据库。

        1.1 最好默认按照到C盘
        1.2 安装过程中有一步让输入一个密码,建议使用oracle作为密码,方便记忆
        1.3 安装完成之后,打开系统服务,查看服务是否已经正常启动,具体情况参照文档:oracle系统服务.txt
        1.4 打开cmd,输入sqlplus,然后回车查看是否能执行该命令
        1.5 如果不能执行,则需要把安装目录里面的BIN里面配置到系统环境变了path中,然后重新打开一个cmd窗口即可。

      2.登录oracle自带的管理系统,新建一个属于自己的账号.参照文档:oracle系统服务.txt

    3.用户创建好之后,使用sqlplus命令登录到oracle数据库中,然后把之后要使用到的表及其数据导入到数据库中.参照文档:导入数据.txt
    
     4.了解导入的三张表以及相互关系
        s_emp        员工表
        s_dept        部门表
        s_region    地区表

     5.之后登录或者操作数据库,就可以使用这个新创建的用户了。

     6.五种分类
        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:清空表中数据,该操作不需要提交事务
6.

6.-1.单行函数:对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果,

比如:MOD(x,y)返回 除以 的余数(和 可以是两个整数,也可以是表中的整

数列)。常用的单行函数有:

  字符函数对字符串操作。

  数字函数对数字进行计算,返回一个数字。

 转换函数可以将一种数据类型转换为另外一种数据类型。

日期函数:对日期和时间进行处理。

6.-2.  聚合函数:聚合函数同时可以对多行数据进行操作,并返回一个结果。比如 SUM(x)

返回结果集中 x列的总合

oracle数据库用得不是很多,但总体用起来也没啥问题,因为大多数时候就是增删查改的操作,这些跟其他数据库也没多大区别。这次我们的数据库新的认识。
1.首先学会装载Oracle数据库。

        1.1 最好默认按照到C盘
        1.2 安装过程中有一步让输入一个密码,建议使用oracle作为密码,方便记忆
        1.3 安装完成之后,打开系统服务,查看服务是否已经正常启动,具体情况参照文档:oracle系统服务.txt
        1.4 打开cmd,输入sqlplus,然后回车查看是否能执行该命令
        1.5 如果不能执行,则需要把安装目录里面的BIN里面配置到系统环境变了path中,然后重新打开一个cmd窗口即可。

      2.登录oracle自带的管理系统,新建一个属于自己的账号.参照文档:oracle系统服务.txt

    3.用户创建好之后,使用sqlplus命令登录到oracle数据库中,然后把之后要使用到的表及其数据导入到数据库中.参照文档:导入数据.txt
    
     4.了解导入的三张表以及相互关系
        s_emp        员工表
        s_dept        部门表
        s_region    地区表

     5.之后登录或者操作数据库,就可以使用这个新创建的用户了。

     6.五种分类
        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:清空表中数据,该操作不需要提交事务
6.

6.-1.单行函数:对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果,

比如:MOD(x,y)返回 除以 的余数(和 可以是两个整数,也可以是表中的整

数列)。常用的单行函数有:

  字符函数对字符串操作。

  数字函数对数字进行计算,返回一个数字。

 转换函数可以将一种数据类型转换为另外一种数据类型。

日期函数:对日期和时间进行处理。

6.-2.  聚合函数:聚合函数同时可以对多行数据进行操作,并返回一个结果。比如 SUM(x)

返回结果集中 x列的总合
EL表达式

EL全称 Expression Language(表达式语言),是jsp2.0最重要的特性之一,可以利用EL表达式来访问应用程序中的数据,来消除jsp页面中的java脚本。

  • el表达式的语法 
    expressionx+yexpression例如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公司定制,ApacheJakarta小组负责实现。
    • JSTL5个不同功能的标签库组成。

    使用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
            • 作用:当valuenull时显示的默认值。
            • 参数类型:Object
          • escaXml
            • 作用:是否对特殊字符进行转义。
            • 参数类型:boolean
        • 例:
          • <c:out value="${user.name}" default="" escapeXml="true"></c:out>

        <c:set>

        • <c:set>用于添加或修改域中的属性
        • 可以设置的属性:
          • value
            • 作用:要设置的值
            • 参数类型:Object
          • var
            • 作用:表示域中存放的属性名。
            • 参数类型:String
          • scope
            • 作用:指定域(pagerequestsessionapplication),若不指定则为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>
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值