目录
一.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个:
分别为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标签中转发用法
<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}实质是调用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");//作用域在服务器内有效<h2>二.EL表达式</h2>
<h3>EL表达式拿域对象的值</h3>
1.${aa }<br>
2.${bb }<br>
3.${cc }<br>
4.${dd }<br>
2.4 EL中的隐含对象(作用域)
pageScope,requestScope,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
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指令
<!-- 引入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>¥${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);
	}
	}


















