http://zhaoyuqiang.blog.51cto.com/6328846/1134056
没有javaBean的jsp就等于没有学过jsp。 其实从javaBean开始就已经进入了MVC模式的学习了。那么什么是javaBean。
大家还记得在jsp+jdbc连接数据库的时候吧。只要是需要连接数据库的页面都会写那些关于数据库连接的代码,那么多页面都在写重复的代码。那么有没有一种方法把每个页面重复的代码提取出来放到一个公共页面中,然后每个页面去访问这个页面。这样就避免了在每个页面中写重复代码的操作了。 答案肯定是有的,那个公共的页面就是javaBean。
javaBean简介
javaBean是使用java语言开发的一个可重用的组件,在jsp的开发中可以使用javaBean减少重复代码,使整个jsp代码的开发更简洁。比如:
1. 可以将HTML和java代码分离,这样就能实现项目的团队合作性。使代码清晰可辨
2.避免重复代码的书写,将常用的程序写成javaBean组件。
javaBean是什么?
上面已将说过了,把每个页面重复的代码提取出来放到一个公有的页面中,而这个页面就是我们说的javaBean。那么这个页面是什么呢?就是.java文件。就是在学习java的时候大家建的那个.class。如下图:在开发工具中的黄色区域 SimpleBean.java其实就是一个javaBean,而我们的项目是javaBean_01.jsp,javaBean_01.jsp会调用SimpBean里面的内容。
对于javaBean有几个名词希望大家知道:
VO:值对象,存放所有的数据的。
POJO:简单java对象
TO:传输对象,一个类必须实现Serializable接口才能称为传输对象。
操作javaBean
对javaBean代码的要求是一个重点。javaBean本身就是一个类,属于java的面向对象编程,属于javaSE的范畴。在jsp中如果要应用jsp提供的javaBean的标签来操作简单类的话,则此javaBean必须满足以下要求:(重点记住)
1. 所有的类必须放在一个包中,在WEB中没有包是不存在的。比如:SimpleBean.java放在了javaBean01的包中。
2.所有的类必须声明为public class,这样才能够被外部调用。public class SimpleBean(){}
3.类中所有的属性都必须封装,也就是使用private。 private String name;
4. 封装的属性如果需要背外部所操作,则必须编写对应的setter、getter方法;
5. 一个javaBean中至少存在一个无参构造方法,此为jsp中的标签所使用。
明白了上述要求后,我们就来写一个javaBean看看要求如何。
- SimpleBean.java
- package javaBean01; //必须放在包中
- public class SimpleBean {
- private String name; //必须封装
- private int age;
- public SimpleBean(){ //无参构造方法
-
- }
- public void setName(String name){
- this.name=name;
- }
- public void setAge(int age){
- this.age=age;
- }
- public String getName(){
- return this.name;
- }
- public int getAge(){
- return this.age;
- }
- }
既然有javaBean 了,那我们的javaBean_01.jsp怎么写,怎么调用里面的name和age呢?我们再来做一个javaBean_01.jsp。再做这个页面之前我们先来学习一个指令:<jsp:useBean>
使用<jsp:useBean>指令
这个指令是jsp提供的,关于这个指令的语法如下:
<jsp:useBean id="实例化对象名称" scope="保存范围" class="包.类名称"/>
主要属性
id: 表示实例化对象的名称;
scope:表示此对象保存的范围,一共有四种:page、request、session和application
class:对象所对应的包.类名称;
知道了指令的使用了,我们的这个javaBean_01.jsp就可以利用这个指令来做了。
- javaBean_01.jsp
- <%@ page language="java" contentType="text/html" pageEncoding="gbk" %>
- //使用指令
- <jsp:useBean id="simple" scope="page" class="javaBean01.SimpleBean"/>
- <html>
- <head>
- <title>web开发</title>
- </head>
- <body>
- <%
- simple.setName("赵玉强");
- simple.setAge(22);
- %>
- <h3>姓名:<%=simple.getName() %></h3>
- <h3>年龄:<%=simple.getAge() %></h3>
- </body>
- </html>
运行一下就得到如下结果:

<jsp:useBean id="simple" scope="page" class="javaBean01.SimpleBean"/>
在使用这个标签的时候,id的值相当于实例化了一个对象。class正是我们的包.类名称,实际上在使用以上标签的时候,都会自动调用javaBean中的无参构造方法,所以之前才会有一个无参构造方法。
关于id实例化对象,为什么通过这样一个id就能对象实例化呢?大家应该想到了,它存在了包.类名称,还要求有无参构造方法。没错,这是java中的反射机制。对于反射机制就不多说了。
注意: 当javaBean也就是SimpleBean.java这个页面修改后,一定要重启服务器,否则不会显示修改内容。
关于路径问题
操作的路径是一个很重要的问题,虽然大部分的人士喜欢用开发工具来开发程序,但是这个保存的路径依然是非常重要的,可以说如果你连程序在tomcat里面哪运行都不知道的话,你真是....无敌了
先来了解一下tomcat
打开tomcat文件夹,打开webappls,打开自己的项目;

在项目底下有如上图所示的结构,jsp是jsp页面,js是javascript小脚本,css是样式,images是图片存放区,index.jsp一般作为主页面显示。WEB-INF里面的lib是存放jar包的,classes是存放.java文件的。
大家在学习java的时候应该都知道,.java文件必须编译成*.class文件才能使用。javaBean本身世一个*.java文件,那么它被编译成*.class文件后放在哪儿呢? 就放在上图中的classes中,打开这个文件夹,可以看到一个javaBean01的文件夹,这个文件夹实际上是SimpleBean.java的包。这个文件里面才是*.class文件,也就是我们的SimpleBean.java。
实际上在WEB-INF中的lib和classes文件夹相当于一个默认的classpath,classpath是类执行时所需要的一个重要的环境变量属性,当Tomcat启动后,WEB-INF的lib和classes都会自动配置到classpath中。
注意:
1. 一定要理解好javaBean的本质属性,其实它就是我们学java时的.java文件
2. 一定要掌握javaBean的要求。
3. 一定要牢记<jsp:useBean>指令的用法。
4.<jsp:useBean>指令是最常用的一种方法而不是唯一的方法