JavaBean(web基础学习笔记十二)
一、JavaBean简介
- 可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP 页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。
- 可利用JavaBean的优点。将常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样一来也可以 节省开发所需的时间。
二、JavaBean开发要求
在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求:
- 所有的类必须放在一个包中,在WEB中没有包的是不存在的;
- 所有的类必须声明为public class,这样才能够被外部所访问;
- 类中所有的属性都必须封装,即:使用private声明;
- 封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法;
- 一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用。
三、WEB开发的标准目录结构

四、WEB项目中各个目录的作用
|
No.
|
目录或文件名称
|
作用
|
|
1
|
WEB ROOT
|
WEB的根目录,一般虚拟目录直接指向此文件夹,此文件夹下必然直接包含WEB-INF
|
|
2
|
WEB-INF
|
WEB目录中最安全的文件夹,保存各种类、第三方jar包、配置文件
|
|
3
|
web.xml
|
WEB的部署描述符
|
|
4
|
classes
|
保存所有的JavaBean,如果不存在,可以手工创建
|
|
5
|
lib
|
保存所有的第三方jar文件
|
|
6
|
tags
|
保存所有的标签文件
|
|
7
|
jsp
|
存放*.jsp文件,一般根据功能再建立子文件夹
|
|
8
|
js
|
存放所有需要的*.js文件
|
|
9
|
css
|
样式表文件的保存路径
|
|
10
|
images
|
存放所有的图片,例如:*.gif或*.jpg文件。
|
五、使用<jsp:useBean>指令
jsp:useBean 动作用来装载一个将在JSP 页面中使用的JavaBean。这个功能非常有用,因为它使得我们既可以发挥Java 组件重用的优势,同时也避免了损失JSP 的方便性。jsp:useBean动作最简单的语法如下。
<jsp:useBean id="name" class="package.class" scope="scope"/>
其中,id 用于创建 JavaBean 的引用名;class 用于指定 JavaBean 的类;scope 用于指定
JavaBean 的范围,默认情况下,scope 被设置为 page
范 围 说 明
- page JavaBean 只能在当前页面中使用。当加载新页面时就会将其销毁
- request JavaBean 在用户对其发出请求时存在
- session JavaBean 一直存在于会话中,直至其终止或被删除为止
- application JavaBean 在整个应用程序中均可使用
useBean 属性的使用如示例所示。
<jsp:useBean id="order" class="y2javaee.sg.ch07.Order" scope="request"/>
上述示例中代码的含义是:如果在scope 指定的范围内存在id 指定的对象,就返回该对象;
如果不存在,就创建一个class 属性指定的Java 类的对象,并保存在id 指定的变量内。在JSP
文件中,相当于:
<%@page import=" y2javaee.sg.ch07.Order"%>
<%
Order order = (Order)request.getAttribute("order");
if(order==null)
order=new Order();
%>
六、<jsp:setProperty>
setProperty 动作用于设置 useBean 中指定的 JavaBean 的属性值。setProperty 动作指定名称、属性、值和参数,用于赋给JavaBean 的属性。setProperty 动作的语法如下
<jsp:setProperty name="BeanName" property="PropertyName" value="Value"
param="Parameter" />
其中,name 指定 useBean 中使用的JavaBean 的id;property 指定要为之设置值的JavaBean 的属性名称;value 指定要为属性设置的值;param 指定用于输入数据的表单元素名称,并给属性赋值。
param 属性不能与 value 属性一起使用。
七、<jsp:forward>
<jsp:forward> 重定向一个HTML文件,JSP文件,或者是一个程序段.
JSP 语法
<jsp:forward page={"relativeURL" | "<%= expression %>"} />
or
<jsp:forward page={"relativeURL" | "<%= expression %>"} >
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />
</jsp:forward>
<jsp:forward page="/servlet/login" />
<jsp:forward page="/servlet/login">
<jsp:param name="username" value="jsmith" />
</jsp:forward>
描述
<jsp:forward>标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象.<jsp:forward>标签以下的代码,将不能执行.
你能够向目标文件传送参数和值,在这个例子中我们传递的参数名为username,值为scott,如果你使用了<jsp:param>标签的话,目标文件必须是一个动态的文件,能够处理参数.
属性
page="{relativeURL | <%= expression %>}"
这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL.这个文件可以是JSP,程序段,或者其它能够处理request对象的文件(如asp,cgi,php).
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+
向一个动态文件发送一个或多个参数,这个文件一定是动态文件.
如果你想传递多个参数,你可以在一个JSP文件中使用多个<jsp:param>。name指定参数名,value指定参数值.
注意
<jsp:forward>标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象。<jsp:forward>标签以后的代码,将不能执行。
八、动态包含和静态包含

