jsp:useBean、jsp:setProperty、jsp:getProperty的使用
什么是JavaBean?
JavaBean 是开发语言中一个可以重复使用的软件组件,它本质上就是一个java类,为了规范JavaBean的书写,它也有一定的规范,它要求一个标准的JavaBean组件需要遵循一定的编码规范,具体如下:
(1)必须有一个公共的、无参的构造方法;
(2)它提供公共的setter和getter方法,让外部程序设置和获取JavaBean的属性;
在eclipse中编写JavaBean十分的方便,可以通过在输入属性后,通过右击选择source中的功能实现,具体如下图:
利用JavaBean创建对象
<jsp:useBean id=“xxx” scope=“session” class=“接口”/>,会话级bean,说明此bean的有效期是session级别的,在同一个session的页面中,可用共享这个实例,引用 scop作用域的类,并赋名称是id;
<jsp:useBean id=“customer” class=“com.servlet.CustomerBean” scope=“session”>引用 com.servlet.CustomerBean类,并赋名称是customer
<jsp:setProperty name=“customer” property="*"/>把一个叫做customer的bean的所有和request请求参数名相同的属性赋值
</jsp:useBean>
<jsp:getProperty name=“customer” property=“custName”/>
动态访问Java对象的属性——BeanUtils对象
BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。
熟练掌握以上三个方法对灵活运用JavaUtil工具尤其重要,下面通过一个例子熟悉这三个方法:
Person.java
public class Person {
private String name;
private int age;
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;
}
}
BeanUtilsDemo.java
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
public class BeanUtilsDemo {
public static void main(String[] args) throws Exception {
Person p = new Person();
// 使用BeanUtils为属性赋值
BeanUtils.setProperty(p, "name", "Jack");
BeanUtils.setProperty(p, "age", 10);
// 使用BeanUtils获取属性值
String name = BeanUtils.getProperty(p, "name");
String age = BeanUtils.getProperty(p, "age");
System.out.println("我的名字是" + name + ",我今年" + age + "岁了!");
// 创建map集合,用于存放属性及其属性值
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "张三");
map.put("age", 10);
// 使用populate()方法为对象的属性赋值
BeanUtils.populate(p, map);
// 打印赋值后对象的信息
System.out.println("姓名:" + p.getName() + ", 年龄:" + p.getAge());
}
}
EL表达式
为了简化JSP页面的书写,掌握EL是相当重要的。
EL语法:
${表达式}
下面通过一个例子来具体了解一下:
MyServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("username", "itcast");
request.setAttribute("password", "123");
RequestDispatcher dispatcher = request
.getRequestDispatcher("/myjsp.jsp");
dispatcher.forward(request, response);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
myjsp.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head></head>
<body>
用户名:<%=request.getAttribute("username")%><br />
密 码:<%=request.getAttribute("password")%><br />
<hr>
使用EL表达式:<br />
用户名:${username}<br />
密 码:${password}<br />
</body>
</html>