栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaBean和EL表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaBean和EL表达式

学习目标

一:JavaBean
二:EL表达式

学习内容 1:初识JavaBean

1.1 什么是JavaBean
JavaBean是Java开发语言中一个可以重复使用的软件组件,它本质上就是一个Java类。
为了规范JavaBean的开发,Sun公司发布了JavaBean的规范,它要求一个标准的JavaBean组件需要遵循一定的编码规范,具体如下。
(1)它必须具有一个公共的、无参的构造方法,这个方法可以是编译器自动产生的默认构造方法
(2)它提供公共的 setter方法和getter方法,让外部程序设置和获取JavaBean的属性。为了让读者对 JavaBean 有一个直观上的认识,接下来编写一个简单的JavaBean。首先在Eclipse 中创建一个名为 chapter07 的 Web 项目,然后在项目的SrC目录下创建名为cn.itcast.chapter07.javabean的包,再在该包下创建Book类,代码如下所示。

package cn.itcast.chapter07;

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

1.2访问Javabean的属性
在讲解面向对象时,经常会使用类的属性,类的属性指的是类的成员变量。在JavaBean 中同样也有属性,但是它和成员变量不是一个概念,它是以方法定义的形式出现的,这些方法 必须遵循一定的命名规范。
类的成员变量和属性的一个关系:
在普通的java类里面,成员变量可以说成就是属性。
在JavaBean里面,成员变量和属性就有了区别。
在JavaBean 里面什么是成员变量呢? 比如:private String id; 那么id就是成员变量
在JavaBean 里面什么是属性?就是get或者set后面的字段名称(字段名称的首字母小写),就是属性。
比如:

public class Student {
		//一下就是javaBean的四个成员变量
		private String sid;//目的就是为了接收外界传递过来的值
		private String name;
		public Student() {
			
		}
		//属性由get或者set方法后面的字段首字母小写就是属性,属性就是id
		public String getId() {
			return sid;
		}
		public void setId(String id) {//写方法,给student写一个id
			this.sid = id;
		}
		//属性就是name
		public void setName(String name) {
			this.name = name;
		}
	}

1.3 BeanUtils 工具
大多数Java程序开发人员过去习惯于创建JavaBean,然后通过调用JavaBean 属性对的getter和setter方法来访问属性。但是,由于各种Java工具和框架层出不穷,并不能保正性对应的getter和seter方法总能被调用,因此,动态访问Java对象的属性是十分必要的。此,Apache软件基金会提供了一套简单、易用的API——BeanUtils工具。掌握它的使用将有助于提高程序的开发效率。本节将针对BeanUtils工具的相关知识进行详细的讲解。
截止到目前,BeanUtils的最新版本为Apache Commons BeanUtils 1.9.x,读者可以根据需要下载相应的版本。BeanUtils 工具包的官网首页地址为“http://commons.apache.org/propercommons-beanutils”,登录到官网首页后,单击左边菜单栏【BEANUTILS】→【Download】选项,即可跳转到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;

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 +"]";
	
}
}

(3)在cn.itcast.chapter07的包下创建BeanUtilsDemo类,该类使用了BeanUtils类的常用方法,具体如下图所示:

package cn.itcast.chapter07;
import java.util.HashMap;
import java.util.Map;
public class BeanUtilsDemo {
	 

	 public static void main(String[] args) throws Exception{
	 Person p = new Person();
	
	 Map map= new HashMap();
	 map.put("name", "yanmin");
	 map.put("age",19);
	  BeanUtils.populate(p,map);
	  String name=BeanUtils.getProperty(p,"name");
	 int age=Integer.parseInt(BeanUtils.getProperty(p,"age"));
	  System.out.println( name);
	  System.out.println(age);
	 

}
}
2: 初识EL

2.1 初识 EL 表达式
EL在开发中,通常是用来获取域对象中保存的值,基本语法:${域对象的名称}。
比如说: request.setAttribute(“key”,“value123”): ${key},获取的值就是value123
如果域对象的名称写错了,使用el表达式获取值,获取的是"".


(1)在项目的src 目录下创建一个名为cn.itcast.chapter07.servlet 的包,在包下创建一个用于存储用户名和密码的类MyServlet,具体如下图:

package cn.itcast.chapter07.servlet;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.*;
import javax.servlet.http.*;

import cn.itcast.chapter07.Person;

public class MyServlet extends HttpServiet{
	private static final long serialVersionUID =1l;
	
protected void doGet (HttpServletRequest request,
	HttpServletResponse response)throws ServletException, IOException {
	Person p =new Person();
	p.setName("yanmin");
	Map map =new HashMap();
		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);
}
}

2)在WebContent目录下编写一个名为myjsp的JSP文件,使用该文件来输出存储信息,具体如下图所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<%=(String)  request.getAttribute("person")%>
<%=(String) request.getAttribute("username")%>
<%=(String) request.getAttribute("password")%>

---------------------------------
----------${ username}
-----------$(password)

(3)启动Tomcat服务器,在浏览器地址栏里输入“http://localhost:9999/chapter07/myservlet”地址 访问MyServlet页面,效果如下图所示:

2.2 EL表达式中的标识符
在el书写过程中,会用一些符号来标记变量、函数名等,这些符号称之为标识符。
书写规范:
1.不能以数字开头
2.不能包含el中的关键字:and , or 等
3.不能使用el表达式的隐式对象。
4.不能包含特殊符号,比如正斜杠等

2.3 EL中的变量
基本格式:${域对象的名称},这个域对象的名称可以理解为就是el中的变量,
那这个变量就不需要定义了,可以直接使用。

2.4 EL 中的常量
1.布尔常量:true或false
2.数字常量:整型、浮点常量,使用方式和java差不多
3.字符串常量:使用方式和java差不多,比如: " e l 的 字 符 串 常 量 " 4. N u l l 常 量 : {“el的字符串常量”} 4.Null常量: "el的字符串常量"4.Null常量:{null}

2.5 EL中的运算符
1.点运算符:获取域对象中属性的值。
比如:

${person.name }

2.方括号运算符:在域对象里,有的属性包含特殊字符,所以用方括号的方式来获取值
比如:

 <% 
 		Map map= new HashMap();
		map.put("my-name","map的值");
		request.setAttribute("user",map);
	  %>
	${user["my-name"] }

3.算术运算符:+ - * /
在myjsp.jsp文件中编写

启动Tomcat服务器,在浏览器地址栏里输入地址 “http://localhost:9999/chapter07/myservlet”访问MyServlet页面

4.比较运算符: > < >= <= == !=

在myjsp.jsp文件中编写

启动Tomcat服务器,在浏览器地址栏里输入“http://localhost:9999/chapter07/myservlet”地址 访问MyServlet页面
效果

5.逻辑运算符: &&(and) ||(or) !(not)
6.empty 运算符:用来判断域对象中的值是否存在,不存在返回为true,否则返回的结果是false.
在myjsp.jsp文件中编写

启动Tomcat服务器,在浏览器地址栏里输入地址 “http://localhost:9999/chapter07/myservlet”访问MyServlet页面

EL 隐式对象
1.pageContext对象:为了获取jsp中的隐式对象。
比如:

     获取项目的路径:${pageContext.request.contextPath }
获取请求的URL:${pageContext.request.requestURI }

在WebContent目录下编写一个名为pageContext.jsp的JSP文件,
代码如下图:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


获取项目路径YANMIN:$(pageContext.request.contextPath }
$(pageContext.request.contextPath
$(pageContext.servletContext.servletNames

启动Tomcat服务器,在浏览器地址栏里输入地址 “http://localhost:9999/chapter07/pageContext.jsp”访问pageContext页面,效果如下图所示:

2.web域相关的对象
域作用范围从小到大:pageContext—>request—>session—>application(servletContext)
el表达式获取域对象中的值:如果域对象的名称相同,获取的是域作用范围最小的值。和pageContext对象的findAttribute方法的效果是一样的。


(1)在WebContent目录下编写一个名为scopes.jsp的JSP文件,
代码如下图:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<%
pageContext.setAttribute("page","PAGE");
request.setAttribute("request", "REQUEST");
session. setAttribute("session" ,"SESSION");
application. setAttribute("appl","APPLICATION");
%>
$[pageScope.page )=== $(page 
$(requestScope.YANMIN)=== ${YANMIN}
<% pageContext.setAttribute("aa1","PAGE"); request. setAttribute("aa2" ,"REQUEST") ; session. setAttribute("aa" ,"SESSION" ); application. setAttribute("aa" ,"APPLICATION"); %> ------------------------------------
${aa}
$(sessionScope.aa

(2)启动Tomcat服务器,在浏览器地址栏里输入地址 “http://localhost:9999/chapter07/scopes.jsp”访问scopes页面,效果如下图所示:


3.param 和 paramValues 对象
获取表单提交的数据。
比如:

 num1:
num2:
num3:
  
num1:${param.num1 }
num2:${paramValues.num[0] }
num3:${paramValues.num[1] }


(1)在WebContent目录下编写一个名为param.jsp的JSP文件,代码如下图:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


num1:
num2:
num3:
   
num1:${param.num1}
num2:${ paramValues.num[0] }
num3:${paramValues.num[1]}

(2)启动Tomcat服务器,在浏览器地址栏里输入地址 “http://localhost:9999/chapter07/scopes.jsp”访问param页面,效果如下图所示:

4. cookie 对象
获取cookie的名称,获取cookie的值
比如:

<% response.addcookie(new cookie("userName","itcast")); %>
		获取cookie对象:${cookie.userName }
获取cookie的名称:${cookie.userName.name }
获取cookie的值:${cookie.userName.value }


(1)在WebContent目录下编写一个名为cookie.jsp的JSP文件,代码如下图:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<% response.addcookie(new cookie("username","YANMIN")); %>
获取cookie对象:${cookie.username} 
获取cookie对象名字:$ {cookie.username.name}
获取cookie对象值:${cookie.username.value}

(2)启动Tomcat服务器,在浏览器地址栏里输入地址 “http://localhost:9999/chapter07/cookie.jsp”访问cookie页面,效果如下图所示:

2020080605041

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571566.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号