<jsp:javabean>动作标签实例

之后补齐基础知识

  1. scope属性

    该属性指定了所创建Bean实例的存取范围,省略该属性时的值为page.<jsp:useBean>标识被执行时,首先会在scope属性指定的范围来查找指定的Bean实例,如果该实例已经存在,则引用这个Bean,否则重新创建,并将其存储在scope属性指定的范围内。

    scope属性可选值如下

    • page:(当前页面范围)

      制定了所创建的Bean实例只能够在当前的JSP文件中使用,包括在通过include指令静态包含(实际上是一个页面)的页面中有效
    • request: (请求范围[1] )

      指定了所创建的Bean实例可以在请求范围内进行存取。在请求被转发至的目标页面中可通过request对象的getAttribute("id属性值") 方法获取创建的Bean实例。一个请求的生命周期是 从客户端向服务器发出一个请求到服务器响应这个请求给用户后 结束,所以请求结束后,存储在其中的Bean的实例也就是失效了。
    • session:(一个用户,多个页面)

      指定了所创建的Bean实例的有效范围为session.

      session是当用户访问Web应用时,服务器为用户创建的一个对象,服务器通过session的ID值 来区分其他的用户。针对某一个用户而言, 在该范围中的对象可被多个页面共享。(购物车应用)

      可以使用session对象的getAttribute("id属性值")方法获取存储在session中的Bean实例,也可以使用session对象的getValue("id属性值")来获取,但该方法不建议使用。
    • application:(多个用户,多个页面)

      该值指定了所创建的Bean实例的有效范围从服务器启动开始到服务器关闭结束。 application对象是在服务器启动时创建的,它被多个用户共享。所以访问该application对象的所有用户共享存储于该对象中的Bean实例。 (浏览人数)

      可以使用application对象的getAttribute(“id属性值”)方法获取在application中的Bean实例

先放上本次实例

本次实例主要解决了 :

如果在session范围和request范围都存在名为car的ShopCar实例,而存储在session范围内的ShopCar实例是通过<jsp:useBean>标识创建的。那么代码中的<jsp:setProperty>标识会为哪个范围中的ShopCar实例赋值呢?

实例工程架构如下



存在一个javaBean,关键代码如下:

package com.bean;

public class ShopCar {

	private String name;
private String maker;
public ShopCar() {
name = "noname";
maker="noplace";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMaker() {
return maker;
}
public void setMaker(String maker) {
this.maker = maker;
} }

JavaBean:简单说,它就是一个Java类,这个类可以重复地使用。

它必须遵循以下规定:

  • 是一个公有类。
  • 具有一个公有的不带参数构造方法。
  • 每个属性必须定义一组getXXX()和setXXX()方法, 以便读取和存储其属性值。

符合上述规定的JavaBean,将拥有:事件处理、自省机制、永续储存等特性。

参照博主

新建javabean1.jsp 文件:

 <!-- 导入ShopCar类 -->
<%@page import="com.bean.ShopCar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>第一种方法实例化javaBean</h2>
<%
ShopCar car = new ShopCar(); //创建一个javaBean ShopCar的实例
session.setAttribute("car",car); //将创建的JavaBean实例存在session范围内 %> <h2>第二种方法实例化javaBean</h2>
<%-- 这里的id就是javaBean实例的名字 相当于ShopCar car = new ShopCar()
两种方法作用一致 --%>
<%--<jsp:useBean id="car" class="com.bean.ShopCar" scope="session"/> --%>
<jsp:setProperty name="car" property="*"/> <%
ShopCar r_car = new ShopCar();
request.setAttribute("car", r_car); //作用域范围是request
%>
<jsp:setProperty name="car" property="name" value="Panax"/>
<jsp:setProperty name="car" property="maker" value="JiLin"/> Request范围内:<br>
车名: <%=r_car.getName() %>
地址:<%=r_car.getMaker() %>
<br>
Session范围内:<br>
车名: <%=car.getName() %>
地址: <%=car.getMaker() %> </body>
</html>

<jsp:useBean id="car" class="com.bean.ShopCar" scope="session"/>

