javaweb-EL&JSTL

1、什么是EL:

EL是JSP表达式语言,全称是ExpressionLanguage,使用EL的目的是简化在JSP中访问变量的方式,简单静态HTML与Java代码的耦合。用来替代jsp中的输出<%=..%>

2.    EL的作用:

 

  •         1.获取域中数据 ★
  •         2.执行运算 ★
  •         3.获取常见的web对象
  •         4.调用java的方法

    格式:   ${el表达式}

2.1.获取域中的数据

  • 获取简单数据


    ${pageScope|requestScope|sessionScope|applicationScope.属性名}

    快捷获取:${skey}

    ${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找
    若查找不到,返回""

演示:

//JSP页面中省略上半段
<body>
	<%
		request.setAttribute("rkey", "rvalue");
		session.setAttribute("skey", "svalue");
		session.setAttribute("rkey", "svalue");
		application.setAttribute("akey", "avalue");
	%>
	获取request中的数据:<br>
	老方式:<%=request.getAttribute("rkey") %><br/>
	el方式:${requestScope.rkey }<br/>
	<hr>
	

	<hr>
	获取失败老方式:<%=application.getAttribute("aakey") %><br/>      返回NULl
	获取失败el方式:${applicationScope.aakey }                        空字符
	
	<hr>
	便捷获取:
	${skey },${rkey },${aakey },${akey }
	<hr>
	${rkey }    先获取大的rkey就是request的                                            
	<hr>
</body>
  • 获取复杂的数据

        获取数组中的数据
            ${域中的名称[index]}           ${arr[1] }
        获取list中的数据              
            ${域中的名称[index]}           ${list[1]
        获取map中的数据
            ${域中的名称.键名}             ${map.age }

   在JSP页面中,这里省略上半部分

	<%
		//往request域中放入数组
		request.setAttribute("arr", new String[]{"aa","bb","cc"});
		
		//往request域中放入list
		List list=new ArrayList();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		request.setAttribute("list", list);
		
		//往request域中放入map
		Map m=new HashMap();
		m.put("username","tom");
		m.put("age",18);
		request.setAttribute("map", m);
		
		//往域中放入一个简单数据
		request.setAttribute("arr.age","18");
	%>
	
	获取域中的数组:<br>
	老方式:<%=((String[])request.getAttribute("arr"))[1] %><br>
	el方式:${arr[1] }<br>
	<hr>
	
    //注意这里request.getAttribute完后是Object,需要强转才可以转成数组
	获取域中的list:<br>
	老方式:<%=((List)request.getAttribute("list")).get(1) %><br>
	el方式:${list[1] }<br>
	list的长度:${list.size() }
	<hr>
	
	获取域中的map:<br>
	老方式:<%=((Map)request.getAttribute("map")).get("age") %><br>
	el方式:${map.age }<br>
	<hr>
	
	获取特殊名字的数据<br>
	${requestScope["arr.age"] }

    注意:★
    若属性名中出现了"."|"+"|"-"等特殊符号,需要使用scope获取
    例如:
     ${requestScope["arr.age"] }

 

.JavaBean导航

  •   javabean:     

  java语言编写的一个可重用的组件,

  狭义上来说就是我们编写的一个普通的java类 例如:User Person                  

  •   javabean规范:

                1.必须是一个公共的具体的类  public class
                2.提供私有的字段  private String id;//id称之为字段
                3.提供公共访问字段的方法 get|set|is方法


                    public String getId(){..}
                    一旦有公共的方法之后,get|set|is之后的内容,将首字母小写,将这个东西称之为bean属性
                     id就是一个bean属性


                 4.提供一个无参的构造器
                 5.一般实现序列化接口  serializable

 

演示:

第一步:先编写一个javabean

把getusername改为getname

这里面username bean属性已经消失变成name了,在get之后的东西称为一个bean。

username这时称为字段。

import java.io.Serializable;

public class User {
	private String id;
	private String username;
	private String password;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return username;
	}
	public void setName(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
}

第二步:在JSP页面中,这里省略上半部分

<%
    User u=new User();
    u.setId("001");
    u.setName("tom");
    u.setPassword("123");
    
    //将u放入域中
    request.setAttribute("user", u);
%>

获取域中javabean的id值:<br>
老方式:<%=((User)request.getAttribute("user")).getId() %><br/>
el方式:${user.id }<!-- 相当于调用 getXxx() -->

<hr>

 

2.2执行运算:

1.可以执行 四则运算 关系(+ - * /) 以及逻辑运算(&& ||)

2.    注意:
        1.+:只能进行加法运算,字符串形式数字可以进行加法运算.
        2.empty:判断一个容器的长度是否为0(array set list map),还可以判断一个对象是否为空
        三元运算符
        eg:${3>4?"yes":"no"}
        输出为no

JSP页面中省略上半部分

<body>
<%
		request.setAttribute("i", 3);
		request.setAttribute("j", 4);
		request.setAttribute("q", "12");
		request.setAttribute("k", "k");
		
		List l=null;
		request.setAttribute("list", l);
		
		List ll=new ArrayList();
		ll.add("22");
		request.setAttribute("list_", ll);
		
		User user=null;
		request.setAttribute("bean", user);
		
		User user_=new User();
		request.setAttribute("bean_", user_);
	%>
	
	${i+j }<br/>
	${i+q }<br/>
	${q+q }<br/>
	<%-- ${i+k }<br/> --%>
	<hr>
	域中list的长度是否为0:${empty list}<br/>
	域中list_的长度是否为0:${empty list_ }<br/>
	
	<hr>
	域中的bean是否为空:${empty bean }<br/>
	域中的bean_是否为空:${empty bean_ }<br/>
	
	<hr>
	${ 3>4?"yes":"no" }<br/>
	
	${i==3 }

</body>

 

 

3.el的内置对象(了解)可以直接使用

    11个
        pageScope
        requestScope
        sessionScope
        applicationScope
        
        param
        paramValues
        
        header
        haederValues
        
        initParam
        
        cookie★
        
        pageContext★

    注意:
        除了pagecontext其余对象获取的全是map集合key value的形式
    
  1.  了解:和参数相关的el内置对象
        param
        paramValues
    

index.jsp中
<a href="/day12/el/demo5.jsp?username=tom&password=123&hobby=drink&hobby=sleep">和参数相关的内置对象(了解)
</a><br>

    

在JSP页面中就可以
${param.username }<hr>来获取


    2.了解:和请求头相关的el内置对象
        header
        haederValues
    

<body>
${header }<hr>
${headerValues }
<hr>
<hr>
referer:${header.referer }<br>
user-agent:${headerValues["user-agent"][0] }
</body>


    3.了解:和全局初始化参数相关的el内置对象
        initParam
        
    4.cookie内置对象:
        ${cookie} 获取map{key=Cookie}
            例如:创建cookie
                Cookie c=new Cookie("username","tom");
            通过${cookie}获取相当于    
                {username=new Cookie("username","tom")}
            相当于map的key是cookie的键
            map的value是当前cookie
            
        若项获取名称username的cookie的value值(获取tom)
            ${cookie.username.value}--javabean导航

        注意:
            java中Cookie的api
                getName():获取cookie的名称
                getValue():获取cookie的value值
            我们称name和value是cookie的bean属性
    
        使用cookie内置对象:
            ${cookie.给cookie起名字.value}
            
        例如:
            获取jsession的值
            ${cookie.JSESSIONID.value}

            
    5.pageContext:获取不是map集合,相当于jsp的pageContext内置对象
            在jsp页面中动态的获取项目名

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值