大二 第九次 EL表达式和JSTL

EL表达式和JSTL

什么是javabean

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

访问Javabean的属性

在讲解面向对象时,经常会使用类的属性,类的属性指的是类的成员变量。在 JavaBean 中同样也有属性,但是它和成员变量不是一个概念,它是以方法定义的形式出现的,这些方法必须遵循一定的命名规范。例如,在 JavaBean 中包含一个 String 类型的属性 name,那么在JavaBean中必须至少包含 getName()和 setName()方法中的一个,这两个方法的声明如下所示。
public String getName(){…}
public void set Name(String name){…}
• getName()方法:称为 getter 方法或者属性访问器,该方法以小写的 get 前缀开始,后跟属性名,属性名的第 1 个字母要大写,例如,nickName 属性的 setter 方法为 setNickName()。
•setName()方法:称为 setter 方法或者属性修改器,该方法必须以小写的 set 前缀开始,后跟属性名,属性名的第一个字母要大写,例如nickName属性的setter方法为setNickName()。
如果一个属性只有 getter 方法,则该属性为只读属性。如果一个属性只有 setter 方法,则该属性为只写属性。如果一个属性既有 getter 方法,又有 setter 方法,则该属性为读写属性。通常来说,在开发 JavaBean 时,其属性都定义为读写属性。
需要注意的是,对于 JavaBean 属性的命名方式有一个例外情况。如果属性的类型为boolean,它的命名方式应该使用 is/set,而不是 get/set。例如,有一个 boolean 类型的属性
married,该属性所对应的方法声明如下所示。
public boolean isMarried(){…}
public void setMarried(boolean married){…}
从上面的代码可以看出,married 属性的 setter 方法命名方式没有变化,而 getter 方法变成
了 isMarried()方法。当然,如果一定要写成 getMarried()也是可以的,只不过 isMarried()更符合命名规范。

beanUtils工具

大多数java程序开发人员过去习惯于创建javabean属性对应的getter和setter的方法来访问属性,但是由于各种java工具和框架层出不穷,并不能保证属性对应的getter和setter方法总能被调用,因此动态访问java对象的属性是十分必要的。
##EL表达式
再见,jsp开发中为了获取servlet域对象中存储的数据,经常需要书写很多java代码,这样的做法会使jsp页面混乱,难以维护,为此在jsp2.0规范中提供了el表达式,el是expression language的缩写,它是一种简单的数据访问语言。

初识EL

由于el可以简化jsp页面的书写,因此在jsp的学习中掌握l是相当重要的,要是用el表达式,首先要学会它的语法,el表达式的语法非常简单,都是以“${”开始,以“{”结束的

el中的标识符

在el表达式中,经常需要使用一些符号来标记一些名称,如变量名,自定义函数名等这些符号被称为标识符。EL表达式中的标识符可以由任意的大小写字母、数字和下划线组成。为了避免出现非法的标识符,在定义标识符时还需要遵循以下规范。
1.不能以数字开头。
2.不能是 EL 中的保留字,如 and、or、gt。
3.不能是 EL 隐式对象,如pageContext。
4.不能包含单引号,双引号,减号和正斜杠等特殊字符。

EL隐式对象

1.pagecontact对象
为了获取jsp页面的隐式对象,可以使用el表达式中的page隐式对象pagecontact隐式对象的示例代码如下。
${pagecontext. response. characterencoding}
##web域相关对象
在web开发中,pagecontact 、httpservletrequest、httpsession和servletcontact的四个对象之所以可以存储数据,是因为他们内部都定义了一个map集合,这些map集合是有一定作用范围的。
3. param 和 paramValues 对象
在jsp页面中,经常需要获取客户端传递的请求参数。为此,el表达式提供了param和paramvalues 两个隐式对象,这两个影视对象专门用于获取客户端访问jsp页面时传递的请求参数。接下来针对这两个对象进行讲解,具体如下。
param 对象用于获取请求参数的某个值,它是 Map 类型,与 request.getParameter()方法
相同,在使用 EL 获取参数时,如果参数不存在,返回的是空字符串,而不是 null。 param 对象
的语法格式比较简单,具体示例如下。
${param.num}
如果一个请求参数有多个值,可以使用 paramValues 对象来获取请求参数的所有值,该对象用于返回请求参数所有值组成的数组。如果要获取某个请求参数的第 1 个值,可以使用如下代码。
${paramValues.nums[0]}

cookie对象

在jsp开发中,经常需要获取客户端的cookie消息,为此在el表达式中提供了cookie影视对象,该对象是一个代表所有cookie信息的map集合,map集合中元素的渐为各个cookie的名称。值则为对应的cookie对象。

代码及成果展示

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","yuanxuehua");
		*BeanUtils.setProperty(p,"age","19");
		*String name =BeanUtils.getProperty(p,"name");
		*age=Integer.parseInt(BeanUtlis.getproperty(p,"age"));
		*System.out.println(name);
		*System.out.println(age);
		*/
		
		Map<String,Object>map=new HashMap<String,Object>();
		map.put("name", "袁雪华");
		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);
	}

}
package cn.itcast.chapter07.beanutils;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

