JSP简单介绍

JSP原理
    当浏览器访问一个web服务器上的jsp页面时
    在服务器端 会将jsp页面进行翻译 -->.java文件 编译成 --->.class文件 执行
    以jsp作为代码的显示模板 重点在于显示数据

    以Servlet作为控制器 重点在于编写java逻辑代码

jsp的基本语法
    1.模板元素
        网页静态内容 如html标签 /文本 css js
    2.jsp的脚本
        2.1 小脚本 <% java 代码 %>
        2.2 表达式 <%=表达式 %> --> int i=10; out.print(i);
        2.3 声明 <%! %> 表示在类中定义全局成员 和 静态块

    3.jsp的注释

            jsp注释 <%-- 被注释的内容(jsp注释 查看页面源代码 看不到 安全) --%>

            网页注释 <!-- 被注释的内容(网页注释 查看页面源代码 能看到 不安全) -->

JSP指令语法:
        <%@ 指令名称 属性1="属性值1" 属性2="属性值2"....%> 或者
        <%@ 指令名称 属性1="属性值1" %>
        <%@ 指令名称 属性2="属性值2" %>

    page指令:定义jsp页面的各种属性

        1.1 import 和java代码中的import是一样的 都是导包用的
            可以将多个包写在一起 中间用逗号分隔
            也可以一个一个导入 单独编写
        1.2 language 语言
        1.3 contentType 设置响应的编码集
        1.4 pageEncoding jsp页面编码集
        1.5 errorPage 如果页面中出现错误 则跳转到指定的资源
        1.6 isELIgnored 是否支持EL表达式 默认是false,支持EL表达式 平时不用设置
            isELIgonored="false"

    taglib指令:在jsp页面中调入JSTL标签库 替换jsp中的java代码片

        <%@ taglib uri="" prefix="" %>
            uri 导入的包
            prefix 标签的前缀

    include指令:把其他资源包含到当前页面中

        静态包含:<%@ include file="要包含的资源"%>
        动态包含:<jsp:include page="要包含的资源"></jsp:include>
        include指令 与 <jsp:include>动作区别:
            1.执行时间不同
                include指令 是在翻译阶段执行
                <jsp:include>动作 在请求处理阶段执行
            2.引入内容不同
                include指令 在翻译时就把两个文件合并成一个
                <jsp:include>指令 不会合并文件 当代码执行到<jsp:include>
                    才会引入被包含文件的内容
            3.参数不同
                <jsp:include>可以嵌入<jsp:param> 传递参数

        原则:能用静的 就不用动的

JSP的6个动作(很少用)
    使用标签的形式来表示一段java代码
    1.<jsp:include></jsp:include> 动态包含
    2.<jsp:param> 设置请求参数
    3.<jsp:useBean> 创建一个对象
    4.<jsp:setProperty> 给指定的对象属性赋值
    5.<jsp:getProperty> 取出指定对象的属性值

    6.<jsp:forward> 请求转发

JSP的9个内置对象
    在jsp中 <%%> 和 <%= %> 中能够直接使用的对象
    对象名            类型
    request            javax.servlet.http.HttpServletRequest
    response        javax.servlet.http.HttpServletResponse
    session            javax.servlet.http.HttpSession
    application        javax.servlet.ServletContext
    exception        java.lang.Throwable
    page            java.lang.Object 当前对象this 当前servlet实例
    config            javax.servlet.ServletConfig 读取配置文件

    out            javax.servlet.jsp.jspWriter 字符输出流

pageContext        javax.servlet.jsp.PageContext 域对象 作用范围当前页面

pageContext 只在当前页面使用,所以跨页面获取不到值,它可以操作其他三个域对象request session application。

    常用方法:
            setAttribute(String name,Object value)
            getAttribute(String name)
            removeAttribute(String name)
        操作其他域对象的方法 指定某一个要操作的域对象
            setAttribute(String name,Object value,int Scope)
            getAttribute(String name,int Scope)
            removeAttribute(String name,int Scope)
        Scope:可以实现pageContext域取操作其他指定的域对象
            PageContext.PAGE_SCOPE
            PageContext.REQUEST_SCOPE
            PageContext.SESSION_SCOPE
            PageContext.APPLICATION_SCOPE

            findAttribute(String name) 自动从pageContext request session application中依次查找 找到了 就结束

    web开发四大域对象
        PageContext --> 存放的数据在当前页面有效 开发中的用的很少
        ServletRequest --> 存放的数据在一次请求(转发)内有效 使用的频率较高
        HttpSession --> 存放的数据在一次会话中有效 使用的频率很高
        ServletContext --> 存放的数据在整个应用范围内有效 因为范围较大 所以用的也很少 主要用来存储全局配置信息

EL表达式:简化 jsp中java代码开发量,语法结构:${expression}。

主要作用:
        1.获取数据
            从各种类型的web 域中 检索java 对象 获取数据
            (javaBean的属性/list集合/map集合/数组)
            注意:需要保证,改数据必须是存储在四大域对象之中的
                1.1 点(.)与 [ ] 运算符
                    EL提供 . 和 [] 两种方法来取数据
                    ${pageScope.u}     原理 pageContext.findAttribute("u")    

                    ${u.username}    等同于 user.getUsername()

            匹配规则:
                    1.保持与get方法名 get三个字母 后面的内容大小写一致 然后首字母小写
                    2.当get方法三个字母后出现连续两个大写字母 那么EL表达式属性名必须一模一样

                1.2 变量
                    pageContext --> pageScope
                    request --> requestScope
                    session --> sessionScope
                    application --> applicationScope

    2.执行运算
            2.1 算数运算符 +-*/
            2.2 关系运算符
                eq 相等
                neq / ne 不相等
                gt 大于
                lt 小于
                gte / ge 大于等于
                lte / le 小于等于
            2.3 逻辑运算符
                && 或者 and
                || 或者 or
                ! 或者 not
            2.4 三元运算符
                表达式1?表达式2:表达式3
            2.5 特殊运算符
                empty 判断 null / 空字符串 /没有元素的集合
                返回值 是 true 或者 false

    3.获取web开发常用对象
            EL表达式语言中定义了11个隐式对象
            利用隐式对象 可以获取其他常用对象 并获取数据
            3.1)与范围有关的隐式对象 四个
                pageScope 当前页面范围
                requestScope 请求范围
                sessionScope 会话返回
                applicationScope 应用范围
            3.2)与输入有关的隐式对象 两个
                param 表示返回请求参数中的单个字符串
                paramValues 表示返回请求参数的一组值

                servlet中使用
                getParameter(String name)
                getParameterValues(String name)

                在EL表达式中 可以使用:
                ${param.name}
                ${paramValues.name}
            3.3)其他隐式对象 五个
                cookie        cookie对象的name值
                header        一个请求消息头信息
                headerValues    重名的请求消息头
                initParam    获取web.xml中的全局变量
                pageContext    获取当前页面的详细信息
      4.调用java方法
            EL表达式允许用户开发自定义EL函数
            可以在jsp页面中 通过EL表达式 调用java类的方法

JSTL标签:JSP标准标签库

    作用:使用JSTL标签 实现jsp页面中逻辑处理 如判断 循环等
    使用JSTL步骤:
        1.导入jar包
        2.在jsp页面中添加 taglib指令
            <%@ taglib uri="" prefix="" %>
        3.使用JSTL标签
    JSTL常用标签:
        1.表达式控制标签 set out remove catch
        2.流程控制标签 if choose when otherwise
        3.循环标签 forEach forTokens
        4.URL操作标签 import url redirect param

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值