目录
一.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);
}
}