JavaWeb03(域对象EL表达式JSTL标签)

目录

一.jsp内置对象之域对象

1.1 什么是jsp的内置对象?

JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。一共有9个:

分别为request、response、session、application、out、pageContext、config、page和exception。

1.2  什么是域对象?

可以用于存储数据的内置对象,它们作用范围不同.一共4个:

分别是 request、session、application、 pageContext。

1.3 域对象怎么存值和拿值?

域对象 .setAttribute(String key,object  value)

域对象  .getAttribute(String key)

1.4 域对象作业范围的区别?

1. pageContext:  可以存储数据,作用范围是当前页面有效 

2.request:  可以存储数据,作用范围是同一个请求,转发有效

3.session:  可以存储数据,作用范围是同一个会话有效,常用于保存用户登录信息

4.application:  可以存储数据,作用范围是同一个应用

1.5 常用内置对象与servlet的对应关系

/** * request              :HttpServletRequest  【req】 * response            :HttpServletResponse【resp】 * session                :HttpSession(通过req.getSession()) * out                    :PrintWriter(通过resp.getWriter()) * application         :ServletContext(this.getServletContext()) */

1.6 jsp标签中转发用法

 

二. EL表达式

2.1 什么是EL表达式?

EL即  Expression  Language(表达式语言)

2.2 为什么要用EL表达式?

1.为了替代jsp页面中复杂代码

2.EL表达式不会在页面显示null

2.3 EL的语法

${EL expression}

${obj.name}

【注意:${obj.name}实质是调用obj的getName()方法】

【注意:sname必须是stu实体类中的属性名!!!】

eg:${stu.sname}实质就是调用set.getsname()方法

eg:${aa}实质就是拿域对象中键为aa的值

例如:

//存值  键,值     pageContext.setAttribute("aa", "pageContext");//作用域仅限于当前jsp页面     request.setAttribute("bb", "request");//作用域仅限于当前请求  转发有效     session.setAttribute("cc", "session");//作用域仅限于当前会话 登录     application.setAttribute("dd", "application");//作用域在服务器内有效

二.EL表达式

EL表达式拿域对象的值

        1.${aa }
        2.${bb }
        3.${cc }
        4.${dd }

2.4 EL中的隐含对象(作用域)

pageScope,requestScope,sessionScope,appliccationScope 在键出现冲突(重复)的时候

例如:隐藏

二.EL表达式

EL表达式拿域对象的值

        1.${pageScope.aa }
          2.${requestScope.bb }
        3.${cc }
        4.${dd }
       

2.5 EL运算符

//算术  关系  逻辑运算符同java一致

eg:${2>1&&1!=2}

//empty / not empty运算符  判断是否为空  /  不为空

eg:${empty goods }

三.JSTL

3.1 什么是JSTL

JSTL(JavaServerPages  Standard  Tag  Library)JSP标准标签库  惯性c标签

3.2 为什么要用JSTL

使用了EL表达式可以简化JSP页面代码,但是如果需要进行逻辑判断,循环遍历怎么办?

用JSTL

3.3 JSTL核心标签库组成

 3.4 使用步骤

1.将两个JSTL的jar包放到webContent--->WEB--->INF---->lib下

2.在所需的JSP页面添加taglib指令

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

3.5 语法

3.5.1  通用标签:set  remove  out 

set标签用于给变量设置值和作用范围:

out标签在页面上显示信息或变量值:

remove标签用于删除作用域内的变量:

3.5.2  条件标签:if

                                       

例如:

    我是休息休息         

 

3.5.3 迭代标签:forEach  forTokens

    

        end="结束"  step="增量">                循环体代码  

                ${i } 

         商品名称: ${g.gname }         商品价格: ${g.ginfo }        

四.运用

index.jsp页面

GoodsSerlvet.java


一.jsp内置对象之域对象


1.1 什么是jsp的内置对象?

JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。一共有9个:

分别为requestresponsesessionapplicationoutpageContextconfig、pageexception

1.2  什么是域对象?

可以用于存储数据的内置对象,它们作用范围不同.一共4个:

分别是 requestsessionapplicationpageContext

1.3 域对象怎么存值和拿值?

域对象 .setAttribute(String key,object  value)

域对象  .getAttribute(String key)

1.4 域对象作业范围的区别?

1. pageContext:  可以存储数据,作用范围是当前页面有效 

2.request:  可以存储数据,作用范围是同一个请求,转发有效

3.session:  可以存储数据,作用范围是同一个会话有效,常用于保存用户登录信息

