一、什么是javaBean
javaBean是Java开发语言中一个可以重负使用的软件,它的本质上就是一个Java类。
javaBean组件要遵循一定的编码规范:
(1)它必须具有一个公共的、无参的构造方法
(2)它提供公共的setter方法和getter方法,让外部程序设置和获取javaBeanh的属性。
package cn.itcast.chapter07.javabean; public class book { private double price; public double getPrice() { return price; } public void setPrice(double price) { this.price =price; } }
访问javaBean的属性
在讲解面向对象时,经常会使用类的属性,类的属性指的是类的成员变量。在JavaBean 中同样也有属性,但是它和成员变量不是一个概念,它是以方法定义的形式出现的,这些方法 必须遵循一定的命名规范。
getName()方法:称为getter方法或者属性访问器
setName()方法:称为setter方法或者属性修改器
如果一个属性只有getter方法,则该属性为只读。如果一个属性只有setter方法,则该属性为只写。如果一个属性即有getter方法,又有setter方法,则该属性为读写属性。
package cn.itcast.chapter07.javabean; public class Studet { private String sid; private String name; public Studet() { } public String getId() { return sid; } public void setId(String id) { this.sid = id; } public void setName(String name) { this.name = name; } public void getInfo() { System.out.print("大家好"); } }
BeanUtils 工具
大多数Java程序开发人员过去习惯于创建JavaBean,然后通过调用JavaBean 属性对的getter和setter方法来访问属性。但是,由于各种Java工具和框架层出不穷,并不能保正性对应的getter和seter方法总能被调用,因此,动态访问Java对象的属性是十分必要的。此,Apache软件基金会提供了一套简单、易用的API——BeanUtils工具。掌握它的使用将有助于提高程序的开发效率。本节将针对BeanUtils工具的相关知识进行详细的讲解。
BeanUtils类的常用方法
1)在chapter07项目的lib 目录中添加已下载的commons-beanutils- 1.9.2.jar和Logging的JAR包commons -logging-1.2.jar,并将这两个JAR包发布到类路径中。
(2)在项目的src 目录下创建一个名为cn.itcast.chapter07 的包,在包下创建Person类,Person类中定义了name和age两个属性,并提供了对应的getter方法和setter方法供外界访问这两个属性
package cn.itcast.chapter07.beanutils; 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; } public person() { super(); } public String toString() { return"Person[name="+name +",age="+ age +"]"; } }
package cn.itcast.chapter07.beanutils; import java.io.*; import java.util.HashMap; import java.util.Map; import javax.servlet.*; import javax.servlet.http.*; import com.sun.net.httpserver.HttpServer; public abstract class MyServlet extends HttpServer{ private static final long serialVersionUID =1l; protected void doGet (HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { person p =new person(); p.setName("yanmin"); Map<String,String> map =new HashMap<String,String>(); map.put("my-name","map的值"); request.setAttribute("uesr",null); request.setAttribute("person",p); request.setAttribute("username","yanmin"); request.setAttribute("password","123") ; RequestDispatcher dis = request .getRequestDispatcher("/myjsp.jsp"); dis.forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { doGet(request, response); } }
<%@ 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> <%=(String) request.getAttribute("person")%><br/> <%=(String) request.getAttribute("username")%><br/> <%=(String) request.getAttribute("password")%><br/> <br/> ---------------------------------<br/> ----------${ username}<br/> -----------$(黄家驹)<br/> </body> </html>
运行结果:
二、EL表达式
初识EL
EL可以简化JSP页面的书写,因此,在JSP的学习中,掌握EL是相当重要的。使用EL表达式,首先学习语法,EL表达式的语法非常简单,都是以“”${“开始,以”}“”结束的。
EL中的标识符
1、不能以数字开头
2、不能是EL中的保留字,如and、or、gt。
3.不能使用el表达式的隐式对,如pageContext。
4.不能包含特殊符号,比如正斜杠等
EL中的保留字
保留字就是编程语言里事先定义好并赋予了特殊含义的单词。和其他语言一样,EL表达式中也定义了许多保留字,如false、not等,接下来就列举EL中的所有保留字。
EL中的变量
EL表达式中的变量就是一个基本的存储单元,EL表达式可以将变量映射到一个对象上。
EL中的常量
EL表达式中的常量又称字面量,它是不能改变的数据。
(1)布尔常量:
布尔常量用于区分一个事物的正反面,它的值只有两个,分别是TRUE和false
(2).数字常量:整型、浮点常量,使用方式和java差不多
(3)字符串常量:使用方式和java差不多,比如: " e l 的 字 符 串 常 量 "
(4) N u l l 常 量 : {“el的字符串常量”} 4.Null常量: "el的字符串常量"4.Null常量:{null}
EL的运算符
EL表达式中的运算符
EL中的运算符
1.点运算符:获取域对象中属性的值。`
${customer.name}
2.方括号运算符(【】)
在域对象里,有的属性包含特殊字符,所以用方括号的方式来获取值
<% Map<String,String> map= new HashMap<String,String>(); map.put("my-name","map的值"); request.setAttribute("user",map); %> ${user["my-name"] }
3.算术运算符
EL表达式中的算术运算符用于对整数和浮点数的值进行运算
4.比较运算符
EL表达式中的比较运算符用于比较两个操作数的大小,操作数可以是各种常量、EL变量或EL表达式,所有运算符执行的结果都是布尔类型
1.比较运算符中的“==”是两个等号,千万不可只写一个等号。
逻辑运算符
EL表达式中的逻辑运算符用于对结果为布尔类型的表达式进行运算运算的结果仍为布尔类型。
<%@ 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> <form action="$(pageContext.request.contextPath )/ param.jsp" method="get"> 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="提交"/> <inputtype="reset" value="重填"/><hr/> num1:${param.num1} <br/> num2:${ paramValues.num[0] }<br/> num3:${paramValues.num[1]}<br/> </body> </html>
<%@ 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> <% response.addCookie(new Cookie("username","YANMIN")); %> 获取cookie对象:${cookie.username} <br/> 获取cookie对象名字:$ {cookie.username.name} <br/> 获取cookie对象值:${cookie.username.value} <br/> </body> </html>