Jsp基础语法
一、JSP概述
JavaServer Pages(JSP) 是一种技术,能够开发支持动态内容的网页,可以帮助开发人员在 HTML 页面中利用特殊的 JSP 标签插入 Java 代码,其中大部分标签是以 <%
开始,以 %>
结束的。
二、JSP体系结构
Web 服务器需要一个 JSP 引擎,即处理 JSP 页面的容器。JSP 容器负责为 JSP 页面拦截请求。本教程使用了 Apache,Apache 已经内置了 JSP 容器来支持 JSP 页面开发。
1. web 服务器如何使用 JSP 创建 web 页面?
-
作为正常的页面,你的浏览器发送一个 HTTP 请求到 web 服务器。
-
web 服务器承认一个 JSP 页面的 HTTP 请求,并将其转发给一个 JSP 引擎。这是通过使用 URL 或 JSP 页面实现的,该 JSP 页面是以.jsp结尾而不是以 .Html 结尾的。
-
JSP 引擎从磁盘加载 JSP 页面并将其转换为一个 servlet 的内容。这种转换是非常简单的,所有模板文本转换为 println()语句,所有 JSP 元素转换为 Java 代码实现页面的相应的动态行为。
-
JSP 引擎编译 servlet 到一个可执行的类中,并将原始请求转发给一个 servlet 引擎。
-
调用 servlet 引擎的 web 服务器的一部分加载 Servlet 类并执行它。执行期间,Servlet 产生一个 HTML 格式的输出,servlet 引擎将该输出传递到 HTTP 响应内的 web 服务器中。
-
web 服务器将 HTTP 响应以静态 HTML 内容的形式转发到你的浏览器中。
- 最后 web 浏览器处理 HTTP 响应中的动态生成的 HTML 页面,就好像它是一个静态页面。
三、JSP生命周期
JSP 生命周期可以被定义为从创建到销毁的整个过程,这类似于一个 servlet 的生命周期与一个额外的步骤,该步骤将一个 JSP 编译成 servlet。
-
编译
-
初始化
-
执行
- 清理
四、JSP声明
<%! int i = 0; %>
五、JSP表达式
<%= expression %>
六、JSP注释
<%-- This is JSP comment --%>
七、JSP三大指令
1. 页面指令page
页面指令用于为属于当前 JSP 页面的容器提供指示。你可以在 JSP 页面的任何地方编写页面指令代码。按照惯例,通常在 JSP 页面的顶部编写页面指令代码。
格式:<%@ page ... %>
1 <%@ page import="com.eagle.test.*" %>
2. 包含指令include
包含指令用于在转换阶段包含一个文件。这个指令告诉容器在转换阶段将其他外部文件的内容与当前 JSP 合并。你可以在你的 JSP 页面中的任何位置编写 include 指令。
格式:<%@ include file="relative url" >
3. taglib指令
JSP API 允许用户定义自定义的 JSP 标签,看起来像 HTML 或 XML 标签,且标签库是一组用户定义的标签,能够实现自定义的行为。
格式:<%@ taglib uri="uri" prefix="prefixOfTag" >
八、JSP十大操作
jsp:include | 当请求页面时,包含一个文件 |
jsp:useBean | 发现或实例化一个 JavaBean |
jsp:setProperty | JavaBean 的属性集 |
jsp:getProperty | 将 JavaBean 的属性嵌入到输出中 |
jsp:forward | 将请求转发给一个新页面 |
jsp:plugin | 生成浏览器-特定代码,为 Java 插件创建 OBJECT 或 EMBED 标签 |
jsp:element | 动态的定义 XML 元素 |
jsp:attribute | 定义了动态定义的 XML 元素的属性 |
jsp:body | 定义了动态定义 XML 元素的 body |
jsp:text | 用于在 JSP 页面和文档中编写模板 |
九、JSP九大隐式对象
request | 这是与请求关联的 HttpServletRequest 对象。 |
response | 这是与客户端响应关联的 HttpServletResponse 对象。 |
out | 这是用于向客户端发送输出的 PrintWriter 对象。 |
session | 这是与请求关联的 HttpSession 对象。 |
application | 这是与应用程序上下文关联的 ServletContext 对象。 |
config | 这是与页面关联的 servletConfig 对象。 |
pageContext | 这个封装特使用特定服务器的特性,如更高的性能 jspwriter。 |
page | 这是 this 的一个简单的同义词,是用来调用由转换的 servlet 类定义的方法。 |
Exception | Exception 对象允许指定的 JSP 访问异常数据。 |
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Jsp四大作用域之request</title> </head> <body> <% request.setAttribute("name", "ying"); request.setAttribute("age", 12); %> <%-- 服务器内部跳转 url不变,和客户端跳转(重定向)有区别 --%> <jsp:forward page="requestTarget.jsp"></jsp:forward> </body> </html> <%@page import="java.util.Enumeration"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>request接收页面</title> </head> <body> <% String name = (String)request.getAttribute("name"); int age = (Integer)request.getAttribute("age"); // 获取头部信息 Enumeration enu = request.getHeaderNames(); while(enu.hasMoreElements()){ String headerName = (String)enu.nextElement(); String headerVlaue = request.getHeader(headerName); %> <h4><%=headerName %> <%=headerVlaue %></h4> <% } %> <front>姓名:<%=name %></front> <front>年龄:<%=age %></front> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <!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>response自动刷新应用</title> </head> <body> <% response.setHeader("refresh", "1"); Date myDate = new Date(); %> 当前时间:<%=myDate.toLocaleString() %> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <!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>response重定向,客户端跳转</title> </head> <body> <% response.sendRedirect("index.html"); %> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>操作Cookie</title> <script type="text/javascript"> function resetValue(){ document.getElementById("userName").value = ""; document.getElementById("pwd").value = ""; } </script> <% String userName = null; String pwd = null; // 获取cookie Cookie[] cookies = request.getCookies(); for(int i=0;cookies!=null && i<cookies.length;i++){ if(cookies[i].getName().equals("userNameAndPwd")){ // 截取字符串 userName = cookies[i].getValue().split("-")[0]; pwd = cookies[i].getValue().split("-")[1]; } } if(userName==null){ userName=""; } if(pwd==null){ pwd=""; } %> </head> <body> <form action="userLogin.jsp" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" id="userName" name="userName" value="<%=userName%>"/></td> </tr> <tr> <td>密码:</td> <td><input type="password" id="pwd" name="pwd" value="<%=pwd %>" /></td> </tr> <tr> <td>记住密码:</td> <td><input type="checkbox" id="remember" name="remember" value="remember-me"/></td> </tr> <tr> <td><input type="submit" value="登录"/></td> <td><input type="button" value="重置" onclick="resetValue()"/></td> </tr> </table> </form> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>登录提交处理</title> </head> <body> <% String userName=request.getParameter("userName"); // 获取用户名 String pwd=request.getParameter("pwd"); // 获取密码 String remember=request.getParameter("remember"); // 获取记住密码 if("remember-me".equals(remember)){ // 设置Cookie start Cookie userNameAndPwd = new Cookie("userNameAndPwd",userName+"-"+pwd); userNameAndPwd.setMaxAge(1*60*60*24*7); // cookie记录一个星期 response.addCookie(userNameAndPwd); // 设置Cookie end System.out.println("Cookie设置成功"); } response.sendRedirect("response03.jsp"); %> </body> </html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Jsp四大作用域之application</title> </head> <body> <% application.setAttribute("name", "ying"); application.setAttribute("age", 12); %> <h4>application值设置完毕</h4> </body> </html> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>application接收页面</title> </head> <body> <% // 取值 String name=(String)application.getAttribute("name"); int age=(Integer)application.getAttribute("age"); %> <font>姓名:<%=name %></font> <font>年龄:<%=age %></font> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>Jsp内置对象--config</title> </head> <body> <% String jdbcName=config.getInitParameter("jdbcName"); String dbUrl=config.getInitParameter("dbUrl"); %> <h1>驱动名称:<%=jdbcName %></h1> <h1>连接地址:<%=dbUrl %></h1> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- errorPage 指定抛异常页面 --%> <%@ page errorPage="error.jsp"%> <!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>jsp内置变量之exception</title> </head> <body> <% int a=1; int b=0; out.println(a/b); %> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- isErrorPage 抛异常 --%> <%@ page isErrorPage="true"%> <!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> </head> <body> <% if(exception!=null){ out.println("程序错误信息:"); out.println(exception.getMessage()); } %> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>out:向客户端输出数据和管理应用服务器上的输出缓冲区</title> </head> <body> <% out.println("<h1>"); out.println("Hello Jsp Servlet"); out.println("</h1>"); %> <% int totalbuffer=out.getBufferSize(); // 获取总共缓冲区的大小 int available=out.getRemaining(); // 获取未使用的缓冲区的大小 int user=totalbuffer-available; // 获取使用的缓冲区大小 out.println("总共缓冲区的大小:"+totalbuffer); out.println("未使用的缓冲区的大小:"+available); out.println("使用的缓冲区大小:"+user); %> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>Jsp九大内置对象之--pageContext</title> </head> <body> <% pageContext.setAttribute("name0", "pageInfo"); out.println("使用pageContext<br/>"); out.println("page中的属性值:"+pageContext.getAttribute("name0")+"<br/>"); %> </body> </html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>Jsp四大作用域之page</title> </head> <body> <% pageContext.setAttribute("name", "ying"); pageContext.setAttribute("age", 12); %> <% String name = (String)pageContext.getAttribute("name"); int age = (Integer)pageContext.getAttribute("age"); %> <front>姓名:<%=name %></front> <front>年龄:<%=age %></front> </body> </html>
十、JSTL标签库
1. 核心标签库
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- c:if 用来条件判断; --> <jsp:useBean id="people" class="com.learn.model.People" scope="page"></jsp:useBean> <!-- --> <c:set property="id" target="${people }" value="007"></c:set> <c:set property="name" target="${people }" value="王二小"></c:set> <c:set property="age" target="${people }" value="16"></c:set> <c:if test="${people.name=='王二小' }" var="r" scope="page"> <h2>是王二小</h2> </c:if> <c:if test="${!r}"> <h2>不是王二小</h2> </c:if> <c:if test="${people.age<18 }"> <h2>是未成年</h2> </c:if> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ page import="java.util.*"%> <%@ page import="com.learn.model.Peoples"%> <!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>JSTL 核心标签库</title> </head> <body> <!-- c:forEach 用来遍历数组或者集合; --> <% String dogs[]={"小黑","小黄","小白","小小"}; pageContext.setAttribute("dogs",dogs); %> <c:forEach var="dog" items="${dogs }"> ${dog } <!-- 小黑 小黄 小白 小小 --> </c:forEach> <hr/> <c:forEach var="dog" items="${dogs }" step="2"> ${dog } <!-- 小黑 小白 --> </c:forEach> <hr/> <c:forEach var="dog" items="${dogs }" begin="1" end="2"> ${dog } <!-- 小黄 小白 --> </c:forEach> <hr/> <% List<Peoples> pList=new ArrayList<Peoples>(); pList.add(new Peoples(1,"张三",10)); pList.add(new Peoples(2,"李四",20)); pList.add(new Peoples(3,"王五",30)); pageContext.setAttribute("pList",pList); %> <table> <tr> <th>编号</th> <th>姓名</th> <th>年龄</th> </tr> <c:forEach var="p" items="${pList }"> <tr> <td>${p.id }</td> <td>${p.name }</td> <td>${p.age }</td> </tr> </c:forEach> </table> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ page import="java.util.*"%> <%@ page import="com.learn.model.People"%> <!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>JSTL 核心标签库</title> </head> <body> <!-- c:fortokens 分隔输出; --> <% String str1="www.java1234.com"; String str2="张三,李四,王五"; pageContext.setAttribute("str1",str1); pageContext.setAttribute("str2",str2); %> <c:forTokens items="${str1 }" delims="." var="s1"> ${s1 } <!-- www java1234 com --> </c:forTokens> <hr/> <c:forTokens items="${str2 }" delims="," var="s2"> ${s2 } <!-- 张三 李四 王五 --> </c:forTokens> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- c:choose、c:when、c:otherwise 用来多条件判断; --> <jsp:useBean id="people" class="com.learn.model.People" scope="page"></jsp:useBean> <c:set property="id" target="${people }" value="007"></c:set> <c:set property="name" target="${people }" value="王二小"></c:set> <c:set property="age" target="${people }" value="19"></c:set> <c:choose> <c:when test="${people.age<18 }"> <h2>小于18</h2> </c:when> <c:when test="${people.age==18 }"> <h2>等于18</h2> </c:when> <c:otherwise> <h2>大于18</h2> </c:otherwise> </c:choose> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- c:catch 用来处理程序中产生的异常; --> <c:catch var="errMsg"> <% int a=1/0; %> </c:catch> <h2>异常信息:${errMsg }</h2> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- c:import 导入页面; --> <c:import url="c_if.jsp"></c:import> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- 以后开发jsp的原则: 尽量在jsp页面中少写甚至不写java代码。 使用EL表达式替换掉jsp表达式,使用标签(jsp动作标签、jsp自定义标签、jsp标准标签库)替换掉jsp脚本 JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库。 SUN公司制定的一套标准标签库的规范。 JSTL标签库,是由一些Java类组成的。 JSTL组成: JSTL –Core 核心标签库。 【重点--必须熟练掌握】 若使用核心标签库,必须 1.先在lib/下导入jstl.jar和standard.jar 2.在页面中引入 JSTL – I18N - 国际化标签库。Internationalization- I18N 【可以熟悉下】 JSTL – SQL – 数据库操作标签(有悖于MVC设计模式),现在都不用这个。 JSTL - Functions – 函数库。 JSTL - XML ,对XML的操作(同SQL标签-有悖于MVC设计模式),现在都不用这个。 --> <% pageContext.setAttribute("people", "ying"); %> <c:out value="jstl你好--c:out 内容输出标签"></c:out> <c:out value="${people}"></c:out> <!-- 这就是核心标签库与EL表达式的区别,可以设置默认值等,功能更强大 --> <c:out value="${people1}" default="某人"></c:out> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- c:redirect 客户端跳转(重定向) --> <c:redirect url="target.jsp"> <c:param name="name" value="ying"></c:param> <c:param name="age" value="28"></c:param> </c:redirect> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- c:remove 用来删除指定范围中的属性; --> <c:set var="people" value="张三" scope="request"></c:set> <h2><c:out value="${people}" default="没人啊"></c:out></h2> <c:remove var="people" scope="request"/> <h2><c:out value="${people}" default="没人啊"></c:out></h2> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- c:set 用来设置 4 中属性范围值的标签; --> <c:set var="people" value="hehe" scope="request"></c:set> <h2><c:out value="${people}"></c:out></h2> <jsp:useBean id="people2" class="com.learn.model.People" scope="page"></jsp:useBean> <c:set property="id" target="${people2 }" value="007"></c:set> <c:set property="name" target="${people2 }" value="王二小"></c:set> <c:set property="age" target="${people2 }" value="26"></c:set> <h2>编号:${people2.id }</h2> <h2>姓名:${people2.name }</h2> <h2>年龄:${people2.age }</h2> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <!-- c:url 生成一个 url 地址; --> <c:url value="http://www.eaglexb.com" var="url"> <c:param name="name" value="eagle"></c:param> <c:param name="age" value="26"></c:param> </c:url> <a href="${url }">我的网站</a> </body> </html> // 举例接收我的网站页面参数 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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>JSTL 核心标签库</title> </head> <body> <h2>姓名:${param.name }</h2> <h2>年龄:${param.age }</h2> </body> </html>
2. 自定义标签
// 在WEB-INF下新建文件custom_tag.tld,内容如下: <?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <tlib-version>1.0</tlib-version> <!-- short-name貌似没有实际用 自定义标签系列使用body-content的作用:可参考:https://blog.csdn.net/mocharz/article/details/53112651 body-content的值有下面4种: <xsd:enumeration value="tagdependent"/> <xsd:enumeration value="JSP"/> <xsd:enumeration value="empty"/> <xsd:enumeration value="scriptless"/> --> <short-name>javaCustomTag123334344</short-name> <tag> <name>helloWorld</name> <tag-class> com.learn.tag.HelloWorldTag </tag-class> <body-content>empty</body-content> </tag> <tag> <name>oneTags</name> <tag-class> com.learn.tag.OneTag </tag-class> <body-content>empty</body-content> <attribute> <name>name</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <!-- 自定义标签属性(Run-time Expression Value) --> </attribute> </tag> <tag> <name>iterate</name> <tag-class> com.learn.tag.IterateTag </tag-class> <body-content>JSP</body-content> <attribute> <name>var</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>items</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>iterateSimple</name> <tag-class> com.learn.tag.IterateSimpleTag </tag-class> <body-content>scriptless</body-content> <attribute> <name>var</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>items</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib> 下面创建几个自定义标签对应的jsp页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="ying" uri="/WEB-INF/custom_tag.tld" %> <!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>问候Jsp 自定义标签--最基础的标签</title> </head> <body> <!-- EL表达式、JSP标签、JSTL标签、自定义标签的区别与使用,参考下面链接 https://blog.csdn.net/guanhang89/article/details/51277657 --> <!-- 自定义标签创建步骤如下: 1. 编写一个普通的java类,继承SimpleTagSupport类或TagSupport类,叫标签处理器类 2. 在web项目的WEB-INF目录下建立xxx.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件) 3. 在jsp页面的头部导入自定义标签库 4. 在jsp中使用自定义标签 注意: 自定义标签: 一般的中小型网站用到的机会不多,一般不用;但是一些大型的系统如果自定义标签的话可以大大提高工作效率 --> <ying:helloWorld/> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <%@ taglib prefix="ying" uri="/WEB-INF/custom_tag.tld" %> <!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>问候Jsp 自定义标签--自定义有标签体的标签</title> </head> <body> <!-- 自定义标签创建步骤如下: 1. 编写一个普通的java类,继承SimpleTagSupport类或TagSupport类,叫标签处理器类 2. 在web项目的WEB-INF目录下建立xxx.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件) 3. 在jsp页面的头部导入自定义标签库 4. 在jsp中使用自定义标签 --> <% List people=new ArrayList(); people.add("王二小"); people.add("司马光"); people.add("呵呵"); pageContext.setAttribute("people", people); %> <ying:iterateSimple items="people" var="p"> <h2>${p }</h2> </ying:iterateSimple> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <%@ taglib prefix="ying" uri="/WEB-INF/custom_tag.tld" %> <!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>问候Jsp 自定义标签--自定义有标签体的标签</title> </head> <body> <!-- 自定义标签创建步骤如下: 1. 编写一个普通的java类,继承SimpleTagSupport类或TagSupport类,叫标签处理器类 2. 在web项目的WEB-INF目录下建立xxx.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件) 3. 在jsp页面的头部导入自定义标签库 4. 在jsp中使用自定义标签 --> <% List people=new ArrayList(); people.add("王二小"); people.add("司马光"); people.add("呵呵"); pageContext.setAttribute("people", people); %> <ying:iterate items="people" var="p"> <h2>${p }</h2> </ying:iterate> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="ying" uri="/WEB-INF/custom_tag.tld" %> <!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>问候Jsp 自定义标签--自定义有属性的标签</title> </head> <body> <!-- 自定义标签创建步骤如下: 1. 编写一个普通的java类,继承SimpleTagSupport类或TagSupport类,叫标签处理器类 2. 在web项目的WEB-INF目录下建立xxx.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件) 3. 在jsp页面的头部导入自定义标签库 4. 在jsp中使用自定义标签 --> <ying:oneTags name="JspServlet屌炸天"/> </body> </html> 对应的java类: package com.learn.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class HelloWorldTag extends TagSupport{ /** * */ private static final long serialVersionUID = 1L; @Override public int doStartTag() throws JspException { JspWriter out = this.pageContext.getOut(); try { out.println("自定义标签大爷你好!"); } catch (IOException e) { e.printStackTrace(); } return TagSupport.SKIP_BODY; // 直接结束标签 } } package com.learn.tag; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class IterateSimpleTag extends SimpleTagSupport{ private String var; private String items; public String getVar() { return var; } public void setVar(String var) { this.var = var; } public String getItems() { return items; } public void setItems(String items) { this.items = items; } @Override public void doTag() throws JspException, IOException { Object value=this.getJspContext().getAttribute(items); if(value!=null && value instanceof List){ Iterator iter=((List)value).iterator(); while(iter.hasNext()){ this.getJspContext().setAttribute(var, iter.next()); this.getJspBody().invoke(null); // 响应页面 } } } } package com.learn.tag; import java.util.Iterator; import java.util.List; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; public class IterateTag extends TagSupport{ /** * 自定义有标签体的标签 */ private static final long serialVersionUID = 1L; private String var; private String items; private Iterator iter; public String getVar() { return var; } public void setVar(String var) { this.var = var; } public String getItems() { return items; } public void setItems(String items) { this.items = items; } public Iterator getIter() { return iter; } public void setIter(Iterator iter) { this.iter = iter; } @SuppressWarnings("rawtypes") @Override public int doStartTag() throws JspException { Object value=this.pageContext.getAttribute(items); if(value!=null && value instanceof List){ this.iter=((List)value).iterator(); if(iter.hasNext()){ //this.pageContext.setAttribute(var, iter.next()); return TagSupport.EVAL_BODY_INCLUDE; // 执行标签体 }else{ return TagSupport.SKIP_BODY; // 退出标签执行 } }else{ return TagSupport.SKIP_BODY; // 退出标签执行 } } @Override public int doAfterBody() throws JspException { if(iter.hasNext()){ this.pageContext.setAttribute(var, iter.next()); return TagSupport.EVAL_BODY_AGAIN; // 再执行一次标签体 }else{ return TagSupport.SKIP_BODY; // 退出标签执行 } } } package com.learn.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class OneTag extends TagSupport{ /** * */ private static final long serialVersionUID = 1L; private String name; @Override public int doStartTag() throws JspException { JspWriter out=this.pageContext.getOut(); try { out.println(name+":自定义有属性的标签大爷你好!"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return TagSupport.SKIP_BODY; // 直接结束标签 } public String getName() { return name; } public void setName(String name) { this.name = name; } }
十一、el表达式
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>EL表达式</title> </head> <body> <!-- EL(Expression Language) 是为了使JSP写起来更加简单. 语法结构 ${expression} 注意:page指令的 isELIgnored属性 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言 EL 表达式访问 4 种范围属性 表达式语言(Expression Language,EL) 寻找值的顺序:page->request->session->application --> <% pageContext.setAttribute("info1","page范围的值"); request.setAttribute("info2","request范围的值"); session.setAttribute("info3","session范围的值"); application.setAttribute("info4","application范围的值"); %> <!-- 以后用下面el表达式这种方式 简化jsp输出 --> <h2>${info1 }</h2> <h2>${info2 }</h2> <h2>${info3 }</h2> <h2>${info4 }</h2> <%-- <h2>${info1 }</h2> <h2>${info1 }</h2> <h2>${info1 }</h2> --%> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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> </head> <body> <form action="el-two.jsp" method="post"> <input type="text" name="name"/> <input type="submit" value="提交el-two.jsp"/> </form> <a href="el-two.jsp?age=12">提交el-two.jsp</a> <form action="el-two.jsp" method="post"> <input type="checkbox" name="hobby" value="java语言"/>java语言 <input type="checkbox" name="hobby" value="C#语言"/>C#语言 <input type="checkbox" name="hobby" value="php语言"/>php语言 <input type="submit" value="提交el-two.jsp"/> </form> </body> </html> =================================================== <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>EL表达式param内置对象---接收传递到本页面的参数</title> </head> <body> <!-- Param:单个参数 paramValues:一组参数 接收传递到本页面的参数 --> <% request.setCharacterEncoding("utf-8"); %> <h1>姓名:${param.name }</h1> <h1>年龄:${param.age }</h1> <h1>爱好一:${paramValues.hobby[0] }</h1> <h1>爱好二:${paramValues.hobby[1] }</h1> <h1>爱好三:${paramValues.hobby[2] }</h1> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.learn.model.People" %> <!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>EL表达式</title> </head> <body> <!-- EL 表达式对象操作 --> <% People zhangsan=new People(); zhangsan.setId(1); zhangsan.setName("张三"); zhangsan.setAge(20); request.setAttribute("zhangsan",zhangsan); %> <h1>ID:${zhangsan.id }</h1> <h1>姓名:${zhangsan.name }</h1> <h1>年龄:${zhangsan.age }</h1> <h1>ID:${zhangsan['id'] }</h1> <h1>姓名:${zhangsan['name'] }</h1> <h1>年龄:${zhangsan['age'] }</h1> </body> </html>
<%@page import="java.util.*"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>EL表达式</title> </head> <body> <!-- EL 表达式集合操作 --> <% List all = new LinkedList(); all.add(0,"元素1"); all.add(1,"元素2"); all.add(2,"元素3"); request.setAttribute("alls",all); %> <h1>${alls[0] }</h1> <h1>${alls[1] }</h1> <h1>${alls[2] }</h1> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>EL表达式</title> </head> <body> <!-- EL 表达式运算符操作 --> <% request.setAttribute("num1",10); request.setAttribute("num2",3); request.setAttribute("flag1",true); request.setAttribute("flag2",false); %> <h1>算数运算符:</h1> <h2>num1=${num1 },num2=${num2 }</h2> <h2>num1+num2=${num1+num2 }</h2> <h2>num1-num2=${num1-num2 }</h2> <h2>num1*num2=${num1*num2 }</h2> <h2>num1/num2=${num1/num2 }</h2> <h2>num1%num2=${num1%num2 }</h2> <h2>num1*(num1-num2)=${num1*(num1-num2) }</h2> <h1>关系运算符:</h1> <h2>flag1=${flag1 },flag2=${flag2 }</h2> <h1>逻辑运算符:</h1> <h2>与操作flag1 && flage2:${flag1 && flage2 }</h2> <h2>或操作flag1 || flage2:${flag1 || flage2 }</h2> <h2>非操作!flag1:${!flag1}</h2> <h1>三目运算符:</h1> <h2>三目操作 num1>num2:${num1>num2?"yes":"no" }</h2> <h1>empty关键字:</h1> <h2>判断空操作:${empty num1 }</h2> <h2>判断空操作:${empty a1 }</h2> </body> </html>
十二、JavaBean
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.learn.model.Student" %> <!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>常规类调用--未使用javabean</title> </head> <body> <% Student stu = new Student(); stu.setUsername("王小二"); stu.setAge(28); %> <h1>姓名:<%=stu.getUsername() %></h1> <h1>年龄:<%=stu.getAge() %></h1> </body> </html> ======================================================= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>使用javabean--减少重复代码</title> </head> <body> <%-- jsp:useBean 创建 javabean 创建语法如下: --%> <%-- <jsp:useBean id="实例化对象名称" scope="保存范围" class="类完整名称"/> Scope,一共有 page,request,session 和 application4 个属性范围,默认是 page; --%> <jsp:useBean id="stu" scope="page" class="com.learn.model.Student"/> <% stu.setUsername("赵云"); stu.setAge(22); %> <h1>姓名:<%=stu.getUsername() %></h1> <h1>年龄:<%=stu.getAge() %></h1> </body> </html> ======================================================= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.learn.model.Student" %> <!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>常规获取参数并实例化--未使用javabean</title> </head> <body> <% //request.setCharacterEncoding("utf-8"); //String name = request.getParameter("name"); // 出现name乱码的现象: // 原因:Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流(造成中文乱码) // 解决办法:我们需要把request.getParameter(“参数名”)获取到的字符串先用ISO-8859-1编码成字节流,然后再将其用utf-8解码成字符流 String name = new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8"); //out.println(str); String age = request.getParameter("age"); Student stu = new Student(); stu.setUsername(name); stu.setAge(Integer.parseInt(age)); // 将字符串转化成整型 %> <h1>姓名:<%=stu.getUsername() %></h1> <h1>年龄:<%=stu.getAge() %></h1> </body> </html> ===================================================== <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>获取参数并实例化--使用javabean</title> </head> <body> <%-- jsp:setProperty 设置 javabean 属性值 --%> <%-- <jsp:setProperty property="属性名称" name="实例化对象的名称" value="属性值" param="参数名称"/> Property=”*” 自动匹配所有 --%> <jsp:useBean id="stu" scope="page" class="com.learn.model.Student"></jsp:useBean> <jsp:setProperty property="*" name="stu"/> <h1>姓名:<%=stu.getUsername() %></h1> <h1>年龄:<%=stu.getAge() %></h1> </body> </html> ====================================================== <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>获取参数并实例化--使用javabean</title> </head> <body> <%-- jsp:setProperty 设置 javabean 属性值 --%> <%-- <jsp:setProperty property="属性名称" name="实例化对象的名称" value="属性值" param="参数名称"/> Property=”*” 自动匹配所有 --%> <jsp:useBean id="stu" scope="page" class="com.learn.model.Student"></jsp:useBean> <jsp:setProperty property="username" name="stu" value="ying"/> <jsp:setProperty property="age" name="stu"/> <h1>姓名:<%=stu.getUsername() %></h1> <h1>年龄:<%=stu.getAge() %></h1> </body> </html> ======================================================= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>获取参数并实例化--使用javabean</title> </head> <body> <%-- jsp:setProperty 设置 javabean 属性值 --%> <%-- <jsp:setProperty property="属性名称" name="实例化对象的名称" value="属性值" param="参数名称"/> Property=”*” 自动匹配所有 --%> <jsp:useBean id="stu" scope="page" class="com.learn.model.Student"></jsp:useBean> <jsp:setProperty property="username" name="stu" param="username"/> <jsp:setProperty property="age" name="stu" value="25"/> <h1>姓名:<%=stu.getUsername() %></h1> <h1>年龄:<%=stu.getAge() %></h1> </body> </html> ========================================================= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>jsp:getProperty 获取 javabean 属性值</title> </head> <body> <%-- <jsp:getProperty property="属性名称" name="实例化对象的名称"/> --%> <jsp:useBean id="stu" scope="page" class="com.learn.model.Student"></jsp:useBean> <% stu.setUsername("王二小2"); stu.setAge(12); %> <h1>姓名:<jsp:getProperty property="username" name="stu"/></h1> <h1>年龄:<jsp:getProperty property="age" name="stu"/></h1> </body> </html> ========================================================= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>javabean的保存范围之request</title> </head> <body> <jsp:useBean id="stu" scope="request" class="com.learn.model.Student"></jsp:useBean> <jsp:setProperty property="username" name="stu" value="ying"/> <jsp:setProperty property="age" name="stu" value="22"/> <jsp:forward page="target01.jsp"></jsp:forward> </body> </html> ========================================================= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>javabean--request 服务器内部跳转</title> </head> <body> <jsp:useBean id="stu" scope="request" class="com.learn.model.Student"></jsp:useBean> <h1>姓名:<jsp:getProperty property="username" name="stu"/></h1> <h1>年龄:<jsp:getProperty property="age" name="stu"/></h1> </body> </html> ========================================================= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>javabean的保存范围之session</title> </head> <body> <jsp:useBean id="stu" scope="session" class="com.learn.model.Student"></jsp:useBean> <jsp:setProperty property="username" name="stu" value="ying"/> <jsp:setProperty property="age" name="stu" value="22"/> <h1>Session数据设置完毕!</h1> </body> </html> ========================================================= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>javabean的保存范围之application</title> </head> <body> <jsp:useBean id="stu" scope="application" class="com.learn.model.Student"></jsp:useBean> <jsp:setProperty property="username" name="stu" value="ying"/> <jsp:setProperty property="age" name="stu" value="22"/> <h1>application数据设置完毕!</h1> </body> </html> ========================================================== <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>javabean--删除</title> </head> <body> <%-- javabean--删除: Page 范围:pageContext.removeAttribute(“javaBean Name”); request 范围:request.removeAttribute(“javaBean Name”); session 范围:session.removeAttribute(“javaBean Name”); application 范围:application.removeAttribute(“javaBean Name”); --%> <% session.removeAttribute("stu"); %> <h1>javabean已删除!</h1> </body> </html>