前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第48次文章:EL&JSTL

第48次文章:EL&JSTL

作者头像
鹏-程-万-里
发布2019-12-12 17:39:50
5160
发布2019-12-12 17:39:50
举报

JSP:

一、指令
1、作用

用于配置JSP页面,导入资源文件。

2、格式

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

3、分类

(1)page

用于配置JSP页面,主要有以下几个参数

  • contentType:等同于response.setContentType()
    • 设置响应体的mime类型以及字符集
    • 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEcoding属性来设置当前页面的字符集)
  • import:导包
  • errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
  • isErrorpage:当前页面发生异常后,会自动跳转到指定的错误页面
    • true:是,可以使用内置对象exception
    • false:否,默认值。不可以使用内置对象exception

(2)include

主要用于页面包含,导入页面的资源文件,格式为:<%@ include file="top.jsp" %>

(3)taglib

用于导入资源,格式为:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 其中“prefix”属性代表前缀,属于自定义的。

二、注释
  • HTML注释:,只能注释HTML代码片段
  • jsp注释:<%-- --%>,可以注释所有代码,推荐使用。
三、内置对象

在jsp页面中不需要创建,直接使用的对象。一共有9个这样的对象,分类如下所示:

代码语言:javascript
复制
    变量名             真实类型                        作用
* pageContext       PageContext                 当前页面共享数据,还可以获取其他八个内置对象
* request           HttpServletRequest          一次请求访问的多个资源(转发)
* session           HttpSession                 一次会话的多个请求间
* application       ServletContext              所有用户间共享数据
* response          HttpServletResponse         响应对象
* page              Object                      当前页面(Servlet)的对象 this
* out               JspWriter                   输出对象,数据输出到页面上
* config            ServletConfig               Servlet的配置对象
* exception         Throwable                   异常对象

MVC:开发模式

一、jsp演变历史
  1. 早期只有servlet,只能使用response输出标签数据,非常麻烦
  2. 后来有了jsp,简化了servlet的开发。但是过度使用jsp,在jsp中即写大量的java代码,又写HTML语法,使得代码难于维护,难于分工协作
  3. 再后来,java的web开发,借鉴了MVC开发模式,使得程序的实际更加合理。
二、MVC
1、M(model,模型)

使用Javabean来完成具体的业务操作,如:查询数据库,封装对象

2、V(View,视图)

主要使用JSP来展示数据

3、C(Controller,控制器)

主要是Servlet,功能如下

  • 获取用户的输入
  • 调用模型
  • 将数据交给视图进行展示
4、优缺点

(1)优点

  • 耦合性低,方便维护,可以利于分工协作
  • 重用性高

(2)缺点

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

EL表达式

一、概念

Expression Language 表达式语言

二、作用

替换和简化jsp页面中java代码的书写,格式:${表达式}

三、注意

jsp默认支持el表达式。如果要忽略el表达式,有两种方案:

  • 全局忽略:设置jsp中page指令中:isELIgnored="true",忽略当前jsp页面中所有的el表达式。
  • 部分忽略:在EL表达式前面增加一个斜杠:\${表达式},此时仅仅忽略当前这个el表达式
四、使用
1、运算

主要有以下几种运算符

(1)算数运算符

+ - * /(div) %(mod)

(2)比较运算符

(3)逻辑运算符

(4)空运算符:empty

  • ${empty list}:用于判断字符串、集合、数组对象是否为null 或者 长度是否为0
  • ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度 > 0
2、获取值

el表达式只能从域对象中获取值,主要的语法如下所示:

(1) ${域名称.键名}

从指定域中获取指定键的值,主要有以下几个域名称:

  • pageScope ----> pageContext
  • requestScope ----> request
  • sessionScope ----> session
  • applicationScope ----> application(ServletContext)

例如,在request域中存储了 name---张三,获取name的值的时候,语法为:${requestScope.name}

(2)${键名}

表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

(3)获取对象、List集合、Map集合的值

  • 对象:${域名称.键名.属性名},本质是调用对象的getter方法
  • List集合:${域名称.键名[索引]}
  • Map集合:有两种方法
    • ${域名称.键名.key名称}
    • ${域名称.键名["key名称"]}
3、隐式对象

el表达式中有11个隐式对象,类似于jsp中的内置对象,我们主要学习其中一个隐式对象pageContext。

