JSP

01. JSP的概念

  JSP: Java Server Page: java服务端页面;

    在这个页面中,既可以直接输出html代码,又可以定义java代码;

    >> 主要作用是:简化书写;

02. JSP原理

  JSP本质就是一个Servlet

  

 

 03. JSP的脚本: JSP定义Java代码的方式;

  1. <%  代码  %>: 定义的java代码,在service方法中;

  2. <%! 代码 %>: 定义的java代码,在jsp转换后的java类的成员位置;  

    (在servlet中,不般不建议定义变量去使用,所以这种方式一般用得少)

  3. <%= 代码 %>: 定义的java代码,会输出到页面上; 输出语句中可以定义什么,该脚本就可以定义什么;

  样例如下:

  

 

  JSP转化后的java代码如下:

  

 

   

 04. JSP的指令

  作用:用于配置 JSP页面,导入资源文件;

  格式: <%@ 指令名称  属性1=值1  属性2=值2 ...%>

      多个指令之间,使用空格分开;

  分类:

    a. page  : 配置JSP页面的;

      * contentType: 等同于  response.setContentType();

        > 设置响应体的MIME类型及字符集;

        > 设置当前JSP页面的编码(高级IDE下可生效,文本类编辑器需要手动调置 pageEncoding 属性)

      * import: 导包;

      * errorPage: 当前页面发生异常后,会自动跳转到指定的错误页面;

      * isErrorPage: 标识当前页面是否为异常页面;

        > true: 当前面面为错误页面,可以使用内置对象  exception;

        > false: 非错误页面,不能使用内置对象 exception;

    b. include: 页面包含的;一般用于包含一些公共的内容;

      <%@ include file="top.jsp" %>

    c. taglib : 导入资源

      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

      > prefix: 前缀,自定义的;

05. JSP注释

  a. html注释: 只能注释html代码片段;

    <!--  HTML内容  -->

  b. jsp注释: 推荐使用;  可以注释所有;

    <%-- 要注释的内容 --%>

 06. JSP的内置对象

  * 所谓的内置对应,就是可以直接使用的对象;

  

 

   >>  pageContext.getXXX  可以获取其它8个内置对象;

  * out: 字符输出流对象; 可以将数据输出到页面上;和 response.getWriter()类似;

    * out 与 response的区别

      

 

    * response.getWriter()输出的内容,总会在 out 输出的内容之前

      >> 原因:在 TomCat 服务器真正给客户端做出响应之前;

         会先找 response 缓冲区的数据输出,再找 out 缓冲区的内容输出

      >> 用法: 因为在转换jsp到java时,使用的都是 out 对象来输出,

          所以建议都使用 out 来输出内容,而 避免 response.getWriter 来影响展示顺序;  

 07. MVC开发模式

  a. M: Model; 模型; 通过 JavaBean 实现;

    >> 完成具体的业务操作;如查询数据库,封装对象;

  b. V: View; 视图; 通过JSP实现;

    >> 展示数据;

  c. C: Controller; 控制器;通过servlet 实现;

    >> 获取用户户输入;

    >> 调用模型;

    >> 将数据将给视图进行展示;

 

08. EL表达式

  a. 概念: Expression Language 表达式语言

  b. 作用:替换和简化jsp页面中java代码的编写;

  c. 语法:${ 表达式 }

  d. 注意:

    ** jsp默认支持EL表达式,如果要忽略EL表达式

      > 设置 jsp中 配置 page 指令    isELIgnored="true"

    ** 在EL表达式前使用转义字符 \;  如:   \${ 表达式 }   将原样输出;

  e. 运算

    ** 算术运算符:   +,-,*,/ (div),% (mod)

    ** 比较运算符:>,>=,<,<=,!=

    ** 逻辑运算符:&&(and), ||(or), !(not)

    ** 空运算符: empty

      > 用于判断字符串,集合,数组对象是否为Null ,或者不为Null时的长度是否为0

      > 使用方式:    ${ empty xxx }

  f. EL表达式的使用

    * El表达式只能从域对象中获取值;

    * 语法:$( 域名称.键名 )   从指定域中获取指定键的值

        > 域名称

          1. pageScope    --> pageContext

          2. requestScope   --> request 

          3. sessionScope     --> session

          4. applicationScope    --> application (servletContext)

        > 举例:   在request域中存储了 name=张三

           获取:  $(requestScope.name)

    * 语法:  $(键名):   

      依次查找:  pageScope > requestScope > sessionScope > applicationScope 中是否存在指定键名的内容,直到找到为止;

    * 取对象、List集合、Map集合中的值

      >  对象:  ${域名称.键名.属性名}  -->  本质上会去调用对象的 getter 方法;  

        (属性:去掉get后首字母转小写)

      > List集合: ${域名称.键名[索引]} 

      > Map集合:${域名称.键名.Key名称}    或者   $(域名称.键名["Key名称"])

  g. 隐式对象的使用

    ** 虚拟目录的动态配置:   ${pageContext.request.contextPath}

 

09. JSTL标签

  1. 概念:  JavaServer Pages Tag Library;  JSP标准标签库;

    由Apache组织提供的开源的免费的JSP标签;

  2. 作用: 用于简化和替换JSP页面上的java代码;

  3. 使用步骤

    a. 导入jstl相关jar包;                   jstl-1.2.jar

    b. 引入标签库:  taglig指令;        <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    c. 使用标签;        c:if   c:choose   c:foreach

    

 

 

 

 

  4. JSTL标签的使用

   a. if 标签: 相当于java上的 if 语句

    ** test 属性:是一个必须填的属性,接受boolean表达式;

      如果为true: 则显示if标签体中的内容;如果为false,则不显示标签体中的内容;

      一般情况下,test属性值会结合EL表达式一起使用;

    ** 注意:  c:if 标签没有else情况;想要else时,需要另外开启一个c:if 标签;

        

 

    b. choose 标签: 相当于java中的switch;

        

 

 

     c. foreach: 相当于 java代码中的 for 语句

      1. 完成重复的操作;  for (int i = 0; i < ; i++) {  }

        

 

      2. 遍历对象

        

    d. 综合示例

        

 10. 三层结构及对应框架

  

样例分析

 

posted @ 2022-04-04 10:43  耗喜天涯  阅读(127)  评论(0编辑  收藏  举报