JSP培训(5)——使用JavaBean完成业务逻辑

目标:
l 掌握什么是JavaBean;
l 掌握如何编写JavaBean;
l 掌握如何在JSP中访问JavaBean;
l 理解JSP中对象的4个作用范围。
主要内容:
l 通过把上一讲中login_process.jsp中的验证过程进行封装形成JavaBean,然后在JSP页面中调用这个JavaBean,介绍JavaBean的编写和访问。
l 通过简单实例介绍JavaBean对象的4个作用范围。
1、什么JavaBean
JavaBean是使用Java语言编写的组件。组件是组成一个大的系统的一部份,通常不同独立运行。组件能够完成特定的功能,并且这些功能主要是共享的。
JavaBean是一种特殊的Java类。特殊在:通常要提供无参数的构造方法;外界不需要知道它的具体实现,通常属性是私有的,需要提供公有的对属性进行操作的方法;应该有一些业务方法。
2、例:对用户信息进行验证
package javabean;
public class User
{
private String username;
private String userpass;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getUserpass()
{
return userpass;
}
public void setUserpass(String userpass)
{
this.userpass = userpass;
}
public boolean check()
{
if(username==null || userpass==null)
return false;
if(username.equals("zhangsan") && userpass.equals("lisi"))
{
return true;
}else{
return false;
}
}
}
3、在JSP中如何调用JavaBean
首先,在Java中的调用情况:
import javabean;
…
User user = new User(); // 定义对象,并且实例化
user.setUsername(“zaaaa”);// 对成员变量进行初始化
user.setUserpass(“sssss”); // 对用户口令进行初始化
boolean b = user.check(); // 调用业务方法进行验证
1)创建对象
<jsp:useBean id=”” class=”” scope=””/>
作用:实例化JavaBean的对象,或者查找到JavaBean的对象。
id属性表示创建的对象的名字,class是JavaBean的完整类名,scope属性指出创建的变量的作用范围。
scope的作用范围有4个:page request session application
page表示当前页面,实际上是当前的JSP文件对应的Java类的对象;
request表示一次请求,从我们发送出去请求开始到系统对我们进行响应,这之间就是一次请求。如果一次请求只涉及一个JSP页面,page和request的效果是相同的。
例如:登录功能,显示第一个页面的时候,这时候page和request的作用范围是相同的。提交之后,如果登录成功,这时候涉及两个文件login_process.jsp和success.jsp,每个文件对应一个page,但是两个文件属于一个request。
session,表示会话。对于Web应用的每个客户端来说都对应一个对象,这个对象就是session,如果JavaBean对象的作用范围设置为session,相当于把JavaBean对象保存在了session对象中,在客户端的整个访问过程中都可以访问这个对象。
application,表示应用。如果把JavaBean对象的作用范围设置为application,这个应用的所有的用户在所有的界面都可以访问这个对象。
例:<jsp:useBean id=”user” class=”javabean.User” scope=”request”/>
测试(关于4个作用范围):
l 编写page.jsp文件如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="pageAttribute" value="pppp" scope="page"/>
<c:set var="requestAttribute" value="rrrrr" scope="request"/>
<c:set var="sessionAttribute" value="ssss" scope="session"/>
<c:set var="applicationAttribute" value="aaaa" scope="application"/>
<jsp:include page="success.jsp"/>
<br>page.jsp中输出信息:
${pageScope.pageAttribute}
${requestScope.requestAttribute}
${sessionScope.sessionAttribute}
${applicationScope.applicationAttribute}
其中:<c:set>标签用于存储信息,var指出变量的名字,value指出变量的值(可以使用表达式),scope指出变量的存储范围。
${pageScope.pageAttribute}用于访问page范围内的pageAttribute属性,${requestScope.requestAttribute}用于访问request范围内的requestScope属性,依次类推。
l 编写request.jsp文件如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<br>request.jsp中输出信息:
${pageScope.pageAttribute}
${requestScope.requestAttribute}
${sessionScope.sessionAttribute}
${applicationScope.applicationAttribute}
<br>
<a href="session.jsp">访问session</a>
l 编写session.jsp文件如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<br>session.jsp中输出信息:
${pageScope.pageAttribute}
${requestScope.requestAttribute}
${sessionScope.sessionAttribute}
${applicationScope.applicationAttribute}
l 编写application.jsp文件如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<br>application.jsp中输出信息:
${pageScope.pageAttribute}
${requestScope.requestAttribute}
${sessionScope.sessionAttribute}
${applicationScope.applicationAttribute}
运行过程:
l 运行page.jsp,得到如下结果:
request.jsp中输出信息:rrrr ssss aaaa
page.jsp中输出信息:pppp rrrr ssss aaaa
分析:因为page.jsp和request.jsp属于同一次请求,所以共享request对象,session对象和application对象,但是不能显示page中存储的信息。
l 点击“访问session”进行session.jsp
session.jsp中输出信息:ssss aaaa
分析:与前面不属于同一次请求,所以不能访问request和page信息,只能访问session和application。
l 重新打开一个浏览器,访问application.jsp
application.jsp中输出信息:aaaa
分析:属于不同的客户端,所以只能共享application对象,只能看到application中的信息。
2)对属性赋值
<jsp:setProperty name=”” property=”” value=””/>
name指出JavaBean对象的名字,property指出属性的名字,value要赋的值。
例:<jsp:setProperty name=”user” property=”username” value=”zhangsan”/>
如果value属性不指定,这时候会从请求对象查找名字为username的表单元素,如果有救赋值。相当于下面的代码:
String username = request.getParameter(“username”);
user.setUsername(username);
如果省略了value属性,同时把property属性设置为“*”,相当于:
String username = request.getParameter(“username”);
user.setUsername(username);
String userpass = request.getParameter(“usernpass”);
user.setUsernpass (userpass);
如果表单元素的名字与JavaBean属性名字不一致的时候,可以通过param属性指定使用哪个表单元素。
3)嵌入Java代码调用方法
<%
boolean b = user.check();
%>
4)获取JavaBean属性
<jsp:getProperty name=”” property=””/>
4、实例:修改login_process.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!--创建对象-->
<jsp:useBean id="user" class="javabean.User" scope="request"/>
<!--对对象进行初始化-->
<jsp:setProperty name="user" property="*"/>
<!-- 调用对象的方法 -->
<%
boolean b = user.check();
request.setAttribute("b",new Boolean(b));
// 在request中保存信息,第一个参数是名字,第二个参数对象本身
%>
<!-- 根据结果进行判断 -->
<c:if test="${b}">
<jsp:include page="success.jsp"/>
</c:if>
<c:if test="${!b}">
<jsp:include page="failure.jsp"/>
</c:if>
<br>用户信息:
<jsp:getProperty name="user" property="username"/>
<jsp:getProperty name="user" property="userpass"/>
运行:编译之前编写好的Java文件User.java。然后把编译好的文件放在工程的WEB-INF目录的classes子目录中。
运行之后效果是相同的。
但是分析上面的代码,我们发现里面还是嵌入了Java代码,这是因为JSP并没有提供很好的标签对JavaBean的访问进行调用。如果想使用标签对业务方法调用,需要编写自定义标签,比较麻烦。下面介绍一个折中的方法。
5、实例:重构login_process.jsp
在User.java中添加如下方法:
public boolean getResult()
{
return check();
}
虽然JSP没有提供访问业务方法的标签,但是提供了对属性进行访问的方式,所以该方法通过提供result属性来间接的调用check业务方法。
修改login_process.jsp文件如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<jsp:useBean id="user" class="javabean.User" scope="request"/>
<jsp:setProperty name="user" property="*"/>
<c:if test="${user.result}">
<jsp:include page="success.jsp"/>
</c:if>
<c:if test="${!user.result}">
<jsp:include page="failure.jsp"/>
</c:if>
参考教材: 《Java Web程序设计基础教程》
Java超市采购管理系统设计与实现:进销存数据库到JSP全流程 从B/S架构与JSP/JavaBean技术出发,梳理三层结构下浏览器、服务器与数据库的分工协作原理,强调业务逻辑与表示层分离的工程价值。在此基础上,聚焦进销存系统中最核心的数据库设计环节,结合SQL Server实践,展示从E-R图推导至六张核心业务表的完整过程,说明主外键约束、decimal金额类型选择等关键设计对数据一致性与报表精度的影响。此类以数据库为骨架、以JSP页面为交互入口的经典JavaWeb项目,是超市采购管理系统从需求分析到落地实现的典型路径,其模块划分与事务处理思路同样适用于毕业设计或中小 阅读详情

