学习javaweb第九天

EL表达式和JSTL

1.初识JavaBean
1.1 什么是javaBean:
它是java开发中常用的组件,其实就是一个java类,它的作用就是封装数据。
书写JavaBean需要满足五个规范:
>>>1.这个java类,被public修饰
>>>2.这个java类要提供公共的无参数的构造方法
>>>3.要提供私有的属性
>>>4.要给私有的属性提供公共的set或者get方法
>>>5.要实现Serializable接口
比如:

  public class Book implements Serializable{ 
				private String id;
				private String name;
				public Book(){};
				public void set----
				public String get---
			}

1.2 访问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;
			}
		}

上面的Student的属性就是id ,name。成员变量就是sid,name.

 1.3 BeanUtils 工具
BeanUtils 工具是由apache软件基金会提供的一套封装数据到JavaBean的工具类,使用简单方便,
BeanUtils是第三方的工具(插件),所以需要导入jar包。

常用的api:
>>> 1.向javaBean的属性设置值:
setProperty(javaBean对象,javaBean的属性,javaBean属性的值);
>>> 2.获取javaBean属性的值:
getProperty(javaBean对象,javaBean的属性);
>>> 3.向javaBean的属性设置值:
populate(javaBean对象,map对象);

注意:map的对象的key(就是javaBean属性名称),必须和javaBean的属性名一致,才能给javaBean的属性设置值。
提交的表单数据想封装到javaBean对象里面,要求表单name属性的值,必须和javaBean属性名称一一对应。

例:
创建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 + "]";
	   }
}

再创建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();
		//p.setName("dashuju2005");
		
		//System.out.println(p.getName());
		
		Map<String , Object> map=new HashMap<String , Object>();
		map.put("name", "dashuju2005");
		map.put("age",2);
		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 表达式
1.1 初识 EL 表达式
EL在开发中,通常是用来获取域对象中保存的值,基本语法:${域对象的名称}。
比如说: request.setAttribute(“key”,“value123”): ${key},获取的值就是value123
如果域对象的名称写错了,使用el表达式获取值,获取的是"".
创建一个用于存储用户名和密码的类MyServlet,具体代码如下:

package cn.itcast.chapter07.servlet;

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;

/**
 * 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("liaolei");
		
		   Map<String,String> map = new HashMap<String,String>();
		   map.put("my-name","map的值");
		   request.setAttribute("user",null);
		   
		request.setAttribute("person",p);
		request.setAttribute("username","liaolei");
		request.setAttribute("password","18");
		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);
	}

再创建一个名为myjsp的JSP文件,使用该文件来输出存储信息,具体如下所示:

   <%= (String)   request.getAttribute("username") %><br>
   <%= (String)   request.getAttribute("password") %><br>
-----------------------------------------------------<br>
   ------${username }------<br>
   ${password }<br>

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

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

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

1.5 EL中的运算符
  1.点运算符:获取域对象中属性的值。
   比如: ${person.name }
  2.方括号运算符:在域对象里,有的属性包含特殊字符,所以用方括号的方式来获取值
  比如:

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

3.算术运算符:+ — * /
4.比较运算符: > < >= <= == !=
5.逻辑运算符: &&(and) ||(or) !(not)
6.empty 运算符:用来判断域对象中的值是否存在,不存在返回为true,否则返回的结果是false.
7.三目运算符:参照java的用法。

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

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

2.web域相关的对象
域作用范围从小到大:pageContext—>request—>session—>application(servletContext)
例如:

<!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.dashuuju }====   ${dashuju}<br>
    <%
        pageContext.setAttribute("aa1","PAGE");
        request.setAttribute("aa2", "REQUEST");
        session.setAttribute("aa","SESSION");
        application.setAttribute("aa","APPLICATION");
    %>
    ---------------------------<br>
    ${aa }<br>
    
    ${sessionScope.aa }<br>
</body>
</html>

el表达式获取域对象中的值:如果域对象的名称相同,获取的是域作用范围最小的值。和pageContext对象的findAttribute方法的效果是一样的。
3.param 和 paramValues 对象: 获取表单提交的数据。
比如:

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="reset" value="重填" />
		<hr/>
		num1:${param.num1 }<br/>
		num2:${paramValues.num[0] }<br/>
		num3:${paramValues.num[1] }
  1. Cookie 对象:获取cookie的名称,获取cookie的值
    比如:
			<% response.addCookie(new Cookie("userName","itcast")); %>
			获取cookie对象:${cookie.userName }<br/>
			获取cookie的名称:${cookie.userName.name }<br/>
			获取cookie的值:${cookie.userName.value }<br/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值