JSP,EL和JSTL学习

JSP

  1. 指令

    • 作用:用于配置JSP页面,导入资源文件
    • 格式:
      <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>
      例:在这里插入图片描述
      • 分类:
      1. page : 配置JSP页面的
        • contentType:等同于response.setContentType()
          1. 设置响应体的mime类型以及字符集
          2. 设置当前jsp页面的编码(只能是高级的IDE才能自动设置,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
        • import:导包,写java代码,比如List 则需要导包。
        • errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
          测试:
          JSP,EL和JSTL学习_第1张图片
          3/0是报错的,当发生报错的时候,可以访问500.jsp页面。
        • isErrorPage:标识当前是否是错误页面。
          • true:是,可以使用内置对象exception
          • false:否。默认值。不可以使用内置对象exception
            在500.jsp页面上,可以导入isErrorPage;当发生错误的时候,可以将错误信息输出页面或者输出到日志中;
            JSP,EL和JSTL学习_第2张图片
            结果如下:
            JSP,EL和JSTL学习_第3张图片
            指令2.include : 页面包含的。导入页面的资源文件(我们编写了很多页面,其中有好多页面头信息是一样的。这时候,我们就不要重复编写了,只要让其中的页面进行包含即可)
        • <%@include file=“top.jsp”%>
          例:先写一个top.jsp文件
          JSP,EL和JSTL学习_第4张图片
          然后,再写一个home.jsp文件,并且对top.jsp进行导入:
          JSP,EL和JSTL学习_第5张图片
          访问home.jsp结果如下所示:
          JSP,EL和JSTL学习_第6张图片
          指令3: taglib : 导入资源(比如导入jstl标签库)
          在没有导入标签库的时候,只能是使用html的标签,导入之后使用的更加多了
          • <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
          • prefix:前缀,自定义的
            例:在web下面创建WEB-INF,在WEB-INF下面创建lib将所需要的jar进行复制进去。
            JSP,EL和JSTL学习_第7张图片
            结果如下:
            JSP,EL和JSTL学习_第8张图片
            此时进行添加一个Library
            JSP,EL和JSTL学习_第9张图片
            JSP,EL和JSTL学习_第10张图片
            点击确定;结果如下所示:
            JSP,EL和JSTL学习_第11张图片
            下面在jsp中进行导入:
            在这里插入图片描述
            取名前缀为c,此时就可以使用c标签了;JSP,EL和JSTL学习_第12张图片
            c下面的标签都可以使用了。
            2.注释:
    1. html注释:(会发送到浏览器) :只能注释html代码片段
    2. jsp注释:推荐使用(不会发送)
      <%-- --%>:可以注释所有
  2. 内置对象

    • 在jsp页面中不需要创建,直接使用的对象
    • 一共有9个:
      变量名 真实类型 作用
      • pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
      • request HttpServletRequest 一次请求访问的多个资源(转发)
      • session HttpSession 一次会话的多个请求间
      • application ServletContext 所有用户间共享数据
      • response HttpServletResponse 响应对象
      • page Object 当前页面(Servlet)的对象 this
      • out JspWriter 输出对象,数据输出到页面上
      • config ServletConfig Servlet的配置对象
      • exception Throwable 异常对象

MVC:开发模式

  1. jsp演变历史
    1. 早期只有servlet,只能使用response输出标签数据,非常麻烦
    2. 后来有了jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护,难于分工协作
    3. 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性
  2. MVC:
    1. M:Model,模型。JavaBean
      • 完成具体的业务操作,如:查询数据库,封装对象
    2. V:View,视图。JSP
      • 展示数据
    3. C:Controller,控制器。Servlet
      • 获取用户的输入
      • 调用模型
      • 将数据交给视图进行展示
        图示:
        JSP,EL和JSTL学习_第13张图片
        优缺点:
      1. 优点:

        1. 耦合性低,方便维护,可以利于分工协作
        2. 重用性高
      2. 缺点:

        1. 使得项目架构变得复杂,对开发人员要求高。

EL表达式(帮助jsp来简化java代码)

1.概念:Expression Language 表达式语言
2. 作用:替换和简化jsp页面中java代码的编写
3. 语法:${表达式} 
例:${ 3 > 4}比如说对于这个表达式来说,它会判断为false;然后在页面上显示出来。
4. 注意:
 jsp默认支持el表达式的。如果要忽略el表达式
	1. 设置jsp中page指令中:isELIgnored="true" 忽略当前jsp页面中所有的el表达式(此时,这个el表达式会在页面上进行纯字符串展现,如在页面上显示${3 > 4})
	2. \${表达式} :忽略当前这个el表达式
5. 使用:
1. 运算:
	* 运算符:
		1. 算数运算符: + - * /(div) %(mod)
		2. 比较运算符: > < >= <= == !=
		3. 逻辑运算符: &&(and) ||(or) !(not)
		4. 空运算符: empty
			* 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
			* ${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
			* ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0

测试:JSP,EL和JSTL学习_第14张图片
结果如下:
JSP,EL和JSTL学习_第15张图片
2. 获取值
1. el表达式只能从域对象中获取值 jsp中有四个域对象,上文内置对象前四个
2. 语法:
1. $ {域名称.键名}:从指定域中获取指定键的值
* 域名称:
1. pageScope --> pageContext
2. requestScope --> request
3. sessionScope --> session
4. applicationScope --> application(ServletContext)
* 举例:在request域中存储了name=张三
* 获取:$ {requestScope.name}
* 如果没有获取到就会显示一个空字符串,不报错或者显示null
2. ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
例:
JSP,EL和JSTL学习_第16张图片
JSP,EL和JSTL学习_第17张图片
el:的作用是用来简化jsp中java代码的,因为jsp现在不和适合拿来写java代码。

  1. 获取对象、List集合、Map集合的值
    1.对象:
    1. $ {域名称.键名.属性名}
    本质上会去调用对象的getter方法
    例:JSP,EL和JSTL学习_第18张图片
    结果如下:
    JSP,EL和JSTL学习_第19张图片
    注意:如果写 u . b i r S t r 代 表 的 是 执 行 u 对 象 中 g e t B i r S t r ( ) 方 法 的 返 回 值 , 这 个 方 法 叫 做 逻 辑 视 图 2. L i s t 集 合 : {u.birStr}代表的是执行u对象中getBirStr()方法的返回值,这个方法叫做逻辑视图 2. List集合: u.birStrugetBirStr(),2.List{域名称.键名[索引]}
    例:JSP,EL和JSTL学习_第20张图片
    结果如下
    JSP,EL和JSTL学习_第21张图片
    注意:list中存的是对象也是一样的,可以结合对象中查询进行查找的。
    3. Map集合:
    ${域名称.键名.key名称}
    ${域名称.键名[“key名称”]}
    例:
    JSP,EL和JSTL学习_第22张图片
    JSP,EL和JSTL学习_第23张图片
    empty测试
    JSP,EL和JSTL学习_第24张图片
    JSP,EL和JSTL学习_第25张图片
    不仅可以判断是否为null,也可以判断是否为空,当把str置为空字符串时,它就会显示为true;取反为 ${not empty str}判断是否不为空,不为null;
  2. 隐式对象:(在el表达式中可以直接拿来使用)
    * el表达式中有11个隐式对象
    * pageContext:
    * 1.可以获取jsp其他八个内置对象
    * 例:${pageContext.request}
    *2. ${pageContext.request.contextPath}:在jsp中动态获取虚拟目录(到时候虚拟目录改了,也不用改路径了)

JSTL

1.概念:JavaServer Pages Tag Library JSP 标准标签库
		由Apache组织提供的开源的免费的jsp标签
2.作用:用于简化和替换jsp页面上的java代码
比如后端查出一个list集合,返回jsp 则需要他进行显示出来
3.使用步骤:
	1.导入jstl相关jar包
	2.引入标签库:taglib指令 : <%@ taglib%>
	3.使用标签
4.常用的JSTL标签
	1.if
	2.choose:相当于switch
	3.foreach:相当于for语句
5.测试
1.新建一个jstl文件夹,在文件夹里新建一个jstl1.jsp

在这里插入图片描述
2.将jar导入,并且加入到模块中,这个步骤之前已做
JSP,EL和JSTL学习_第26张图片
3.在jstl1.jsp中进行uri的引入,取名前缀为c
在这里插入图片描述
4.在jstl1.jsp中写如下代码:进行if语句的使用:
JSP,EL和JSTL学习_第27张图片
结果如下:
JSP,EL和JSTL学习_第28张图片
if常用的用法:
JSP,EL和JSTL学习_第29张图片
结果如下:
JSP,EL和JSTL学习_第30张图片
注意:jsp中if没有else如果需要写else则需要再写一份if即可;代码如下:
JSP,EL和JSTL学习_第31张图片
输出为3为奇数
2.choose学习,代码如下:
JSP,EL和JSTL学习_第32张图片
输出如下:
JSP,EL和JSTL学习_第33张图片
foreach:相当于for 作用是:1.完成重复的操作 2.遍历容器
1.完成重复操作时:有属性如下:1.begin:开始值2.end结束值3.var:临时变量
4.step:步长
5.varStatus:循环状态对象 他有两个属性 一个是index 代表容器中元素的索引,从0开始; 另一个是count代表的是当前循环是第几次循环,从1开始。
代码如下:
在这里插入图片描述
结果如下:
JSP,EL和JSTL学习_第34张图片

小案例jstl练习

有一个list集合,上面有一些user对象,目标是将list对象给显示出来
代码如下:
JSP,EL和JSTL学习_第35张图片
html显示如下:
JSP,EL和JSTL学习_第36张图片

你可能感兴趣的:(web开发,java)