7.1 简介
JavaBean是一种java类,通过封装属性和方法,从而成为具有某种功能或处理某种业务的对象。而是实际的使用过程中,我们往往使用它作为实体类,用来存数据,当然我们也可以在setxx()方法中定义一些操作,用来执行某些功能。
7.2 JavaBean的使用
7.2.1 创建UserBean类
public class UserBean {
private String name;
private int age;
private String gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
特点就是,属性私有化,通过公共的set()与get()方法为每一个属性进行赋值与取值操作
7.2.2 JSP页面使用
首先是赋值:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="userBean" class="com.cloud.bean.UserBean" scope="page"/> //页面插入标记符,指定JavaBean
<html>
<body>
<jsp:setProperty name="userBean" property="name" value="张三"/> //设置JavaBean里面的name属性值
<jsp:setProperty name="userBean" property="age" value="30"/> //设置JavaBean里面的age属性值
<jsp:setProperty name="userBean" property="gender" value="男"/> //设置JavaBean里面的性别属性值
</body>
</html>
取值:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="userBean" class="com.cloud.bean.UserBean" scope="page"/>
<html>
<body>
<jsp:setProperty name="userBean" property="name" value="张三"/>
<jsp:setProperty name="userBean" property="age" value="30"/>
<jsp:setProperty name="userBean" property="gender" value="南"/>
姓名:<jsp:getProperty name="userBean" property="name"/><br> //取出我们存的值
性别:<jsp:getProperty name="userBean" property="gender"/><br> //取出我们存的值
年龄:<jsp:getProperty name="userBean" property="age"/><br> //取出我们存的值
</body>
</html>
7.3 语法
JavaBean的使用分成四部分:创建Bean、页面声明要使用的Bean、给Bean赋值、取值。
7.3.1 创建Bean
public class TestBean{
private String var1; //类型是可以变换的
public void setVar1(String var1){
this.var1=var1; //除了直接赋值,一般这里面可以定义一些操作,
}; //比如根据出生年月计算出年龄
public String getVar1(){
return this.var1;
}
}
7.3.2 声明要使用的Bean
<jsp:useBean id="随便取个名字" class=“Bean的路径” scope="作用域"/>
scope的取值:
- page:说明该JavaBean仅在当前页面有用,不可以在其他页面调用。
- request:说明在该页面以及本页面的请求中有用,请求结束,就没了。
- session:不关闭浏览器,用户自己就可以使用自己的。
- application:同一服务目录下,用户共享。
其实跟jsp内置对象的作用域一样。
7.3.3 为Bean赋值
<jsp:setProperty name="刚才取的名字" property="Bean里面的属性" value="具体的值"/>
<--value的值也可以为<%= %>,或者 * ,* 表示全部-->
7.3.4 获取Bean的值
<jsp:getProperty name="刚才取的名字" property="Bean里面的属性"/>
7.4 补充
我们在使用的时候,也会从servlet传JavaBean给JSP,那么我们则需要使用setAttribute(String key,Stirng value)方法来进行传递。
servlet代码
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf8");
resp.setContentType("text/html");
UserBean userBean = new UserBean();
userBean.setAge(12);
userBean.setName("李四");
userBean.setGender("男");
req.setAttribute("userBean",userBean); //我们在req里面存了一个名叫userBean的Bean
req.getRequestDispatcher("test.jsp").forward(req,resp);
}
}
JSP取值:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="userBean" class="com.cloud.bean.UserBean" scope="request"/> //这里的id必须与
<html> //setAttribute里的一致
<head>
<title>测试页面</title>
</head>
<body>
姓名:<jsp:getProperty name="userBean" property="name"/><br> //这里也是,不然找到刚才存入的值
性别:<jsp:getProperty name="userBean" property="gender"/><br>
年龄:<jsp:getProperty name="userBean" property="age"/><br>
</body>
</html>
EL表达式取值:
上述代码我们也可以这样
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试页面</title>
</head>
<body>
姓名:${userBean.name}<br>
性别:${userBean.gender}<br>
年龄:${userBean.age}<br>
</body>
</html>
注意: servlet有四大作用域:pageContext<request<session<serveltContext,因此当EL表达式寻值的时候,会先从最小的作用域开始找。并且Attribute理论上来说,其实就是双列集合,所以是不会存在key相同的情况的。
写在最后,由于JSP已经是一门落后的技术了,所以实际使用中并不多,除了一些在校大学生以外,很少有人会这样使用JavaBean,而更多的使用实体类。在Spring的开发中,往往是做数据库的映射,就是有多少张表就建多少个实体类,并把里面的属性定义出来,使用set与g