4.application:  可以存储数据,作用范围是同一个应用

1.5 常用内置对象与servlet的对应关系

/**
 * request              :HttpServletRequest  【req】
 * response            :HttpServletResponse【resp】
 * session                :HttpSession(通过req.getSession())
 * out                    :PrintWriter(通过resp.getWriter())
 * application         :ServletContext(this.getServletContext())
 */

1.6 jsp标签中转发用法

<jsp:forward page="goods.do"></jsp:forward

二. EL表达式


2.1 什么是EL表达式?

EL即  Expression  Language(表达式语言)

2.2 为什么要用EL表达式?

1.为了替代jsp页面中复杂代码

2.EL表达式不会在页面显示null

2.3 EL的语法

${EL expression}

${obj.name}

【注意:${obj.name}实质是调用objgetName()方法】

【注意:sname必须是stu实体类中的属性名!!!】

eg:${stu.sname}实质就是调用set.getsname()方法

eg:${aa}实质就是拿域对象中键为aa的值

例如:

//存值  键,值
     pageContext.setAttribute("aa", "pageContext");//作用域仅限于当前jsp页面
     request.setAttribute("bb", "request");//作用域仅限于当前请求  转发有效
     session.setAttribute("cc", "session");//作用域仅限于当前会话 登录
     application.setAttribute("dd", "application");//作用域在服务器内有效

<h2>二.EL表达式</h2>
<h3>EL表达式拿域对象的值</h3>
        1.${aa }<br>
        2.${bb }<br>
        3.${cc }<br>
        4.${dd }<br>

2.4 EL中的隐含对象(作用域)

pageScoperequestScope,sessionScope,appliccationScope 在键出现冲突(重复)的时候

例如:隐藏

<h2>二.EL表达式</h2>
<h3>EL表达式拿域对象的值</h3>
        1.${pageScope.aa }<br>  
        2.${requestScope.bb }<br>
        3.${cc }<br>
        4.${dd }<br>       

2.5 EL运算符

//算术  关系  逻辑运算符同java一致

eg:${2>1&&1!=2}

//empty / not empty运算符  判断是否为空  /  不为空

eg:${empty goods }

三.JSTL


3.1 什么是JSTL

JSTLJavaServerPages  Standard  Tag  LibraryJSP标准标签库  惯性c标签

3.2 为什么要用JSTL

使用了EL表达式可以简化JSP页面代码,但是如果需要进行逻辑判断,循环遍历怎么办?

用JSTL

3.3 JSTL核心标签库组成

 3.4 使用步骤

1.将两个JSTLjar包放到webContent--->WEB--->INF---->lib

2.在所需的JSP页面添加taglib指令

<!-- 引入jstl的核心标签库  -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

3.5 语法

3.5.1  通用标签:set  remove  out 

set标签用于给变量设置值和作用范围:<c:set var="变量名" value="值"  scope="作用域"></c:set>

out标签在页面上显示信息或变量值:<c:out value=""></c:out>

remove标签用于删除作用域内的变量:<c:remove var="变量"  scope="作用"/>

3.5.2  条件标签:if

<c:if test="条件">
                                       
</c:if>

例如:

<c:if test="${2>1 }"><!-- 条件成立-->
    我是休息休息         <!--才会出现 -->

 </c:if>

3.5.3 迭代标签:forEach  forTokens

  <!--1.forEach用于循环遍历-->
  <c:forEach items="要遍历的集合对象"  var="变量"  varStatus="状态"

        end="结束"  step="增量">
                循环体代码
  </c:forEach>

  <!--2.forTokens用于分割-->
  <c:forTokens items="要分割的内容" delims="用什么分割"  var="变量">
            ${i }
 </c:forTokens>

<!--常用代码-->

<c:forEach items="${myls }"  var="g">
         商品名称: ${g.gname }
         商品价格: ${g.ginfo }
</c:forEach>
        

四.运用

 

index.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!--引入JSTE标签库-->
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
   <!-- 支持手机端 -->
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <!-- 引入CSS -->
    <link rel="stylesheet" href="CSS/bootstrap.css" />
