您的位置:首页 > Web前端 > JavaScript

无脚本的jsp(动作,EL)

2017-03-18 21:56 337 查看
无脚本jsp的必要?

在实际开发中web设计人员很可能不太懂Java语言,而在jsp中Java作为脚本使用,这样就造成不便。我们应该使用一些web设计人员容易接受的"脚本",javaweb2.0就出现了EL,JSTE来替换java脚本(srciptlet,声明等)。

1 jsp动作元素

(1) <jsp:useBean id="p" type="person" class="person" scope="request"/>

id:属性名;type:id类型 ; class:bean对象类型; scope:属性作用域

这个标准动作转换成servlet是什么样子的?

person p=null;//person是type属性对应的类型。 p是 id

p= (person)request.getAttribute("p");//判断这个id存不存在,(person)->type类型

if(p==null){

//为空的话,设置一个id对应的属性

p=request.setAttribute("p",new person());//new person()是class对应类型

}


结论:id就是一个实例的引用(bean),通过id可获取性质(成员变量),要知道bean有getXX(),setXX();

(2) <jsp:setProperty name="p" property="username" vlaues="xiaoming"/>//设置属性值,name是useBean的id;

(3)<jsp:getProperty name="p" property="uername"/>//获取username属性值xiaoming

这几个有什么用?

接收servlet中的bean,在jsp中获取bean对象的性质(成员变量),比较遗憾的是:bean对象的性质这可以是String或者基本数据类型,username性质假设是一个Object,会显示什么?地址值

那么我们应该怎么办?

--------------------------------------------------------------------------------------------------------------------------------------------------

2 EL(expression language)表达式语言

语法${//content}

(1)EL的出现,个人以为可以不再使用前面几个动作, 我们可以这样替换
servlet中:

person user=new person();user.setName("xiaoming"); request.setAttribute("p",user);

request.setAttribute("xx","hello EL");

jsp中接收:

${p.username} //username是person的性质

${xx}//hello EL,简单吧!

(2)属性(Javabean实例)中性质也是对象怎么办

假设上面username是一个对象(有个a性质 a="xin"),那么${p.username.a}//得到xin

从上面可以看出,EL随随便便搞定啊

3 EL中的二个重要的操作符

(1).操作符

. 有二种格式(没有第三种)

map.key

javabean.property

说明:右边必须是合法的标识符(和定义变量同理),比如:map集合中有一个key="1",map.1是错误的,不合法。

使用:jsp接受的一般都是javabean数据或者“数据包”(集合,数组)。“.”可以处理的是Javabean和map,但list集合和一般的数组他是处理不了。后面还有一个[]操作符,功能更加多。由于jsp处理的数据map和Javabean较多,“.”简单实用,所以EL中用的频率很高

(2)[]操作符

"."可以做的事情,[]都可以完成。"."比较简便,可以使用"."尽量使用(个人喜好)。[]操作符处理下面几种“.”没完成的操作

key不是合法标识符;${map["1"]}没问题

list和数组集合,${arrayList["name"] }

注意:[]里面获取要使用" "符号,也不要使用";"符号结束

4 内置对象

(1)有哪些对象

第一类: requestScope,pageScope,sessionScope,applicationScrope -- 作用域属性的map

第二类:param,paramVlaues -- 请求参数的map

第三类:cookie --cookie的map

第四类:initParam-- 上下文初始化参数的map

第五类:pageContext --Javabean对象的一个引用。

简单说一下: 所谓"[b][b]请求参数的map[/b]",就是把所有的请求参数保存在这个map集合中。[/b]

(2)一个例子:


在servlet中:

request.setAttibute("attri","12");

在jsp中 ${attri}就直接拿到值12;

你会不会这么想?session,servletContext的属性这么获取?

执行${attri}时,按顺序在 [b]pageScope,[b][b]requestScope,[/b]sessionScope,applicationScrope属性中找。 意思就是: session,servletContent(application)中的属性也一样获取。在这里${attri}效果等价于${[b][b][b]requestScope[/b][/b][/b].attri}[/b][/b]

(3)获取[b]session,servletContext属性[/b]

[b]$[b]{sessionScope.property} [b]$[b]{[b][b]applicationScrope[/b].proterty[/b]}[/b][/b][/b][/b]

[b] (4)现在仔细看看前面内置对象的介绍,你就会使用了。[/b]

[b] 5 EL函数---省略[/b]

[b] --------------------------------------------------------------------------------------------------------------------------------------[/b]

EL自然不止这些,不过上面介绍的是常用的。发现没,EL主要用来获取数据的。Java中if,while,for怎么办?答案就jstl中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: