Servlet--EL表达式

Servlet 的生命周期

  • 当 servlet 首次被访问时 ,调用构造方法,只调用一次(只有一个servlet对象被创建)
  • 紧接着调用初始化 init 方法,也是只调用一次
  • 根据请求方式,调用 service,或 doGet 或 doPost (请求几次,就会被调用几次)
  • 当应用程序停止前,调用 destroy 方法,只调用一次

这些方法都是由 tomcat 容器来调用, 这种方式称之为控制反转

Servlet 默认是在第一次访问时被加载,也可以配置服务器启动时被加载 loadOnStartup = 数字
数字代表优先级,数字小的表示优先级高

还可以设置初始化参数(了解)

Servlet 2.5 以前的版本

webapp/WEB-INF/web.xml (部署描述符)
在这里也可以配置servlet中的所有功能,例如:

<servlet>
    <!-- servlet 名字 -->
    <servlet-name>old</servlet-name>
    <!-- servlet 对应的 java 类-->
    <servlet-class>web.OldServlet</servlet-class>
    <!-- 初始化参数 -->
    <init-param>
        <param-name>name</param-name>
        <param-value>李四</param-value>
    </init-param>
    <!-- 让 servlet 在启动时加载,优先级是 3 -->
    <load-on-startup>3</load-on-startup>
</servlet>

<servlet-mapping>
    <!-- servlet 名字, 与上面对应 -->
    <servlet-name>old</servlet-name>
    <!-- servlet 访问路径 -->
    <url-pattern>/old</url-pattern>
</servlet-mapping>

jsp 中的 EL 表达式

expression language
主要作用是从作用域中取出变量并显示

request.setAttribute(“变量名”, 值);

页面上可以使用 ${ 变量名.属性 }

1. 做简单运算

<h3>算数运算 ${ 18 + 20 }</h3>
<h3>比较运算 ${ 18 > 20 }</h3>
<h3>逻辑运算 ${ 18 > 20 and 19 < 30 }</h3>
<h3>逻辑运算 ${ 18 > 20 or 19 < 30 }</h3>
<h3>逻辑运算 ${ not (18 > 20) }</h3>
<h3>三元运算 ${ (false)?"真":"假" }</h3>
<h3>空运算 ${ empty names}</h3>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/1/14
  Time: 15:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<c:forEach items="${names}" var="name" varStatus="s">
    <p>${name}${s.index}</p>
</c:forEach>
<ul>
    <c:forEach items="${names}" var="name">
        <li>${name}</li>
    </c:forEach>
</ul>
<table border="1" width="100%">
    <tr>
        <td>张三</td>
    </tr>
    <tr>
        <td>李四</td>
    </tr>
    <tr>
        <td>王五</td>
    </tr>
</table>
<c:if test="${empty names}">
    <table>
        <tr>
            <td>暂无数据</td>
        </tr>
    </table>
</c:if>
<c:if test="${not empty names}">
<table> border="1" width="100%">
    <c:forEach items="${names}" var="n">
    <tr>
        <td>${n}</td>
    </tr>
    </c:forEach>
    </c:if>
</table>
<ol>
<c:forEach items="${m}" var="e" >
    <li>${e.key} ------${e.value}</li>
</c:forEach>
</ol>
<c:forEach begin="0" end="9" var="i">
    ${i}
</c:forEach>
${uname}
${param.username}
${param["username"]}
<h3>${paramValues.hobby[0]} ${paramValues.hobby[1]}</h3>
<h3>算数运算 ${18+20}</h3>
<h3>比较运算 ${18>20}</h3>
<h3>逻辑运算 ${18>20 and 18>12}</h3>
<h3>逻辑运算 ${18>20 or 18>12}</h3>
<h3>比较运算 ${not(18>20)}</h3>
<h3>三元运算 ${(false)?"aaa":"ccc"}</h3>
<h3>空运算 ${empty names}</h3>
${names}
<h3>显示list的数据 ${names[1]} </h3>
<h3>显示list的数据 ${names.size()}  getSize()
${m}
    ${m.beijing}
    ${m.shanghai}
    ${m["beijing"]}
    ${m.get("beijing")}
</h3>
<h3>${m.key}---${m.value}</h3>

<h3>${stu.name}---${stu.age}</h3>
<h3>${stu.homeAddress.city}----${stu.homeAddress.street}</h3>
</body>
</html>

2. 用来显示作用域中的变量 (重点)

  • list 显示 可以用 [下标]
  • 要显示大小 list.size()
  • map 显示 可以用 ${map.key}
  • map 显示 可以用 ${map[“key”]}
  • map 显示 可以用 ${map.get(“key”)}
  • 建议map使用字符串作为key,如果非要用整数作为key,必须用 Long, 只能用[]语法取,不能用.语法
  • 显示java bean, 底层实际调用的是get方法,嵌套的对象可以多次调用.语法

3. 11 个隐式对象

  • param 代表是请求参数的map集合,用在一个参数有一个值的情况, key对应参数名,value对应参数值
  • paramValues 代表是请求参数的map集合,用在一个参数有多个值的情况, key对应参数名,value对应参数值的数组

4. 标准标签库

简称jstl

  1. 引入标签库 jar包
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
  1. 在页面上声明要使用的标签库
<%@ taglib prefix="标签前缀" uri="标签的唯一标识" %>

核心标签

  • forEach 进行遍历
<c:forEach items="要遍历的集合" var="临时变量名" begin="起始的下标" end="结束下标" varStatus="保存下标的对象">
</c:forEach>

其中 varStatus 中有两个属性 count(从1开始) , index(从0开始)

  • if 条件判断
<c:if test="条件">内容</c:if>
  • choose 条件判断
<c:choose>
    <c:when test="条件1">内容</c:when>
    <c:when test="条件2">内容</c:when>
    <c:when test="条件3">内容</c:when>
    <c:otherwise>内容</c:otherwise>
</c:choose>
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/1/14
  Time: 20:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    <c:choose>
        <c:when test="${salary < 2000}">低工资</c:when>
        <c:when test="${salary >=2000 and salary < 8000}">中等工资</c:when>
        <c:otherwise>高工资</c:otherwise>
    </c:choose>
    ${salary}
    <hr>
    <c:remove var="salary"/>
    ${salary}
    <!-- 把变量存入作用域, var=“变量名” value="变量值"-->
    <c:set var="name" value="张三" />
    ${name}
    <hr>
    ${text}
    <hr>
    <c:out value="${text}"/>
    <hr>
    ${number}
    <hr>
    ${date}
<hr>
<fmt:formatNumber value="${number}" pattern="¤##,###.##"/>
    <fmt:formatNumber value="${number}" pattern="00000.00000"/>
    <hr>
<fmt:formatDate value="${date}" pattern="yyyy年MM月dd日 HH:mm:ss"/>
</body>
</html>

综合例子

数据库表查询操作

存放java bean的包

  • ali - domain object(领域对象) 简称 DO
  • entity (实体)

存放 数据访问对象 的包
dao - data access object 对领域对象做增删改查操作的

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值