</head>
<body >
	<h2 class="text-center">主界面</h2>
	<div  class="container">
	<table class="table table-hover">
  <thead>
    <tr class="text-center">
      <th scope="col">商品编号</th>
      <th scope="col">商品名称</th>
      <th scope="col">商品价格</th>
      <th scope="col">商品简介</th>
    </tr>
  </thead>
  <tbody  class="text-center">
  
  <c:if test="${empty ls }">
  		<jsp:forward page="goods.do"></jsp:forward>
  </c:if>
  
  <c:forEach items="${ls }"  var="g">
  <tr>
      <th scope="row">${g.gid }</th>
      <td>${g.gname }</td>
      <td>&yen;${g.gprice }</td>
      <td>${g.ginfo }</td>
   </tr>
  </c:forEach>
    
    
    
  </tbody>
</table>
	</div>
	
	
	
	<!-- 引入jQuery的类库 -->
    <!-- 再引入Bootstrap的类库 -->
    <script src="js/jquery-3.6.4.js"></script>
    <script src="js/bootstrap.js"></script>
</body>
</html>

GoodsSerlvet.java

package com.zking.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zking.dao.GoodsDao;
import com.zking.entity.Goods;

@WebServlet("/goods.do")
public class GoodsServlet extends HttpServlet{
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//加载数据
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html; charset=UTF-8\"");
		//调用dao方法
		GoodsDao gd = new GoodsDao();
		//调用查询全部
		List<Goods> ls = gd.getAll();
		//存req中
		req.setAttribute("ls", ls);
		//仅转发有效  去zjm.jsp展示数据
		req.getRequestDispatcher("zjm.jsp").forward(req, resp);
	}
	}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/14694.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【音视频第16天】详解STUN协议

一个webRTC传输协议搞得自己云里雾里的。现在主动攻克一下。先看看STUN协议。好&#xff0c;我们开始吧 目录 1.讲讲什么是NAT&#xff1f;2.NAT有啥问题&#xff1f;3.四种NAT类型4.STUN Server5.TURN ServerSTUN和TURN的实现&#xff1a;什么是STUN&#xff1f;为什么需要ST…

js特殊对象 - RegExp对象(正则表达式)

1、概述 正则表达式用于定义一些字符串的规则&#xff0c;计算机可以根据正则表达式&#xff0c;来检查一个字符串是否符合规则&#xff0c;获取将字符串中符合规则的内容提取出来。 使用typeof检查正则对象&#xff0c;会返回object。 2、创建正则对象 2.1、使用对象创建 语法…

小程序开发费用估算:如何控制项目成本?

在当今数字化的时代&#xff0c;小程序已经成为了很多企业和个人开展业务的重要手段。小程序的开发需要耗费时间和资源&#xff0c;因此在项目初期&#xff0c;了解预计的开发费用是非常重要的。本文将详细介绍如何估算小程序开发费用以及如何控制项目成本。 小程序开发费用 …

用好Python自然语言工具包-- 实例“基于本地知识库的自动问答”

首先鸣谢thomas-yanxin 本问中示例来自他在GitHub上的开源项目“基于本地知识库的自动问答”&#xff0c;链接如下&#xff1a; thomas-yanxin/LangChain-ChatGLM-Webui: 基于LangChain和ChatGLM-6B的针对本地知识库的自动问答 (github.com) 目录 1. 基础知识&#xff1a; …

第四章——数学知识2

欧拉函数 欧拉函数表示的是1-n中与n互质数的个数。 如1-6中&#xff1a;1&#xff0c;5都和6互质&#xff0c;因此互质数为2 欧拉函数分解质因数后表示为&#xff1a; 互质数个数可表示为 int main() {int n;cin >> n;while(n--){int a;cin >> a;//分解质因数int r…

Spring Bean的作用域及生命周期

目录 前言&#xff1a; Bean的作用域&#xff08;Scope&#xff09; 单例模式 原型模式&#xff08;多例作用域&#xff09; 请求作用域&#xff08;request&#xff09; 会话作用域 全局作用域 网络长连接 Spring执行流程 Bean的生命周期 测试 小结&#xff1a; 前…

面试redis之两大金刚,你懂吗

前言 Redis持久化&#xff0c;一个老掉牙的问题&#xff0c;但是面试官就是喜欢问。这也是我们学Redis必会的一个知识点。Redis作为内存数据库&#xff0c;它工作时&#xff0c;数据都保存在内存里&#xff0c;这也是它为什么很快的一个原因。但存到内存里肯定是有丢数据的风险…

易基因:ChIP-seq等揭示热休克转录因子A1b调控植物高温胁迫响应的分子机制|应激反应

在拟南芥中&#xff0c;热休克转录因子A1b&#xff08;HEAT SHOCK TRANSCRIPTION FACTORA1b&#xff0c;HSFA1b&#xff09;通过影响种子产量来调控对环境胁迫的抗性。HSFA1b是生殖适应性的决定性因素&#xff0c;这种调控机制怎么形成的呢&#xff1f; 2018年&#xff0c;英国…

