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

Java超市采购管理系统设计与实现:进销存数据库到JSP全流程 从B/S架构与JSP/JavaBean技术出发,梳理三层结构下浏览器、服务器与数据库的分工协作原理,强调业务逻辑与表示层分离的工程价值。在此基础上,聚焦进销存系统中最核心的数据库设计环节,结合SQL Server实践,展示从E-R图推导至六张核心业务表的完整过程,说明主外键约束、decimal金额类型选择等关键设计对数据一致性与报表精度的影响。此类以数据库为骨架、以JSP页面为交互入口的经典JavaWeb项目,是超市采购管理系统从需求分析到落地实现的典型路径,其模块划分与事务处理思路同样适用于毕业设计或中小 阅读详情
 
目标:
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实现+MySQL 数据库) 这是本人在做课程设计的时候写的用Java实现商品信息管理系统的代码,具体信息请看本人博客,博客地址https://blog.youkuaiyun.com/vegetable_haker/article/details/102556311,其中MySQL数据库需要根据本地配置做些修改 (本人菜鸟一枚,代码是几年前课设时写的,现在学的知识都交还给老师了,所以有什么问题的话,不要问我,我也不知道~ . ~,仅供学交流使用,有诸多不完善的地方,介意请谨慎下载) 立即下载

相关推荐

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

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

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

OneNET物联网平台实战:从零搭建到双向数据通信测试

本文提供了一份详细的OneNET物联网平台实战指南,从零开始讲解平台搭建与设备创建,并重点演示了如何通过MQTT协议实现设备数据上报与云端命令下发的双向数据通信测试。通过模拟设备连接与数据交互,帮助开发者快速理解物联网核心通信流程。

weixin_29306571的博客 352

JavaBean实验

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

weixin_51066144的博客 2125

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 616

从零构建OpenBMC风扇控制:基于phosphor-pid-control的实战配置指南

本文详细介绍了如何从零开始构建OpenBMC风扇控制系统,基于phosphor-pid-control框架实现风扇自动调速。通过解析PID算法配置、传感器定义及控制区域设置,提供工业级散热解决方案,帮助开发者优化服务器能效与可靠性。

weixin_29263201的博客 751

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

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

Blessed_的博客 579

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一小程序源码

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一系统 系统特点: 目前已接入的 CPS 渠道: 充值:话费充值、电费充值、影视会员充值、会员卡券充值 本地团购:联联周边游 电商平台:京东、拼多多、唯品会、淘宝、抖音美团:外卖、闪购、酒店、到店、优选饿了么:外卖、商超 出行服务:滴滴打车、滴滴加油、滴滴货运、花小猪打车、高德打车、同程打车 连锁餐饮点餐:肯德基、麦当劳、百果园、奈雪的茶、瑞幸咖啡、星巴克、喜茶、汉堡王、必胜客电影票:特价电影票 注意:以上涉及到需要支付的 CPS 渠道,不需要预存!

qq_41837379的博客 3113

实验三JavaBean技术

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

云卷云舒 2751

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

本文介绍如何在高速通信情况下解决串口接收的数据来不及处理的问题,由高级工程师多年经验总结而成,绝对是串口领域的实战经验!

qq_34059233的博客 6814

什么是数据挖掘?数据挖掘到底在解决什么问题?

本文我将借助5W1H的思想来带你从整体上了解一下数据挖掘。比如什么是数据挖掘为什么要做数据挖掘在哪些场景下用数据挖掘怎么做数据挖掘第一个问题,什么是数据挖掘?这个问题看似很简单,但似乎也很难有一个明确的答案。如果非要给数据挖掘一个定义的话,那么我认为数据挖掘就是寻找数据中隐含的知识,并用于产生商业价值。也就是说它是我们在数据中,尤其是在大量的数据中找到一些有价值,甚至是非常有价值的东西的一种手段。

m0_64336780的博客 1万+

在JSP页面中应用JavaBean实训报告

在JSP页面中应用JavaBean实训报告 在JSP页面中应用JavaBean实训

weixin_48864837的博客 3337

ElectrolyteGPT:首个电池电解液逆向设计的生成式 AI 系统 —— 算法原理与复现解析

数据驱动的重要性:1100 万→100 万的精心筛选,比单纯增大模型更有效领域适配:fLine 表示法、正则分词、化学感知的数据增强(SMILES randomization)都是关键小模型的力量:6M 参数在特定化学空间的表现,远超通用大模型在相同任务上的零样本能力条件生成的极限:10 维条件导致模型崩溃,提示我们需要更好的条件编码策略(如 diffusion guidance、RLHF-style 偏好优化)未来方向配方实验验证。

ASKCOS博客 124

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

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

我思故我在 533

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

李绪成的一亩三分地 4229

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

u013776081的专栏 2403

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值