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

简介: JavaWeb03(域对象&EL表达式&JSTL标签)

一.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>

<h4>EL表达式拿域对象的值</h4>

       1.${aa }<br>

       2.${bb }<br>

       3.${cc }<br>

       4.${dd }<br>

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

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

例如:隐藏

<h2>二.EL表达式</h2>

<h4>EL表达式拿域对象的值</h4>

       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);
  }
  }


相关文章
|
存储 前端开发 Java
JSP 域对象详细讲解
JSP 域对象详细讲解
95 0
|
Java 数据安全/隐私保护
EL表达式&JSTL标签库2
EL表达式&JSTL标签库2
55 0
|
JavaScript Java 应用服务中间件
EL表达式&JSTL标签库1
EL表达式&JSTL标签库1
49 0
jsp 九大内置对象和四大域对象
jsp 九大内置对象和四大域对象
jsp 九大内置对象和四大域对象
|
JavaScript Java
【JavaWeb】EL表达式
本期主要介绍EL表达式
129 0
【JavaWeb】EL表达式
|
存储 缓存 Java
【JavaWeb】JSP基本语法、指令、九大内置对象、四大作用域
本期主要介绍JSP基本语法、指令、九大内置对象、四大作用域
326 0
【JavaWeb】JSP基本语法、指令、九大内置对象、四大作用域
springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
101 0
|
存储 IDE Java
JAVAWeb| 详解JSP技术、指令、隐式对象、标签
JAVAWeb| 详解JSP技术、指令、隐式对象、标签
185 0
JAVAWeb| 详解JSP技术、指令、隐式对象、标签
|
Java
Servlet和JSP中的域对象
Servlet和JSP中的域对象
186 0
|
存储 Java 索引
javaweb之EL表达式
EL:Expression Language 表达式语言
333 0