JSP-EL语法详解及实例

EL:Expression Language

 

EL是为了设计不含java代码的JSP页面而生,在JSP2.0及以上的版本就可以不需要实用JSTL就可以使用EL


1,EL语法


EL表达式:  ${ expression}


例如:  ${a+b}${x+y}  

          <my: tag someAttribute="${expression}"/>


可以通过[]  与  .   运算符来访问某个对象的属性


例如:${object["propertyName"]}

            ${object.propertyName}

注意:如果propertyName不是有效的java变量名称,则只能用  []  运算符



2,访问javaBean


例如:${beanName["propertyName"]}

           ${beanName.propertyName}


3,EL的隐性对象


pageContext对象表示当前JSP页面的javax.sservlet.jsp.PageContext.它包含所有的其他JSP隐性对象

例如:  ${pageContext.request}

             ${pageContext.response}

 

initParam对象用于获取一个context参数值

例如:${initParam.password}


param对象用于获取一个请求参数。这个对象表示一个包含所有请求参数的Map

例如:${param.userName}

paramValues对象可以获取一个请求参数的多个值。这个对象表示一个包含所有请求参数并以参数名称作为键

的Map,返回的Map返回的是一个字符串数组

例如:${paramValues.selectedOptions[0]}

           ${paramValues.selectesOptions[1]}


header对象表示一个包含所有请求标头的Map

headerValues对象一个包含所有请求标头的Map,返回的Map返回的是一个字符串数组

例如:获取accept-language标头的值

          ${header["accept-language"]}


cookie对象可以获取一个cookie

例如:要获取名为jsessionid的cookie值,需使用

          ${cookie.jsessionid.value}


applocationScope,sessionScope,requestScope,pageScope对象分别获取范围为:全局,session,request,page

${today}将从最小范围开始搜索,返回第一次识别到的指定对象



4,EL运算符


算术运算符:         *  /  %  +  -       优先级从高到低,并且从左到右进行


关系运算符:      ==    !=   >     <     


逻辑运算符:    &&   ||   !


条件运算符:    ${statement?   A:B}


empty运算符:  用来检验一个值是否为空

${empty X}

如果X为一个长度为0的字符串,或者一个空的Map,空数组,空集合,返回true,否则返回false



下面通过一个实例

EmployeeServlet创建了必要的对象,并将他们放到servletRequest中。之后,

Servlet利用一个RequestDispather跳转到employee.jsp页面

package el;

public class Address {
	private String streetName;
	private String streetNumber;
	private String city;
	private String state;
	private String zipCode;
	private String country;
	public String getStreetName() {
		return streetName;
	}
	public void setStreetName(String streetName) {
		this.streetName = streetName;
	}
	public String getStreetNumber() {
		return streetNumber;
	}
	public void setStreetNumber(String streetNumber) {
		this.streetNumber = streetNumber;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
	public String getZipCode() {
		return zipCode;
	}
	public void setZipCode(String zipCode) {
		this.zipCode = zipCode;
	}
	public String getCountry() {
		return country;
	}
	public void setCountry(String country) {
		this.country = country;
	}

public class Employee {
	private int id;
	private String name;
	private Address address;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}
	
	

}

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;
@WebServlet(urlPatterns={"/employee"})
public class EmployeeServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		Address address=new Address();
		address.setStreetName("Rue D'Anjou");
		address.setStreetNumber("5090B");
		address.setCity("Guangzhou");
		address.setState("Quebec");
		address.setZipCode("A1A B2B");
		address.setCountry("China");
		
		Employee employee=new Employee();
		employee.setId(1099);
		employee.setName("Charles Unjeye");
		employee.setAddress(address);
		req.setAttribute("employee", employee);
		Map<String, String> capitals=new HashMap<String, String>();
		capitals.put("China", "Beijing");
		capitals.put("Austria", "Vienna");
		capitals.put("Australia", "Canberra");
		capitals.put("Cannada", "Ottawa");
		req.setAttribute("capitals", capitals);
		
		RequestDispatcher rd=req.getRequestDispatcher("/employee.jsp");
		rd.forward(req, resp);
	}

}


运行结果:


accept-language: zh-CN,zh;q=0.8
session id: 4DE7C385AA790AA138BACB20A1D0A5E4 
employee: Charles Unjeye,Guangzhou
capital: Beijing 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值