相关推荐

商品信息管理系统(Java实现+MySQL 数据库)

这是本人在做课程设计的时候写的用Java实现商品信息管理系统的代码,具体信息请看本人博客,博客地址https://blog.youkuaiyun.com/vegetable_haker/article/details/102556311,其中MySQL数据库需要根据本地配置做些修改 (本人菜鸟一枚,代码是几年前课设时写的,现在学的知识都交还给老师了,所以有什么问题的话,不要问我,我也不知道~ . ~,仅供学交流使用,有诸多不完善的地方,介意请谨慎下载)

JSPjsp:useBean标签

如果要使用JSP页面中的Action标签与JavaBeans组件进行交互,则必须首先声明一个bean。该<jsp:useBean>是声明和初始化的实际bean对象的一种方式。通过豆,我们的意思是JavaBean组件对象。<jsp:useBean>标记的语法 <jsp:useBean id = "beanName" class = "className" scope = "page | request | session | applicati...

allway2的博客 2727

javabean组件(如何封装业务逻辑,及使用的好处)

本资源只要介绍javabean组件(如何封装业务逻辑,及使用的好处)

JavaBean实验

1、 创建学生成绩的表单页面,并创建对应的JavaBean,在JSP页面中使用标签来设置和读取属性 2、 在多个页面间测试JavaBean的作用范围,通过实验对scope为page,request,session,application加强理解