我们可以使用pageContext对象来获取jsp其他八个内置对象,例如${pageContext.request},具体使用场景,例如:${pageContext.request.contextPath},动态获取虚拟目录

JSTL

一、概念

JavaServer Page Tag Library JSP标准标签库。是由Apache组织提供的开源的免费的jsp标签。

二、作用

用于简化和替换jsp页面上的java代码

三、使用步骤
  1. 导入jstl相关jar包
  2. 引入标签库:taglib指令:<%@ taglib %>
  3. 使用标签
四、常用的JSTL标签
1、if

(1)属性

test:必须属性,接受Boolean表达式

  • 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
  • 一般情况下,test属性值会结合el表达式一起使用

(2)注意

c:if 标签没有else情况,想要else情况的话,需要再定义一个c:if标签

2、choose
  • 使用choose标签取出数字 相当于switch声明
  • 使用when标签做数字判断 相当于case
  • otherwise标签做其他情况的声明 相当于default
3、foreach

(1)完成重复的操作

有如下几种属性

代码语言:javascript
复制
begin:开始值
end:结束值
step:步长
var:临时变量
varStatus:循环状态对象
    index:容器中元素的索引,从0开始
    count:循环次数,从1开始

(2)遍历容器

有如下几种属性

代码语言:javascript
复制
items:容器对象
var:容器中元素的临时变量
varStruts:循环状态对象
    index:容器中元素的索引,从0开始
    count:循环次数,从1开始
五、练习
1、需求

在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中,并且隔行显示不同的背景色

2、代码实现
代码语言:javascript
复制
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="cn.itcast.domain.User" %>
<%@ page import="java.util.Date" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>test</title>
</head>
<body>

<%
    List list = new ArrayList();
    list.add(new User("张三",23,new Date()));
    list.add(new User("李四",24,new Date()));
    list.add(new User("王五",25,new Date()));
    request.setAttribute("list",list);
%>
<table border="1" width="500" align="center">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>出生日期</th>
    </tr>
    <%--数据行--%>
    <c:forEach items="${list}" var="user" varStatus="s">
        <c:if test="${s.count % 2 ==0}">
            <tr bgcolor="#ffc0cb">
                <td>${s.count}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>${user.birStr}</td>
            </tr>
        </c:if>
        <c:if test="${s.count % 2 !=0}">
            <tr bgcolor="#7fffd4">
                <td>${s.count}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>${user.birStr}</td>
            </tr>
        </c:if>
    </c:forEach>
</table>
</body>
</html>
3、最后的效果如下

三层架构:软件 设计架构

  1. 界面层(表示层):用户看的界面。用户可以通过界面上的组件和服务器进行交互
  2. 业务逻辑层:处理业务逻辑的
  3. 数据访问层:操作数据存储文件

案例:用户信息列表展示

一、需求

用户信息的增删改查操作。

二、设计
1、技术选型

Servlet+JSP+MySQL+JDBCTemplate+Durid+BeanUtils+tomcat

2、数据库设计
代码语言:javascript
复制
create database day17;  ---创建数据库
use day17;              ---使用数据库
create table user(      ---创建表
    id int primary key auto_increment,
    name varchar(20) not null,
    gender varchar(5),
    age int,
    address varchar(50),
    qq varchar(20),
    e-mail varchar(20)
);
三、开发
1、环境搭建

(1)创建数据库环境

(2)创建项目,导入需要的jar包

2、编码

逻辑分析

代码有点长,就不放进来了,需要的小伙伴可以私信,发给你哟!

四、测试
五、部署运维

以上就是本周的内容啦,最后一个案例,我们按照公司中正常的开发逻辑,整体进行规划,此时才发现,自己在一个产品的开发中,原来是如此的微不足道!哈哈!不过也要做好每一个螺丝钉呀!加油!欢迎关注下面的公众号呀!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java小白成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JSP:
    • 一、指令
      • 二、注释
        • 三、内置对象
        • MVC:开发模式
          • 二、MVC
          • EL表达式
            • 一、概念
              • 二、作用
                • 三、注意
                  • 四、使用
                  • JSTL
                    • 一、概念
                      • 二、作用
                        • 三、使用步骤
                          • 四、常用的JSTL标签
                            • 五、练习
                            • 三层架构:软件 设计架构
                            • 案例:用户信息列表展示
                              • 一、需求
                                • 二、设计
                                  • 三、开发
                                    • 四、测试
                                      • 五、部署运维
                                      相关产品与服务
                                      容器服务
                                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档