- 浏览: 79802 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
一辈子的咲子推:
其实很多学生考试不及格未必就是不学习,太多学生把大学几年时间全 ...
真的不想监考 -
jackroomage:
看错了,你写的没有问题。sorry!!!
Java Web实践专题——访问路径问题 -
jackroomage:
<a href="./../bb/b_a.js ...
Java Web实践专题——访问路径问题
目标:
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程序设计基础教程》
发表评论
-
网页之间共享值
2007-03-19 13:49 454Web应用是由大量的网页组成的,运行的基本原理是:用户通过客 ... -
Java Web实践专题——Eclipse中CVS的使用
2007-03-19 14:50 603CVS概述 主要作用是管理代码的版本,尤其是多人协同开发的时 ... -
Eclipse中Web应用的开发
2007-03-30 09:35 507Eclipse中Web应用的开发 应用服务器:tomcat ... -
MVC模式在Java Web中的应用
2007-04-21 22:06 396流行的Java Web应用框架基本上都实现了MVC模型,下面分 ... -
Tomcat中连接池的配置和使用
2007-04-27 13:19 465对于大型网站来说,信 ... -
WebLogic中连接池错误Failed to Generate Wrapper Class的解决方案
2007-05-01 13:25 543很多人在使用Weblogic配置连接池之后,会碰到这样一个 ... -
Sun Java System Appliation Server中连接池的配置
2007-05-01 14:16 5011、准备驱动程序 把 ... -
Java Web中的分页显示——通过界面实现
2007-05-04 23:11 670在界面完成分页控制, ... -
Java Web中的分页显示——在模型中实现
2007-05-04 23:25 465在模型中实现分页显示,主要是在把查询的结果集转换成对象集合的 ... -
NetBeans中的几个快捷方式
2007-06-15 12:38 507几个比较常用的方便代码编写的功能如下: 1、引入用到的类 ... -
最好的Java Web开发的书应该是什么样子?
2007-06-20 14:50 687关于Java Web开发的技术非常多,JSP、Servet、J ... -
JSP培训(1)——概述
2007-08-21 08:35 520本文是JSP培训的笔记,是培训的第一次——概述。 (参考 ... -
JSP培训(2)——运行原理、文档结构、简单输入输出
2007-08-23 09:16 602目标: l 掌握Web应用的文档结构; l 掌握JSP ... -
JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
2007-08-30 09:49 512目标: l 掌握客户端验证的基本过程; l 掌握 ... -
JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if
2007-08-30 09:55 768目标: l 进一步体会JSP应用; l 掌握表达 ... -
JSP培训(6)——使用Servlet作为控制器实现MVC模式
2007-09-04 13:38 614目标: l 初步理解MVC ... -
JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
2007-09-04 13:43 537目标: l 掌握JDBC链接数据库的基本过程; l 掌 ... -
JSP培训(8)——添加功能和分页显示
2007-09-04 13:46 577学习目标: l 进一步掌握MVC设计模式; l 掌握添 ... -
JSP连接Microsoft SQL Server出错:Error establishing socket解决方法
2007-09-06 14:09 500安装SQL Server的补丁即可。 安装的时候需要注意:第 ... -
JSP培训(9)——使用MVC模式完成删除和修改功能
2007-09-10 15:43 657目标: l 进一步理解MVC模式; l 掌握删除功能的 ...
相关推荐
在这个项目里,Java Servlet充当控制器(Controller),负责处理用户的请求并调用相应的模型(Model)——也就是JavaBean,来执行业务逻辑。然后,Servlet会将处理结果转发给视图(View)——即JSP页面,由JSP负责...
9-5 jspSmartUpload ——上传和下载 9-6 本文区输入类型(Textarea) 第十章 Session Tracking 10-1 Stateful & Stateless 10-2 Session Tracking 的四种方法 10-3 Session 的生命周期 10-4 ...
5.3.5 使用Servlet处理业务逻辑 5.3.6 掌握Servelet处理流程 5.3.7 Eclipse快速创建Servlet 5.4 一夫当关——配置并应用Servlet过滤器 5.4.1 过滤器的基本原理 5.4.2 过滤器的核心API 5.4.3 过滤器的创建与配置 ...
第6章 JSP——前后台更好地分离 79 6.1 JSP的概念 79 6.2 JSP页面的组成 80 6.2.1 JSP的指令元素 82 6.2.2 JSP的脚本元素 83 6.2.3 JSP的标准动作元素 85 6.2.4 JSP中的内置对象 87 6.3 实例——利用...
7.5.2RandomAccessFile类使用示例——文件加密256 7.6控制台输入和输出257 7.6.1控制台输入类Scanner257 7.6.2格式化输出printf258 7.7序列化261 7.8本章小结264 第4篇Java中的高级技术 第8章Java的多线程...
此外,还要考虑开发人员的水平,学习了两年的jsp开发,对于这个系统的编写,我想完整的之需要两个月就可以写出程序,再花上几天的调试,计划两个月左右就可以完成投入使用了。 我们掌握了数据库及其应用技术、...
12.4.1 在JSP中使用JavaBean 12.4.2 自动类型转换 12.4.3 创建和部署JDBC LoginBean 12.5 小结 第13章 使用PreparedStatement和CallableStatement 13.1 创建和使用PreparedStatement 13.1.1 创建...
12.4.1 在JSP中使用JavaBean 12.4.2 自动类型转换 12.4.3 创建和部署JDBC LoginBean 12.5 小结 第13章 使用PreparedStatement和CallableStatement 13.1 创建和使用PreparedStatement 13.1.1 创建...
12.4.1 在JSP中使用JavaBean 12.4.2 自动类型转换 12.4.3 创建和部署JDBC LoginBean 12.5 小结 第13章 使用PreparedStatement和CallableStatement 13.1 创建和使用PreparedStatement 13.1.1 创建...
12.4.1 在JSP中使用JavaBean 12.4.2 自动类型转换 12.4.3 创建和部署JDBC LoginBean 12.5 小结 第13章 使用PreparedStatement和CallableStatement 13.1 创建和使用PreparedStatement 13.1.1 创建...
随着 Internet的发展,广大互联网用户对Web站点的需求越来越多样化,传统的网页设计模式——静态页面设计已经远远不能满足用户的要求。这时,用户希望自己的Web站点...为此我设计了一个JSP+Servlet+JavaBean网上书店系统。
第20章 网上宠物商店(JSP+JavaBean) 342 20.1 系统需求分析与概要设计 342 20.1.1 系统需求分析 342 20.1.2 系统模块划分 342 20.2 数据库设计 344 20.3 使用MyEclipse创建项目 347 20.4 系统公共模块的实现 348 ...
在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等...
此外,还要考虑开发人员的水平,学习了两年的jsp开发,对于这个系统的编写,我想完整的之需要两个月就可以写出程序,再花上几天的调试,计划两个月左右就可以完成投入使用了。 我们掌握了数据库及其应用技术、...
《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用...
《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用...