javaBean

本文详细介绍了JavaBean的概念,编码规范,包括必须具备的无参构造方法和setter/getter方法。通过示例展示了如何定义及使用JavaBean属性。此外,文章还探讨了Apache BeanUtils工具的使用,并讲解了在JSP开发中EL表达式的应用,如EL隐式对象,如pageContext、param、paramValues、cookie等,以及它们在访问不同Web域对象中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaBean是java开发语言中一个可以重复利用的软件组织,它本质就是一个java类。
编码规范:
1.必须具有一个公共的无参的构造方法,这个方法可以是编译器自动产生的默认构造方法
2.提供公共的setter方法和getter方法,让外部程序设置和获取javaBean的属性
例子:

package chapter07;

public class Book {
private double price;
public double getPrice() {
	return price;
	
}
public void setPrice(double price) {
	this.price=price;
}
}

JavaBean的属性
Javabean中的属性和成员变量不是一个概念,它是以方法定义的形式出现,方法必须遵循一定的命名规范,列如在Javabean中包含一个String类型的属性name,那么在Javabean中至少包含getName()和SetName()方法中的一个,方法如下所示:

public String getName(){

}
public void setName(String name){

}

javaBean属性有一个例外情况。如果属性的类型为boolean类型的属性married,该属性所对应的方法声明如下:

public boolean isMarried(){

}
public void setMarried(boolean married)(

)

例子:

package cn.itcast.chaptr07.javabean;

public class Student {
   private String id;
   private String name;
   private int age;
   private boolean married;
   public int getAge() {
	return age;
	   
   }
   public void setAge(int age) {
	   this.age=age;
   }
  public boolean isMarried() {
	return married;
	  
  }
  public void setMarried(boolean married) {
	  this.married=married;
  }
   public String getID() {
	   return id;
   }
   public void setName(String name) {
	   this.name=name;
   }
   public void getInfo() {
	   System.out.println("我是一个学生");
   }
}

BeanUtils工具
需要下载commons-beanutils-1.9.2.jar,commons-logging-1.2.jar并解压到项目的lib目录下
创建一个Person类用于提供外界访问

package cn.itcast.chapter07.beanutils;

public class Person {
   private String name;
   private int age;
   private 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类,在类中使用BeanUtils类的常用方法

package cn.itcast.chapter07.beanutils;

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.setProperty(p, "name", "Jack");
	BeanUtils.setProperty(p,"age",10);
	String name=BeanUtils.getProperty(p,"name");
	String age=BeanUtils.getProperty(p,"age");
	System.out.println("我的名字叫" + name + "我今年" + age + "岁了!");
	Map<String, Object>map=new HashMap<String, Object>();
	map.put("name","张三");
	map.put("age", 10);
	BeanUtils.populate(p, map);
	System.out.println("姓名:" + p.getName() + ",年龄" + p.getAge());
}
}

El表达式
在jsp开发中。为了获取Servlet域对象中储存的数据,经常需要书写很多java代码,这样的做法会使jsp页面混乱,难以维护为此,在jsp2.0规范中提供了EL表达式。
创建一个存储用户名和密码的类MyServlet

package cn.itacst.chapter07.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class myservlet {
public void deoGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
request.setAttribute("username", "liujie");
request.setAttribute("password", "123");
RequestDispatcher dispatcher=request.getRequestDispatcher("/myjsp.jsp");
dispatcher.forward(request, response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
	deoGet(request,response);
}
}

编写了一个名为myjsp.jsp文件用来输出MyServlet所存储的信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
2020080605010 刘杰<br/>
用户名:<%=request.getAttribute("username") %><br/>
密码:<%=request.getAttribute("password") %><br/>
<hr />
使用EL表达式:<br/>
用户名:${username}<br/>
密码:${password}<br/>
</body>
</html>

运行结果:
在这里插入图片描述
EL隐式对象
EL表达式中定义了11个隐式对象,使用这些隐式对象可以很方便地读取到Cookie、HTTP请求消息头字段、请求参数、
Web应用程序中的初始化参数的信息,EL表达式中的隐式对象具体如下:

隐式对象 作用
pageContext 对应于JSP页面中的pageContext对象
pageScope 代表page域中用于保存属性的Map对象
requestScope 代表request域中用于保存属性的Map对象
sessionScope 代表session域中用于保存属性的Map对象
applicationScope 代表application域中用于保存属性的Map对象
param 表示一个保存了所有请求参数的Map对象
paramValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数, 返回的是一个string类型数组
header 表示一个保存了所有http请求头字段的Map对象
headerValues 表示一个保存了所有http请求头字段的Map对象,返回string类型数组
cookie 表示一个保存了所有cookie的Map对象
initParam 表示一个保存了所有web应用初始化参数的map对象

pageContext对象
EL表达式中的pageContext隐式对象与JSP页面中的pageContext对象相对应,EL表达式可以通过pageContext隐式
对象访问其它JSP隐式对象,如访问request、response对象属性时,可以使
表达式:

${pageContext.response.characterEncoding}

例子:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
请求URI为:${pageContext.request.requestURI}<br/>
Context-Type响应头:${pageContext.response.contentType}<br/>
服务器信息为:${pageContext.servletContext.serverInfo}<br/>
Servlet注册名为:${pageContext.servletConfig.servletName}<br/>
</body>
</html>

运行结果:
在这里插入图片描述

web域相关对象
例子:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
pageContext.setAttribute("page","PAGE");
request.setAttribute("dashuju","REQUEST");
session.setAttribute("session","SESSION");
application.setAttribute("app1", "APPLICATION");
%>

表达式\${pageScope.page}的值为:${pageScope.page}<br/>
表达式\${requestScope.dashuju}的值为:${requestScope.dashuju}<br/>
表达式\${sessionScope.session}的值为:${sessionScope.session}<br/>
表达式\${applicationScope.app1}的值为:${applicationScope.app1}<br/>
</body>
</html>

运行结果:
在这里插入图片描述
param和paramValues对象
例子

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body style="text-align:center;">
<form action="${pageContext.request.contextPath}/param.jsp">
num1:<input type="text" name="num1"><br />
num2:<input type="text" name="num"><br />
num3:<input type="text" name="num"><br />
<input type="submit" value="提交" />&nbsp;&nbsp;
<input type="submit" value="重置" /><hr />
num1:${param.num1}<br />
num2:${paramValues.num[0]}<br />
num3:${paramValues.num[1]}<br />
</form>
</body>
</html>

运行结果:
在这里插入图片描述
cookie对象
例子:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
2020080605010 刘杰<br/>
<% response.addCookie(new Cookie("username","刘杰")); %>
获取Cookie对象${cookie.username }<br/>
获取Cookie对象名字${cookie.username.name}<br/>
获取Cookie对象值${cookie.username.value }

</body>
</html>

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值