JavaBean(web基础学习笔记十二)的更多相关文章
- JSTL 标签库 使用(web基础学习笔记十九)
标签库概要: 一.C标签库介绍 1.1.<c:> 核心标签库 JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:1.表达式控制标签:out.set.remove.catch2 ...
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
- 文件的上传Commons FileUpload(web基础学习笔记十六)
一.表单设置 <form action="<%=request.getContextPath()%>/jsp/admin/doAdd.jsp" enctype=& ...
- 页面可视化编辑ckeditor(web基础学习笔记十五)
一.CKedit下载ckedit 下载地址:http://ckeditor.com/ 二.ckedit的引入 2.1.解压并将ckedit复制到项目中 2.2.在页面中引入 在页面头部加入 <s ...
- Java中执行存储过程和函数(web基础学习笔记十四)
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- JSTL标签引入(web基础学习笔记十八)
一.JSTL包下载和引入 1.0.简介 JSTL全名为JavaServer Pages Standard Tag Library 1.1.下载包 下载地址:http://archive.apache. ...
- JDBC四(web基础学习笔记十)
一.增加 .修改.删除.查询 将功能整合在一个类中 package pb.base; import java.sql.Connection; import java.sql.DriverManager ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
随机推荐
- CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题
题意:求二分图的最大匹配数量 模版如下: //二分图匹配(匈牙利算法的DFS实现) //初始化:g[][]两边顶点的划分情况 //建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹 ...
- String对象池的作用
我们知道得到String对象有两种办法:String str1="hello";String str2=new String("hello"); 这两种 ...
- 由于拷贝的文件太大,不可能一直开着SHELL,所以让SCP后台运行
原文地址: http://blog.itpub.net/90618/viewspace-750822/ 1:开一个终端,scp命令运行后,输入密码让其拷贝 # scp chris@221.179.1. ...
- C#编程(十)----------C#预处理器
原文链接:http://blog.csdn.net/shanyongxu/article/details/46491757 C#中的预处理器指令 #IF 如果 C# 编译器遇到最后面跟有 #endif ...
- js 设置焦点 判断控件是否获得焦点 判断哪个控件获得焦点
设置焦点 <html> <head> <title>设置焦点</title> <mce:script language ="javasc ...
- 【docker】docker启动、重启、关闭命令,附带:docker启动容器报错:docker: Error response from daemon: driver failed programming external connectivity on endpoint es2-node
在关闭并放置centos 的防火墙重启之后[操作:https://www.cnblogs.com/sxdcgaq8080/p/10032829.html] 启动docker容器就发现开始报错: [ro ...
- 技术交流:DDD在企业开发的案例分享
背景 因为工作上的原因,这次技术交流准备的不够充分,晚上通宵写的演示代码,不过整个过程还是收获蛮大的,具体如下: 对原子操作有了更深入的了解,自己写的无锁循环队列(有点类似 RingBuffer)终于 ...
- Peter Norvig:学习在于挑战和重复
黄小非译注(本文来自伯乐在线):本文作者Peter Norvig目前任职于Google,其职位是研究主管(Director of Research). Peter Norvig是享誉世界的计算机科学 ...
- git跟踪远程分支,查看本地分支追踪和远程分支的关系
跟踪远程分支 如果用git push指令时,当前分支没有跟踪远程分支(没有和远程分支建立联系),那么就会git就会报错 There is no tracking information for the ...
- [翻译] DFXCoreTextView
DFXCoreTextView https://github.com/davefoxy/DFXCoreTextView A CoreText wrapper for the formatting an ...