weixin_51066144的博客 2125

YOLOv5 改进点总览:轻量化、高精度的背后有哪些魔改?

YOLOv5是由Ultralytics团队开发的高效目标检测模型,其核心改进包括:主干网络采用CSPDarknet53提升梯度传播效率;特征融合使用PANet增强小目标识别;输出结构采用解耦头设计优化定位和分类任务。此外,YOLOv5通过CIoU损失函数、Mosaic数据增强和SimOTA标签分配机制进一步提升性能。模型支持多种推理格式(ONNX/TensorRT等),并具备自动锚框匹配和多尺度训练功能,使其在轻量化(yolov5s仅7MB)与高性能(最高51.2% mAP)间取得平衡,但缺乏正式论文支撑是

guoguozgw的博客 1806

深入解析 ReDoc:从零构建高性能 API 文档的终极指南

ReDoc 是一个强大的开源工具,用于将 OpenAPI 规范转换为高质量、响应式的 API 文档。本文详细介绍了如何使用 ReDoc 构建和自定义 API 文档,包括如何编写支持 OpenAPI 的 API 注解、配置 HTML 页面以加载文档,以及如何利用 ReDoc 的高级功能进行定制。通过实例代码,您将学会如何灵活地展示 API 文档,提升用户体验。无论是初学者还是经验丰富的开发者,都能从本文中获得实用的技巧与方案,帮助快速搭建符合需求的 API 文档界面。

楠搏万的博客 4634

了解JavaBean以及它在jsp中的用法

我是一个初学者,还有很多不懂的地方,希望大神们给点意见 一.什么叫JavaBean:         它就相当于Java中的实体类(entity),也叫domain,但是为了编辑工具识别,需要满足至少三个条件       1.必须有无参方法        2.属性使用public的set,get方法访问,也就是说设置成private,同时set,get方法与属性名的大小也需要对应。

Blessed_的博客 579

c语言国际象棋(easyx图形库)

c语言实现的国际象棋,先放源码,有空再更 所有图形资源均来源于网络,侵删 #include <graphics.h> #include<stdio.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include <time.h> #define HEIGHT 800 #define WIDTH 1100 #define SIZE 100 #define true.