【微电网_储能】基于启发式状态机策略和线性程序策略优化方法的微电网中的储能研究【给定系统约束和定价的情况下】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

前端项目代码规范

一、变量与函数的命名&#xff08;变量名和函数名是最好的注释&#xff09; 通常情况下函数小陀峰、类名大陀峰、变量短横线/小陀峰、const全大写单词要表达出正确的语义&#xff0c;如&#xff1a;array类型或其它集合类型用英语复数格式、其它类型不要用复数格式区分函数为功…

【服务器】Linux搭建我的世界服务器 + 公网远程联机教程

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言 1. 安装JAVA 2. MCSManager安装 3.局域网访问MCSM 4.创建我的世界服务器 5.局域网联机测试 6.安装cpolar内网穿透 7. 配置公网访问地址 8.远程联机测试 9. 配置固定…

C++ 线程

linux使用线程 在linux使用线程可能出现&#xff0c;在编译时不会报错&#xff0c;但执行出错的问题。 undefined reference to pthread_create这是由于ubuntu平台下调用pthread_create()函数&#xff0c;pthread 库不是 Linux 系统默认的库&#xff0c;连接时需要使用静态库 …

MII、 RMII、 GMII、 RGMII 接口介绍

1、RGMII 接口概要 以太网的通信离不开物理层 PHY 芯片的支持&#xff0c;以太网 MAC 和 PHY 之间有一个接口&#xff0c;常用的接口有MII、 RMII、 GMII、 RGMII 等。 MII&#xff08;Medium Independent Interface&#xff0c; 媒体独立接口&#xff09;&#xff1a; MII 支持…

RabbitMQ之介绍以及安装

1.1 MQ的相关概念 1.1.1 什么是MQ ​ MQ&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO先入先出&#xff0c;只不过队列中存放的内容是message而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中&#xff0c;MQ…

移远通信笔试题

限时60分钟 1.下列关于栈叙述正确的是 A A) 栈顶元素最先能被删除 B&#xff09;栈顶元素最后才能被删除 C&#xff09;栈底元素永远不能被删除 D&#xff09;以上三种都不对 在栈中&#xff0c;最后被压入的元素总是在栈顶上方&#xff0c;而栈顶元素总是最先被弹出的元…

理解龙格库塔法基本C程序

先学习龙格-库塔法&#xff1b; 龙格-库塔&#xff0c;Runge-Kutta&#xff0c;该方法用于数值求解微分方程&#xff1b; 其中包括著名的欧拉法&#xff1b; 经典四阶法 该方法主要是在已知方程导数和初值信息&#xff0c;利用计算机仿真时应用&#xff0c;省去求解微分方…

人工智能之配置环境教程一:安装VsCode和Anaconda

人工智能之配置环境教程一&#xff1a;安装VsCode和Anaconda 作者介绍一&#xff0e; 安装VScode编辑器二. 安装Anaconda 作者介绍 孟莉苹&#xff0c;女&#xff0c;西安工程大学电子信息学院&#xff0c;2021级硕士研究生&#xff0c;张宏伟人工智能课题组。 研究方向&#…

shell脚本----条件判断语句

文章目录 一、条件测试1.1 文件测试和整数测试文件测试整数值比较 1.2字符串测试和逻辑测试字符串测试&#xff1a;逻辑测试 二、if语句三、case语句 一、条件测试 1.1 文件测试和整数测试 文件测试 test命令 测试表达是是否成立&#xff0c;若成立则返回0&#xff0c;否则返…

元宇宙的应用领域

应用领域一&#xff1a;游戏 1.游戏是最先成长起来的元宇宙场景。虚拟社交身份、开放性、经济系统、沉浸感、世界可持续性是元宇宙游戏需关注的五大特征。 2.元宇宙游戏依然是游戏&#xff0c;现阶段参与元宇宙游戏的主要是游戏爱好者。新的概念依旧需要好的游戏产品支撑。团…

malloc的一些知识

这是一个叫malloc的家伙&#xff0c;一直勤勤恳恳帮你为所欲为的玩转系统内存。可是长路漫漫&#xff0c;唯malloc作伴&#xff0c;我却不懂它。走近malloc&#xff0c;多了解一下总没错。 可能对我们来讲&#xff0c;malloc就是void* malloc (size_t len)&#xff0c;调用就是…