D29--JPS&EL&JSTL

本文详细介绍了JSP的基本语法、EL表达式的使用及JSTL标签库的应用,包括JSP的执行流程、EL表达式的格式与作用、JSTL的ForEeach和if标签的使用方法,以及MVC设计模式和三层架构的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 、JSP

1.1 jsp简介

1.1.1 jsp概念

  • jsp几点特征
  • 跨平台
  • 业务代码相分离
  • 组件重用
  • 预编译

1.2 jsp的执行流程

在这里插入图片描述

  • 总结:
  • jsp能够编写html代码,本质上是因为底层用的servlet直接输出
  • jsp之所以能够直接是用request对象,是因为编写的代码全部落入了service 内部,在service内部,已经声明了request,response,session,application等对象。

1.3 jsp的基本语法

1.3.1 jsp基本文件

在这里插入图片描述
jsp的注释不会显示在源码上,更加安全,所以在jsp页面中推荐使用jsp注释

1.3.2 jsp中书写java代码的三种方式

1.3.2.1 脚本片段

格式:<%java代码片段%>
作用: 在jsp翻译后的_JSPService方法中,潜入java代码
代码:

 <% for(int j = 0 ; j < 5 ;j++){%>
       Hello World!!!<br>
 <%}%>

效果:
在这里插入图片描述

1.3.2.2 脚本声明

格式: <%!脚本声明格式%>
作用: 在类的成员位置上声明方法和变量

1.3.2.3 脚本表达式

格式: <%=表达式%>
作用: 代替response向页面输出内容

二、 EL表达式

作用: 代替jsp中脚本表达式的功能,简化对java代码的操作。

2.1EL表达式的格式和作用

  1. 格式: ${ 表达式内容}
  2. 作用: 主要是从域对象中查找指定数据。
    代码1:
<h3>获取域中的简单数据</h3>
<%
    pageContext.setAttribute("pkey","pvalue");
    request.setAttribute("rkey","rvalue");
    session.setAttribute("skey","svalue");
    application.setAttribute("akey","avalue");
    request.setAttribute("aa.bb","bbcds");
%>

2.1.1 简单查找

以代码1为准备数据:

获取pageContext域中的数据: <br>
老方式: <%=pageContext.getAttribute("pkey")%> <br>
EL方式:${pageScope.pkey}

2.1.2 获取域中的复杂数据(复杂查找)

准备数据(代码2):

<%
    //向域中存放数组
    request.setAttribute("arr",new String[]{"杨玉环","貂蝉","王昭君","西施","吾王"});
    //向域中存放list
    ArrayList<String> list = new ArrayList();
    //添加数据
    list.add("栗山未来");
    list.add("时崎狂三");
    list.add("五河琴里");
    request.setAttribute("list",list);
    //向域中存放MAP
    HashMap<String, String> map = new HashMap<>();
    map.put("name","Saber");
    map.put("age","18000");
    request.setAttribute("map",map);
//向域中存放实体
    User user = new User("Archer", "男", 1500);
    request.setAttribute("user",user);
%>
2.1.2.1 方式1:获取数组,list集合中的元素

格式: ${属性名称[index]}

获取域中的数组: <br>
EL方式 : ${arr[4]}
2.1.2.2 方式2:获取map集合中的值

格式: ${属性名称.key}

获取域中的map: <br>
EL方式 :${map.name}--- ${map.age}
2.1.2.3 方式3:获取实体中的值

格式: ${属性名称.实体中的属性名}

获取域中的实体: <br>
老方式: 
<%=((User)request.getAttribute("user")).getName()%>
<%=((User)request.getAttribute("user")).getAge()%>
<%=((User)request.getAttribute("user")).getSex()%> <br>

EL方式: ${user.name}--${user.age}--${uer.sex}

2.2 EL执行运算

EL中的算数运算,逻辑运算与java中基本一致,下面仅说明两者不一致的地方。

2.2.1 算数运算符

准备数据:

request.setAttribute("a",3);
request.setAttribute("d","d");
    ```
**+(加号):**
```java
a+d=${a+d} <%--  + 只能数值相加,不能字符串拼接,否则会报错--%>

2.2.2 逻辑运算符

注意: 逻辑运算符中的异或“^”,EL不支持!

2.2.3 empty运算符

empty运算符是用来判断获取的数据是否为空,或者当前获取的集合,是否没有任何数据。为空,则返回true。

三 、 JSTL

3.1 ForEeach

格式:
<c:forEach items="${list}" var=“L”>
${L}
</c:forEach>
1. var:在不循环对象的时候,保存的是控制循环的变量;在循环对象的时候,保存的是被循环对象中的元素
2. items:指定要循环的对象
3. varStatus:保存了当前循环过程中的信息(循环的开始、结束、步长、次数等)
4. begin:设置循环的开始
5. end:设置循环的结束
6. step:设置步长——间隔几次循环,执行一次循环体中的内容

准备数据(代码3):

<%
    //向域中存放list
    ArrayList<String> list = new ArrayList();
    //添加数据
    list.add("栗山未来");
    list.add("时崎狂三");
    request.setAttribute("list",list);
    //向域中存放MAP
    HashMap<String, String> map = new HashMap<>();
    map.put("name","Saber");
    map.put("age","18000");
    request.setAttribute("map",map);
//向域中存放实体
    List<User> userList = new ArrayList<User>();
    userList.add(new User("大熊","女",39));
    request.setAttribute("userList",userList);
%>

代码查找:

  1. 查找list集合元素
<c:forEach items="${list}" var="L">
    ${L}
</c:forEach>

2.查找map集合元素

<c:forEach items="${map}" var="M">
    ${M.key}----${M.value}
</c:forEach>
  1. 查找userList数据
<c:forEach items="${userList}" var="user" >
    ${user.name}-${user.sex}-${user.age}
</c:forEach>

3.2 if标签

属性名是否支持EL属性类型属性描述
testtrueBoolean决定是否处理标签体中的内容条件表达式
varfalseString用于指定将test属性的执行结果保存到某个web域中的某个属性的名称
scopfalseString指定将test属性的执行结果保存到哪个web域中

test:判断是否执行标签体中的内容(true:执行)
var:用来保存testy属性的结果,并保存到指定容器中。
scope:指定保存数据的容器。

四、MVC和三层架构

4.1 MVC设计模式

M:model模型

  • 封装数据—JavaBean
  • 主要封装数据,业务处理
    V:view视图:
  • 页面展示—jsp
  • 作用:页面展示
    C:controller 控制器:
  • 控制执行流程 —servlet
  • 作用:与客户端交互
    注意: MVC不是java特有的,现在几乎所有的B/S结构的软件都采用了MVC设计模式。

4.1.2 JSP Model2

Model2使用到的技术有:Servlet、JSP、JavaBean。Model2 是MVC设计模式在Java语言的具体体现。

  • JSP: 视图层,用来与用户打交道。负责接收用来的数据,以及显示数据给用户;

  • ** Servlet:** 控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;

  • JavaBean: 模型层,完成具体的业务工作,例如:转账等。

4.2三层架构

  • 表示层: 也称web层,与浏览器进行数据交互的
  • 业务逻辑层: 也称service层,专门用于处理业务逻辑的
  • 数据访问层: 也称dao层,与数据库进行数据交换。将数据库的一条记录与JavaBean进行对应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值