Betelgeuse13的博客 1914

实验三JavaBean技术

实验三JavaBean技术 一、实验目的: 1、掌握JavaBean创建和使用方法; 2、掌握 Javabean 的编写规则 3、体验 JSP+JavaBean 编程的好处 二、实验原理: JavaBean 组件是一些可移植、可重用,并可以组装到应用程序中的 Java 类。 将JavaBean与 JSP 语言元素一起使用,可以很好地实现后台业务逻辑和前台表示逻辑的分离,使得JSP页面更加可读、易维...

云卷云舒 2751

Windows Server上OpenVPN 2.4.8双因子认证实战:账号密码+证书,附一键脚本

本文详细介绍了在Windows Server上部署OpenVPN 2.4.8双因子认证(账号密码+证书)的实战方案,包括架构设计、证书体系规划、环境准备、服务器端配置及客户端自动化部署。通过一键脚本和优化配置,提升企业VPN的安全性和运维效率,特别适合金融、医疗等对安全性要求高的行业。

weixin_29231221的博客 466

GenomeSurvyIndex设计--随笔017

摘要: GenomeSurvyIndex是一款自动化多倍体基因组调查工具,整合FastK、Smudgeplot和GenomeScope2.0三大核心组件。该工具通过k-mer频谱特征自动识别基因组倍性类型,包括二倍体(1:2:4)和同源四倍体(1:2:3:4),并采用3a1b>2a2b算法判定同源/异源多倍体。工具提供完整的conda环境配置方案,封装为Python脚本实现全流程自动化分析,包含k-mer计数、倍性判定、基因组特征计算等功能,最终输出标准化报告和可视化图表。该方案可直接部署使用,适用于

weixin_44874487的博客 475

使用jsp+servlet+javabean+json完成项目整合-冯三-专题视频课程

使用jsp+servlet+javabean完成web项目,很经典的项目案例,使用json+jquery+ajax对前端显示进行优化,详细的实现细节和代码编写过程。。。

我思故我在 533

最新打赏系统打赏源码麒麟最新打赏源码喜盈门打赏知识付费课程教程直播讲解

打赏源码打赏系统

qq_41095398的博客 2041

JSP培训(6)——使用Servlet作为控制器实现MVC模式

 目标:l         初步理解MVC模式;l         掌握Servlet的编写;l         使用MVC模式完成登录功能。主要内容:l         分析JSP+JavaBean模式存在的问题,并介绍JSP+JavaBean+Servlet模式,以及和MVC模式的关系;l         通过简单实例介绍Servlet的编写、配置和运行;l  

李绪成的一亩三分地 4229

Oracle DG库手动注册归档日志的两种方法

有的时候由于网络或各种原因,Oracle DG库服务器上可能缺少部分归档日志文件,导致DG库的MRP进程一直处于状态。此时我们可以手动从主库或其他DG拷贝归档日志到当前DG服务器,并对日志文件进行手动注册。

Sebastien23的博客 729

基于 STM32 的智慧农业温室控制系统设计与实现

本文提出一种基于 STM32 微控制器的智慧农业温室控制系统设计方案,通过集成多类型环境传感器、执行机构及无线通信模块,实现对温室内温湿度、光照、土壤湿度等参数的实时监测与自动调控。文中详细阐述硬件选型、电路连接及软件实现流程,并附关键代码示例,为智慧农业领域提供低成本、高可靠性的温室控制解决方案。

weixin_42300449的博客 1927

详细介绍JSP技术的两种架构模型

运用JSP/Servlet实现的web动态交互,主要采用JSP和JavaBean模型还有JSP和JavaBean+Servlet模型。本文分别介绍这两种模型,并比较它们的优缺点。 一、JSP和JavaBean模型   其工作原理是:当浏览器发出请求时,JSP接收请求并访问JavaBean.若需要访问数据库或后台服务器,则通过JavaBean连接数据库或后台服务器,数据库培训执行相应的处理。Ja

u013776081的专栏 2403

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if...
下一篇: JSP培训(6)——使用Servlet作为控制器实现MVC模式
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值