/**
 * Servlet implementation class BeanUtilsServlet
 */
@WebServlet("/beanutils")
public class BeanUtilsServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//String name=request.getParameter("name");
		//String agefrom=request.getParameter("age");
		//int age =Integer.parseInt(agefrom);
		Person p=new Person();
		//p.setName(Name);
		//p.setAge("AGE");
		try {
		     BeanUtils.populate(p,request.getParameterMap());
		}catch(Exception e) {
			e.printStackTrace();
		}
		response.getWriter().print(p);
		System.out.println(p);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}
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.javabean;

public class Student {
  private String id;
  private String name;
  private int age;
  private boolean married;
  public Student() {
	  
  }
  public int getAge() {
	  return age;
  }
  public String getId() {
	  return id;
  }
  public void setId(String id) {
	  this.id=id;
  }
  public void setAge(int age) {
	  this.age=age;
  }
  public boolean isMarried() {
	  return married;
  }
  public void setMarried(boolean married) {
	  this.married=married;
  }
  public String getSid() {
	  return id;
  }
  public void setName(String name) {
	  this.name=name;
  }
  public void getInfo() {
	  System.out.println("我是袁雪华");
  }
}
package cn.itcast.chapter07.servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MyServlet
 */
@WebServlet("/myservlet")
public class MyServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Person p=new Person();
		p.setName("yuanxuehua");
		Map<String,String>map=new HashMap<String,String>();
		map.put("my-name","map的值");
		request.setAttribute("user",null);
		
		request.setAttribute("person", p);
		request.setAttribute("username", "袁雪华");
		request.setAttribute("password", "123456");
		RequestDispatcher dis=request.getRequestDispatcher("myjsp.jsp");
		dis.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}
package cn.itcast.chapter07.servlet;

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 + "}";
		}
		
}
<%@ 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","yuanxuehua"));%>
获取cookie对象:${cookie.username }<br/>
获取cookie对象名字:${cookie.username.name }<br/>
获取cookie对象值:${cookie.username.value }<br/>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                           "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form name="reg" action="/chapter07/BeanUtilsServlet" method="post">
		用户名: <input name="name" type="text" /><br/>
		年龄: <input name="age" type="text" /><br/>
		
			    <input type="submit" value="提交" id="bt" />
	</form>
</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>
袁雪华 2020080605045<br/>

${empty person}<br/>
${empty user}<br/>
---------------------------------------------------------------<br/>
1>3吗? ${1>3}<br/>
---------------------------------------------------------------<br/>
1+3=${1+3}<br/>
  ---------------------------------------------------------------<br/>
  ${person.name}<br/>
  ---------------------------------------------------------------<br/>
  ${user.my-name }<br/>
  ${user["my-name"] }<br/>
  ---------------------------------------------------------------<br/>
   <%=(String)   request.getAttribute("username") %><br/>
   <%= (String)   request.getAttribute("username") %><br/> 
   ---------------------------------------------------------------<br/>
   -----${username }-----<br/>
   ${password }<br/>

</body>
</html>
<%@ page language="java" contentType="text/heml; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
获取项目路径:${pageContext.request.contextPath }<br/>
${pageContext.response.contentType }<br/>
${pageContext.servletContext.servletNames }<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>
<from 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="提交"/>&nhsp;&nbsp;<input type="rest" 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>
<% pageContext.setAttribute("page","PAGE");
	request.setAttribute("dashuju","REQUEST");
	session.setAttribute("session","SESSION");
	application.setAttribute("appl","APPLICATION");%>
	${pageScope.page }====${page }<br/>
	${requestScope.dashuju }====${dashuju }<br/>
	<%
	pageContext.setAttribute("aa1","PAGE");
	request.setAttribute("aa2","REQUEST");
	session.setAttribute("aa3","SESSION");
	application.setAttribute("aa","APPLICATION");%>
		
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2020080605045 袁雪华 大数据2005

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值