  • id指的是实例化的对象,class就是Java类。这一行相当于

    ShopCar car = new ShopCar();

<jsp:setProperty name="car" property="name" value="Panax"/>

  • name是对象,property是属性,value是属性的值。

实验结果:

从结果得知:

<jsp:setProperty>标识被执行时,会按照page、request、session和application的顺序来查找由name属性指定的Bean实例,并且返回第一个被找到的实例;若任何范围内不存在这个Bean实例,就会抛出异常


  1. 客户端和服务器的一次通信就是一次请求(发送请求或得到相应) ↩︎

<jsp:javabean>动作标签实例的更多相关文章

  1. JSP基础--动作标签

    JSP动作标签 1 JSP动作标签概述 动作标签的作用是用来简化Java脚本的! JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用. 如果JSP动作标签不 ...

  2. 【JSP】JSP Action动作标签

    Action动作标签简述 JSP action是JSP技术体系内置的一组标签,使用无需导入,或者添加另外的库.JSP action标签都是对Java代码的逻辑的封装.主要使用的是下面这些. 标签 作用 ...

  3. jsp forward 动作标签

    forward 动作标签: <jsp:forward page="要转向的页面"> </jsp:forward> 或 <jsp:forward pag ...

  4. jsp param动作标签

    param 标签以"名字-值"对的形式为其它标签提供附加消息.这个标签与jsp:include.jsp:forward.jsp:plugin标签一起使用. param 动作标签 & ...

  5. jsp的动作标签

    常用的标签: 1. forward   请求转发 [基本不使用] <==> request.getRequestDispatcher(url).forward(request,respon ...

  6. JavaWeb笔记——Jsp的指令、内置对象和动作标签

    JSP三大指令   一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info=" ...

  7. jsp 三大指令和动作标签

    jsp三大指令 一个jsp页面中可以有0-N个指令 1.page--->最复杂:<%@page language="" ...%> *pageEncoding和c ...

  8. JSP九个内置对象及指令、动作标签

    一.JSP九大内置对象 (一)JSP中无需创建就可以使用的9个对象 输入输出对象 1.response(HttpServletResponse):处理JSP生成的响应,然后将响应结果发送给客户端.是s ...

  9. 重温JSP学习笔记--JSP动作标签

    上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...

随机推荐

  1. P1579 哥德巴赫猜想(升级版)

    程序是人类的财富!!11 ------------------------------------------- 题目链接:MIKU OK,Let's gi; -------------------- ...

  2. 【Python】python对象与json相互转换

    转自:http://blog.csdn.net/leilba/article/details/50654256 # -*- coding: UTF-8 -*- import json #自定义类 cl ...

  3. Scrapy 中 Request 对象和 Response 对象的各参数及属性介绍

    Request 对象 Request构造器方法的参数列表: Request(url [, callback=None, method='GET', headers=None, body=None,co ...

  4. php屏蔽错误消息

    定义和用法: error_reporting() 设置 PHP 的报错级别并返回当前级别. 函数语法: error_reporting(report_level) 如果参数 level 未指定,当前报 ...

  5. 【模板】缩点 tarjan+dp

    题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...

  6. eclipse字体

  7. 【STL基础】deque

    deque (double-ended queue) 构造函数: //default: deque<T> d; //空的vector //fill: deque<T> d(n) ...

  8. [JavaScript]instanceof String not behaving as expected in Google Apps Script

    Link: http://stackoverflow.com/questions/11571923/instanceof-string-not-behaving-as-expected-in-goog ...

  9. Mybatis学习笔记(七) —— 关联查询

    一.一对多查询 需求:查询所有订单信息,关联查询下单用户信息. 注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一对一查询.如果从用户信息出发查询用户下的订单信息则 ...

  10. SharePoint 2013 设置 显示详细错误信息 修改位置总结

    以80端口为例—— 1.修改:C:\inetpub\wwwroot\wss\VirtualDirectories\80\web.config文件配置 CallStack="false&quo ...