A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

陈叶隆
1. EL获取数据
i)存:<%pageContext.setAttribute("name", "pValue");%>
取:${ pageScope.name}
ii)获取Cookie中的值:
${ cookie.history.value }
iii)获取PageContext中的对象:
IP地址:${ pageContext.request.remoteAddr }
工程路径:${ pageContext.request.contextPath }

2. JSTL
        2.1使用JSTL:
* 引入JSTL的相关的jar包.
* 在页面中引入标签库.<%@ taglib uri=”” prefix=”” %>
2.2核心标签:if,foreach:
遍历数组: <c:forEach var="i" items="${map}">
        ${i.key} = ${i.value}
</c:forEach>
案例一:遍历100到300每隔5个的数,将3个的整数倍的数字变红色:
<c:forEach var="i" begin="100" end="300" step="5" varStatus="status">
        <c:if test="${status.count%3==0}">
        <font color="red">${i }</font>
        </c:if>
        </c:forEach>
案例二:显示商品详情页面:
<c:forEach var="p" items="${list }">
        <tr>
                <td>${ p.pid }</td>
                <td>
                        <c:if test="${ p.is_hot == 1 }">
                                是
                        </c:if>
<c:if test="${ p.is_hot != 1 }">
                                否
                        </c:if>
                </td>
        </tr>       
        </c:forEach>
回复 使用道具 举报
郭明杰:
学习EL的目的是为了让jsp页面写起来更简单,最主要的作用就是简化jsp的语句.
EL有四个功能,第一是获取数据,把<% 域对象获取数据语句 %>  简化成${"name"},这个方

法可以重载,查找顺序是域范围的从小到大,找不到则返回null;
  *获取数据: 获取有索引的元素,比如集合,数据的时候,用[] ,获取带属性的元素 ,比如

map ,用 "."  ,如果属性名带特殊字符,可以用[""] 代替" ."  ;

  *执行运算:EL可以执行算数,逻辑,关系运算,三元运算符,自动完成类型转换,
${cookie.history.value}   获取cookie  history
${pageContext.request.ContextPath} 获取当前工程名

*JSTL需要导两个包才可以使用!!!
在jsp中引入jstl标签库的语句:  <%@ taglib

uri="http://java.sum.com/jsp/jstl/core"  prefix="c"%><c:if test="n1>n2">

JSTL中标签 if forEach 两个较为重要
回复 使用道具 举报
江某人:
语法:${EL表达式}
作用:1 获取四个域中的数据;
    如果四个域中有重名的,则获取的顺序为:page--->request--->session--->application;
JSTL的标签库:包含了五类标签.
* core(核心标签),fmt(国际化标签),xml(XML标签),sql(SQL标签),fn(JSTL提供EL函数库)
要倒两个新的包
在页面中引入标签库.<%@ taglib uri=”” prefix=””%>
     var 定义参数名
               Items 被遍历的目标对象
               Begin 遍历开始的位置
               End 遍历结束的位置
               Step 遍历的时候每次跳跃间隔
               varStatus 遍历的进行状态 varStatus.count 正在进行的次数
<c:forEach var="随意写变量名" items="${要遍历的变量或集合或对象}" varStatus="随意写变量名">
${i }
</c:forEach>
回复 使用道具 举报
谢洪彬:
今天学习了EL和JSTL
学习EL和之前相比就是替换了<%%>的这种写法,让页面显得更干净,程序员开发起来工作效率更高.
EL的作用:
1.存取数据
在取数据的时候如果多个域中有域名一样,就以小到大来一个显示(只显示一个)
2.执行运算
比如+,-,*,/
3.操作WEB开发的常用对象
就是操作11个常用对象
其中比较重要的有两个
1.Cookie来获取并遍历数组(使遍历变得更简单)
2.pageContext.request.ContextPath()来获取工程名
JSTL是属于El的标准标签库
使用之前需要导两个包,并且在页面中引入标签库
里面定义了很多函数,其中又以if 和foreach
If里面的属性
Test:里面填写关系表达式
如果这个关系表达式的值为true,则里面的内容被执行,否则不执行
Foreach里面的属性:
Items 需要遍历的数组或集合
Var   遍历得到的数据存放在这个属性里面
Begin:从哪里开始
End:到哪里结束
varStatus:记录状态(比如记录遍历的个数)
MVC :设计者模式
模式一:jsp+javaBean结合开发(基本已经淘汰)
模式二:jsp+javaBean+Servlet结合开发
MVC的含义:
M: 模型层  ---  domain dao service
V:        显示曾 --- jsp
C:        控制层 -- servlet--获取数据--处理业务--跳转页面
回复 使用道具 举报
刘文峰
EL表达式(语法:${ EL表达式 })可以简化jsp代码并且减少<% %>的使用.
EL表达式有四个功能:1.获取数据:${ EL表达式}可以获取四个域中的数据,如果有重复的名字,会以作用域范围从小到大获得数据,有索引的可以在表达式后面加”[]”获得数据,没索引的在表达式后面加”.”;2:执行运算:可以执行算数运算,逻辑运算,三元运算,empty运算(判断是否为空);3:11个常用对象:常用的有Cookie和pageContext两个对象,${cookie.属性名.value}可以直接得到数据,&{pageContext.request.contextPath}获的工程名,可以用来解决一些路径问题;4:调用java中的方法
JSTL是jsp的标签库,和EL表达式一起使用可以替换掉jsp中<% %>语句;JSTL有5个标签库,常用的有core和fn两个标签库,使用JSTL前要先导入jstl.jar和standard.jar两个jar包,并且在jsp中引入标签库,core常用的标签<c:if test=”判断条件 ” var=”参数名” scope=”存储的域” >(将test的结果以var的参数名存进scope的域中);<c:forEAch  var=”参数名” item=”遍历的对象”>可以用来遍历,还有 begin   end   step  varStatus等属性可以使用;fn标签库主要是以对字符串的操作为主(参照String类).
回复 使用道具 举报
张述明
今天学习的主要内容是EL jstl mvc
主要要掌握的内容是 jstl的if 和foreach 标签,el中的11个常用对象的cookie对象和pageContext对象  掌握mvc的三个字符
所对应的含义  以及一个商品列表打印的案例
以下是今天的知识点
El
表达式语言
为了使jsp写起来更加简单

使用EL表达式
语法${EL表达式 }


El的功能
获取数据(jsp的四个域)
执行运算
操作WEB 开发的常用的对象

调用java中方法:--很少用

获取数据

点和[]的区别
[]用于有下标的数据(数组,lis集合),用于有属性的额数据(map,对象)
如果属性名中包含有特殊的字符,必须使用[]


执行运算

El操作web开发的常用对象11个
1.        pageScope    获取jsp域中的数据
2.        requestScope   获取jsp域中的数据
3.        sessionScope   获取jsp域中的数据
4.        applicationScope   获取jsp域中的数据
5.        param      接收参数
6.        paramValues  接收参数
7.        header     获得请求头信息
8.        headerValues   获得请求头信息
9.        initParam     获得全局初始化参数
10.        cookie        web开发中cookie
11.        pageContext    web开发中的pageContext


JSTL
Jsp标准标签库

Jstl和el结合  能替换<% %>


Jstl的标签库   包含了五类标签
1.        Core(核心标签) ,
2.        Fmt(国际化标签)
3.        Xml(XML标签)
4.        Sql(sql的标签)
5.        Fn(JSTL提供el函数)

使用jstl:
引入jar包
在页面中引入标签库<%@   taglib  uri=””  prefix=””%>




Mvc设计模式完成转账的案例

需求:
Jsp的模式一
Jsp+ javaBean

Jsp的模式二
Model:模型层   javaBean     JavaBean  dao  Service   封装和处理数据
View:视图层   jsp    显示数据
Controller:控制层 servlet    处理请求,任务分派,获取数据u,处理业务,跳转页面.
   
回复 使用道具 举报
郑志祥 Day13  JSP与EL与JSTL
实现类中 一般不写基本类型int   而是写interge
因为 int 默认值为0  
interge 默认值为null
添加数据的时候  自增长(设置主键)的那一列,
数据库就没有0  所以会报错。


el 就是简化jsp的代码
el的第一个功能
1.从域获取数据
2、执行运算${ user!=null}
3.操作web的常用的对象
调用java的方法(基本不用)

在域对象当中,从小到大获取
page  request  session ServletContext=(aplication)

${  name} 如果获取不到得到的是一个“   ”
<%= request.getattribute(key  ) %>如果获取不到,得到的是一个null

获取数组中的元素
${ arr[ 5]} 通过下标和索引获取


Map的获取
${map.key }

点与【】的区别使用
【】用于有下标的(数组 .list集合)
点用于获得属性的数据(map ,对象) 如果属性值中包含属性值必须使用【】



el的第二个功能
1.进行算数运算(加减乘除)
2.执行逻辑运算(比较大小或相等)返回的是boolean
<    it    less than
>   gt    great than
=    eq   equal
3.执行关系运算(与或非)返回的是boolean
4.执行三元运算  ${ n1 < n2 ? "正确":"错误" }
5.  empt运算(判断对象是不是为空)
${ user == null }    --》   ${ empty user }
${ user != null }     --》    ${ not empty user }

11大常用web对象(能够在el表达式可以直接使用的对象)
主要掌握cookie.history.value 获取history.cookie的值
pageContext.request.ContextPath  获取工程名

jsp的9大内置对象






JSTL :jsp的标准标签库(JSP Standard Tag Library )
JSTL的作用:EL与JSTL的结合可以完美的操作jsp,来替代原始的<%  %>
JSTL主要来操作 if...else      for循环
JSTL的五类标签
core(核心标签)
fn(JSTL提供的EL的函数库)
fmt(国际化标签)
xml(xml标签)(一般不使用)
使用JSTL
1.导jar包  ( Standard包与jstl包)
2.在页面里引入标签库


if标签(重要)

foreach的遍历(重要)
1.遍历数组
2、遍历List集合
3、遍历MAP集合

${  }  里面可以随意加空格
items=“ ${  }” 字符串里面不要随便加空格


MVC
modle模型层  javaBean ( domai    dao     service)
view 视图        层   jsp
controller控制层 Servlet --获取数据-处理业务--跳转页面
回复 使用道具 举报
陈强
EL & JSTL的一天
首先是EL的内容,主要的就是EL的获取功能,可以做各种运算,和EL的11个常用的对象:
-获取功能就是可以获取JSP的四个域中所存放的数据,---${  },前提是这些对象有对应的get方法.数组和有索引的集合获取元素就是之间采用域存放的名称[索引]即可,而Map集合就要根据key来获取,同时有一个需要注意的就是属性名中如果包含有特殊符号的,就要改成[ “ 属性名 ” ],避免被当成字符创处理了.
-EL的常用对象---需要记住就是cookie和pagecontext两个,还有4个就是JSP对应的4个域也是比较好记的—pagescope\requestscope\sessionscope\applicationscope
然后就是JSTL的内容了-JSP的标准标签库
使用的时候就得先引入响应的JAR包---两个!!!!!
然后是要在JSP中引入标签库---taglib----直接使用快捷键就可以完成---ALT+/
此部分的标签重点的就是if和foreach
<c:if>---test中是写表达式的,if标签中的代码只有在test为true的时候才会执行,而且if标签是没有else语句的,所有如果要执行else语句的话,就再写一个if标签,test的表达式为非.
<c:foreach>---当中有var\items\begin\end\step等属性
Items是表遍历的对象,要写在EL表达式内${ 遍历的对象 }
难点是遍历MAP集合,遍历获得的是集合中的键值对,所以要获取对应的键和值,就应该用键值对对象点key和value的形式获得.
最后是MVC模式----Model模型View视图Controller控制.
回复 使用道具 举报
陈世彪:
今天学了EL和JST认识到了MVC
EL的作用
获取数据:(JSP的四个域)
${ pageScope.name }
${ arrs[0] }
${ map.aaa }
${ userList[0].id }
EL还可以执行逻辑运算
${ n1 < n2 } - ${ n1 lt n2 } <!-- less than --><br/>
${ n1 > n2 } - ${ n1 gt n2 } <!-- great than --><br/>
${ n1 <= n2 } - ${ n1 le n2 } <!-- less equal --><br/>
${ n1 >= n2 } - ${ n1 ge n2 } <!-- great equal --><br/>
${ n1 == n2 } - ${ n1 eq n2 } <!-- equal --><br/>
在WEB开发中常用的对象
cookie                                - WEB开发中cookie
${ cookie.history.value }
pageContext                        - WEB开发中的pageContext.
${ pageContext.request.contextPath }
掌握JSTL的常用标签的使用
JSTL要先导两个包
在页面中引入标签库.<%@ taglib uri=”” prefix=””%>
常用的JSTL标签
${ fn:contains("Hello World","Hello") }查看是否包含
${ fn:length("HelloWorld") }查看字符长度
${ fn:toLowerCase("ABCDE") }转小写
遍历集合
<c:forEach var="i" items='${ map}'>
        ${ i }
</c:forEach>
if语句
<c:if test="${ true或者false}">
语句
</c:if>
回复 使用道具 举报
李思贤:EL表达式
语法:${ EL表达式 }
功能:1EL获取数据  2EL执行运算  3EL常用对象(11个)

1现在主要用到的就是获取数据,${ EL表达式 },获取集合或者数组中要在后面加下标,要注意如果属性名中含有特殊字符也要用[ ]

2执行运算: 可以执行算术,逻辑,关系,三元,empty等运算,这里介绍下empty运算,后面有点用;
<h3>empty运算</h3>
${ user == null } - ${ empty user }
${ user != null } - ${ not empty user }

3EL操作WEB常用对象:
pageScope,requestScope,sessionScope,applicationScope - 获取JSP中域中的数据
param,paramValues         - 接收参数.
header,headerValues   - 获取请求头信息
initParam                                - 获取全局初始化参数
cookie                                - WEB开发中cookie
pageContext                        - WEB开发中的pageContext.
后面两个有点用,其他了解:
获取Cookie中的值:
${ cookie.history.value }

获取PageContext中的对象:
IP地址:${ pageContext.request.remoteAddr }
工程路径:${ pageContext.request.contextPath }



JSTL
JSTL和EL结合可以替换页面中<%%>,要注意使用JSTL1.1,因为JSTL1.0不支持EL
JSTL标签库:
core(核心标签),fmt(国际化标签),xml(XML标签),sql(SQL标签),fn(JSTL提供EL函数库)

使用JSTL:
先引入JSTL的2个jar包,
在页面引入标签库<%@ taglib url=””  prefix=””%>
在url中引入的java.sun.com/jsp/jstl/core  注意不要导错了 一定要带jsp
JSTL中核心的两个标签是if标签和forEach标签:

1 if标签用法: 在字符串中写入结果为true或false的判断语句(要用EL语句),尖括号中是判断语句为true输出的结果:       
<c:if test="${ n1 < n2 }">
                                n1小于n2;
</c:if>

2forEach标签用法:
集合或数组遍历 在{ }中填入数组名集合名
<c:forEach var="a"  items="${ list }">
${ a }
</c:forEach>

Map集合遍历
<c:forEach var="a" items="${ map }">
${ a.key }-${ a.value }
</c:forEach>

普通有序遍历:
<h3>遍历从100到300</h3>
<c:forEach var="a" begin="100" end="300" step="5" varStatus="status" >
<c:if test="${ status.count % 3 ==0 }">
<font color="red">${ a }</font>
</c:if>
<c:if test="${ status.count % 3 !=0 }">
<font color="green">${ a }</font>
</c:if>


三MVC
MVC设计模式: JSP+JavaBean+Servlet
M:M:Model:模型层
V:View:视图层
C:Controller:控制层
回复 使用道具 举报
侯玉林
1.为什么学习EL:
        * 简化JSP的代码,而且减少<%%>
       
2.使用EL表达式:
        * 语法:${ EL表达式 }
       
3.EL的功能:
        * 获取数据:(JSP的四个域).
                1.PageScope:范围当前页面
                2.RequestScope:范围一次请求结束(包括请求和响应,响应完,就消失)
                3.SessionScope:范围一次回话(一般关闭浏览器,非法给Cookie设置时间,或者Session销毁)
                4.ApplicationScope:关闭服务器.
               
重点:四个作用域从上到下,范围依次变大.当四个作用域中都有name的key时,而在调用${name}中的name没有指明作用域时,默认调用作用域小的.
                例如:        <%=pageContext.getAttribute("name") %>
                        ${ pageScope.name }

                        <h3>获取List集合的数据</h3>
                        //存数据
                        <%
                                List<String> list = new ArrayList<String>();
                                list.add("李芙蓉");
                                list.add("杨芙蓉");
                                list.add("王凤");
                                pageContext.setAttribute("list", list);
                        %>
                        //取数据
                        ${ list[0] }
                        ${ list[1] }
                        ${ list[2] }
       
               
                       
        * 执行运算:
                例如:
                        <%
                        pageContext.setAttribute("n1", "10");
                        pageContext.setAttribute("n2", "20");
                        pageContext.setAttribute("n3", "30");
                        pageContext.setAttribute("n4", "40");
                        %>
                        ${ n1 + n2 + n3 }

        * 操作WEB开发的常用的对象:
        * 调用Java中方法:--很少用.

4.EL功能:操作WEB开发常用的对象(一共11个,主要记两个:cookie,pagecontext)
        1.cookie                                - WEB开发中cookie
        <h3>获取Cookie中的值</h3>
        ${ cookie.history.value }
       
        2.pageContext                        - WEB开发中的pageContext.
        <h3>获取PageContext中的对象</h3>
        IP地址:${ pageContext.request.remoteAddr }
        工程路径:${ pageContext.request.contextPath }
回复 使用道具 举报
汪志阳:
EL表达式:简化JSP的代码,减少<%%>,页面看起来更整洁.所有能.出来的基层都有get方法
语法:$(EL表达式),表达式可以是对象,数据
功能1:获取数据(数据存储于pageContext,request,sessionScope,applicationScope四个域对象)
首先存入数据:pageContext.setAttribute("name",value):value可以是数组,集合,map等数据
                取值:数组:${arr[1]};        集合:${list[0]};        map:${map.name}       
功能2:执行运算(算数运算,逻辑运算,关系运算)
存数据:pageContext.setAttribute("n1",10); pageContext.setAttribute("n2",20);  pageContext.setAttribute("n3",30)               
算数运算:${ni+n2+n3};
逻辑运算:${n1>n2}-${n1 lt n2} 返回boolear类型[lt:less than(小于);gt:great than(大于);eq:equal(等于);less equal:小于等于]
关系运算:${n1<n2? "true":"false"};
功能3:操作WEB开发的常用对象
pageScope,requestScope,sessionScope,applicationScope - 获取JSP中对应域中的数据
获取cookie中的值(之前需要用数组存储cookie的值,遍历数组,获取cookie中的值)
${cookie.history.value}:获取名字叫history的cookie中的所有值
获取PageContext的对象:
获取IP地址值:${pageContext.request.remoteAddr};
获取工程路径:${pageContext.request.contextPath}
JSPL:JSTL和JSL结合,完全替换了页面中的<%%>.使用jstl首先要导入两个jar包,在标签库<%@ taglib uri=”” prefix=””%>引入包
JSTL的核心掌握标签:if和forEach
利用jstl变量数组,集合和map:先将数据用pageContext.setAttribute存入,然后
<c:forEach var="listName" items="${list }">                ${listName }
解释:用items="${list }"存储数据,然后命名为变量为 var="listName",在调用var,注意map获取key,value需要${mapName.key }${mapName.value }
forEach中的begin和end,step属性可以代培来进行增减遍历.
mvc:现在主流使用的jsp+servlet+javaBean开发模式,今天主要进行初步介绍,明天进行进一步的学习.




回复 使用道具 举报
本帖最后由 hpb199567 于 2018-6-9 21:20 编辑

何平波
今天学EL表达式和JSTL
什么是EL表达式呢?
就是为了使JSP(这里可以与JSTL结合)写起来更简单,可以将<% %>这种写法直接写成${el表达式},不过重点是要存取session(request.getSession.setAttribute("el表达式",
存取的值)),才能直接在JSP的页面调用.
EL有4个功能:
1.获取数据:要存在JSP的4个域中,这4个域分别是
域对象的作用:用于存取数据,获取数据,在不同的资源之间共享数据.
域对象的方法
setAttribute(name,object):保存数据方法
getAttribute(name):获取数据方法
removeAttribute(name):清除数据
4个域对象的作用范围是
page域:处于同一个JSP页面中数据是有效的
request域:处于同一个请求中数据共享是有效的
session域:处于同一个会话中数据共享是有效的
application域:处于同一个web应用中数据共享是有效的
大小执行顺序
<!-- 类似findAttribute("name") 先从page域中查找,没找到去request域中查询,没有找到去session域中找,没有找到就去application域中找 -->
这里的域可以存很多类型的对象,比如数组,集合,javabean对象数据
注意:和[]的区别.  
    []用于有下标的数据(数组,list集合) .用于有属性的数据(map,对象)
    * 如果属性名中包含有特殊的字符.必须使用[]
2.执行运算
比如在JSP的页面中存值n1=10  n2=20;
pageContext.setAttribute("n1", "10");
pageContext.setAttribute("n2", "20");
pageContext.setAttribute("n3", "20");
pageContext.setAttribute("n4", "20");
算数运算:这样的话可以直接在jsp页面中写${n1+n2},会在JSP页面直接显现结果30;
逻辑运算:写成${n1==n2} 或者${n1 qe n2},这样也可以直接在页面中显示结果false
关系运算:${ n1<n2 && n3 < n4 } - ${ n1<n2 and n3 < n4 }<br/>,这样的话也是同样的效果
3.操作WEB开发的常用的对象:
这里的功能可以结合今天的一个案列是在页面显示商品信息
首先要结合前面所学的知识点将数据库中的信息封装在一个list的集合中,然后存入域对象中,这个域对象的name是要在页面中的打印的对象,
value值就是这些在数据库中的商品信息,然后在页面中遍历集合,打印信息<c:forEach item="name"></c:forEach>,具体用法可以参照代码实现.

JSTL
EL表达式可以与JSTL结合起来使用,这样可以替代<% %>,方便了代码的编写.
那么什么是JSTL呢?  JSTL是一个JSP的标签库,它简化,限制作用域,为JSP带来了非常灵活的形式${EL表达式 },通过作用域来获取域中的数据.
JSTL有很多标签,其中forEach(循环标签),if(判断标签)是比较核心的.
具体的格式:
<c:forEach items="${域中存取的属性名称}" var=(这里的名称可以直接代替域中属性的名称)
比如案例,这里已将数据库的商品信息封装在一个list的集合中了,这里就可以直接遍历list
${var的名称.要获取的属性,比如list.id(获取的是list集合中的全部id)}
</c:forEach>
例如:
<c:if test="${list==null}">
        输出结果
</c:if>

点评

不是JSDL,是JSTL  发表于 2018-6-9 10:43
回复 使用道具 举报
吴俊斌
EL表达式
   EL主要是获取四个域中内容,page request session application
    基本用法${可以直接写域名.value}出现同名的就需要在前面添加域
    执行运算 ${"20"+"10"}会自动转成int在做运算
    其他和java差不多
    还可以遍历集合,和if语句
        <c:forEach var= “i”  items =” ” begin=”” end=”” step=”” varStatus=”” >
             ${ i }
           </c:foreach
        <c:if test=” ” var=”” scope=”” >条件成立执行的内容</c:if>
           
    最后学习了MVC的设计模式。M即model,模型层,包括domain,DAO,service这些java类;V即view,
视图层,就是jsp
回复 使用道具 举报
JSP&EL&JSTL总结

李成林
EL表达式
获取:${name};这里是从域中获取,获取特点是从小到大开始寻找根据返回值是value
     ${cookie.name.value}:获取cookie中的值
     ${map.key}
运算:${a>b}返回布尔值
El的对象
有9个需要掌握的有两个
cookie:${ cookie.history.value }获取值
pageContext:${pageContext.request.Contextpath}获取当前项目名
JSTL的核心标签
if:<c:if test="${条件}"></c:if>
forEach:<c:forEach var="变量名" items="${ 遍历的对象 }">循环体</c:forEach>
需要记忆的单词
store(商店)
empty(空的):判断是否为空
not empty()判断是否不为空
param(参数)
scope(处理)
default(未履行)
escape(溜走)
forEach(循环)
test(实验):在<c:if>里书写test="条件"
step():在forEach里书写step(一次循环加几次)
varStatus:在forEach里书写varStutas:设置count或index可以代表当前循环次数
begin(开始)

回复 使用道具 举报
施炎生
今日总结:
今日重点掌握了EL表达式JSTL标签库,了解MVC两种设计模式。

一,学完EL表达式后,在JSP内就可以减少<% %>的使用了,简化了页面。
EL主要有三个功能:1.获取数据,2执行运算,3,操作WEB开发的常用对象
1.获取数据
比起之前使用的<%request.getpramater()%>方便很多,只需使用${参数名}即可。
需要注意的是:
(1)${ name } 获取name的值时,<!-- 类似findAttribute("name") 先从page域中查找,没找到去request域中查询,没有找到去session域中找,没有找到就去application域中找 -->;
(2).和[]的区别.  
    * []用于有下标的数据(数组,list集合) .用于有属性的数据(map,对象(比如user对象内的name属性,直接user.name))
    * 如果属性名中包含有特殊的字符.必须使用[] (这里的特殊字符一般指点.   下横线貌似不算(p.is_hot,比如今日的案例这个is_hot属性直接用点就行))
2,执行运算
<h3>empty运算</h3>
${ user == null } - ${ empty user }
${ user != null } - ${ not empty user }
3.操作WEB开发的常用对象
(1)重点掌握cookie:
<h3>获取Cookie中的值</h3>  :${ cookie.history.value }
(2)重点掌握pageContext
工程路径:${ pageContext.request.contextPath }

二,JSTL进一步简化EL表达式
重点掌握 core(核心标签),fn(JSTL提供EL函数库)
1.使用JSTL:
* 引入JSTL的相关的jar包.
* 在页面中引入标签库.<%@ taglib uri=”” prefix=””%>
2.重点掌握这两个标签的使用:
遍历Map集合:
(1)<c:forEach var = "entry" items= "${map}">
    ${entry.key}-${entry.value}
</c:forEach>
(2)
<h3>遍历从100到300,并将能整除3的用红色字体输出</h3>
        <c:forEach var="i" begin="100" end="300" step="5" varStatus="status" >
                <c:if test="${status.count%3==0 }">
                        <font color="red">${i}</font>               
                </c:if>       
        </c:forEach>
有两个容易出BUG的地方需注意:
美元符忘加(for循环内两个),美元符外双引号内的空间不能出现空格。
回复 使用道具 举报
本帖最后由 COLDER 于 2018-10-18 19:34 编辑



[EL&JSTL And MVC]

1.EL是什么?
EL(Expression Language)从英文翻译来看,这是一种表达语言,它提供了在JSP中简化表达式的方法.

2.EL的作用?
使用EL表达式可以简化JSP的代码,就是可以减少在JSP中使用<% %>来获取域中的数据...为什么需要这样做呢?
据说是因为如果JSP文件中都是<% %>这样的表达式的话,让美工来对其进行图片修改...她会懵圈看不懂的...
所以使用EL表达式的目的是这样的吗?当然在写,代码上的确是效率比较高呢!

3.EL的表达式?
语法:${ EL表达式 },使用EL表达式记得使用$符号,为什么是用$这个符号呢?我想应该是跟老美有关系吧,如果是中国
人设计出来的话,会不会是用¥这个符号呢?唉,只能强行记住了...饿,走远了....

4.EL的功能?
(1).EL获取JSP域中的数据:
如果是使用<% %>:<% pageContext.getAttribute("name","value") %>
现在使用${ }: ${ pageScope.name } 可以把"."理解为"的",意思就是取出pageScope的name
还可以使用 ${ name },这种表达会默认从最小的域中查找name对应的value值,当找到就输出,如果找不到的话,就往
更大范围的域查找,依次是pageContext,request,session,application
*获取域数据可以获取数组的数据,List集合的数据,Map集合的数据,区别在数组和List集合都是有索引的,所以根据
索引来获取:表达式 ${ arrs[index]},而Map集合就根据键来获取值,因为键是唯一的.
(2).EL的执行运算:算术运算,逻辑运算,关系运算,三元运算,empty运算,这些和java中类似
empty运算: ${ user == null} , ${ user != null}

(3).EL操作WEB开发的常用对象
pageScope,requestScope,sessionScope,applicationScope - 获取JSP中域中的数据
param,paramValues        - 接收参数.
header,headerValues         - 获取请求头信息
initParam        - 获取全局初始化参数
*(重点)cookie                - WEB开发中cookie , 获取Cookie中的值:${cookie.name.value}
*(重点)pageContext        - WEB开发中的pageContext , 获取工程路径:${ pageContext.request.contextPath }

5.JSTL是什么?
JSTL是JSP的标准标签库,作用是结合EL来替换JSP页面中的<%%>

6.JSTL的标签库有哪些?
core(核心标签),fmt(国际化标签),xml(XML标签),sql(SQL标签),fn(JSTL提供EL函数库)
core(核心标签):if,foreach
fn(JSTL提供EL函数库):contains,length,toLowerCase,split

7.使用JSTL需要做的准备?
(1).引入JSTL的相关的jar包. (2).在页面中引入标签库.<%@ taglib uri=”” prefix=””%>

回复 使用道具 举报
黄志彬
今天学习了EL表达式语言 作用就是简化了JSP的写法,可以减少<% %>。获取域中的数据,存取的是普通的单值数据,获取数组和集合中的数据。执行运算 里的empty  判断对象是否为空会经常用得到
操作对象有11个对象可以直接在el表达式中使用,主要是cookie和pageContext
cookie                        web开发中的cookie                直接${ cookie.history.value } 可以用来记住用户名
pageContext                web开发中的pageContext                获取工程路径 ${pageContext.request.contextPath }

由于EL表达式解决JSP 替换<% %>中的获取数据java代码,但不能替换if。esle.for循环...
所以又学习了jstl

JSTL
标签库包含5类标签主要的是core核心类标签和        fn    JSTL提供EL函数库
jstl的使用
1.引入jstl相关的jar包(2个)jstl.jar   standard.jar
2.引入jstl标签库      <%@ taglib uri=""  prefix=""   %>
常用的标签 core核心类标签  if和forEach标签,注意forEach里的   sitems="${arr}"    双引号里面${}外面不能有空格

最后学习了MVC  
M:Model:模型层  
V:View:视图层
C:Controller:控制层

回复 使用道具 举报
叶凌青
今天学了EL表达式 最重要的功能是1.从域中获取数据 2.还可以执行运算
常用的11对象,要掌握的是cookie pageContext
jstl
主要掌握 if标签和foreach标签
要导入两个jar包
还学习了MVC设计模式
M模型层  domain+dao+service
V视图层 jsp
C控制层 servet
自己做的总结挺乱,就不上传了.
回复 使用道具 举报
曾耀峰
web07_EL&JSTL总结:
   今天的内容逻辑不难,主要以了解记忆为主。唯一的一个案例显示数据库的数据到前端页面展示,是在前面的作业有做过。案例的关键方法如下:
1.DAO查询多个结果返回对象集合:
ArrayList<Product> productList  = QueryRunner("select * from product",new BeanListHandler<product>(product.class));再次回顾一下这个方法,有两个作用:
1).BeanListHandler()接口实例化的对象,通过商品类的字节码文件,反射得到类的属性对象,和数据库的字段名比较,当类的成员属性和字段名一样的时候,就会把数据库的数据填充到类的成员属性中。得到一个完整的对象。所以,用户传入一个username,password的两个数据,可以通过这个操作得到该用户的更详细信息,比如昵称,属性等。
2)该方法返回了一个装有Bean实体对象的集合,这个集合就是案例要求的后台数据表

2.制作前端页面的表格,展示后台的数据。根据1)分析得到了productList,把它放在session空间中。在前端product_list.jsp页面中,通过今天学习的JSTL和EL表达式获取Session中的product:
<c:forEach var "i" items ="${productList}">
<td>${i.pname}</td>
<td>${i.shop_price}</td>
<td>${i.pdesc}</td>
<c:if test="${i.is_hot==1}">
<c:out value="是"/>
</c:if>
<c:if test = "${i.is_hot !=1}">
<c:out value="是"/>
</c:if>
</c:forEach>
    貌似今天学的核心内容就在上面的这段代码里面了。接下来总结一些要记的EL表达式和JSTL常见用法

一、EL表达式

    首先在EL表达式和JSTL中有四个域对象(作用范围):pageContext,requestContext,sessionContext,applicationContext 这四个作用范围 从小到大,当四个域对象存储相同名字的数据时,EL获取${name} 得到的是最小范围的值:pageContext.EL有以下作用:
1.获取域对象中的值:${name} 等价于<%=request.getSession.getAttribute("name")%>
2.获取常见的数据对象:
1).获取集合的值:${list[0]}
2).获取map的值:${map.aaa};
3).获取对象的值:$(user.id);
4)获取装有对象的集合的对象成员变量:$(userlist[0].id);
3.作为表达式进行运算
4.EL中有11个对象,掌握两个重点:
1)四个:pageScope,requestScope,sessionScope,applicationScope 获取Jsp域中的数据
2)二个:param,paramvalues。分别是获取一个参数,获取全部参数
3)二个:header,headerValues:获取请求头信息
4)一个:initParam:获取初始化参数
上面的对象纯了解。下面两个重点掌握:
1)cookie:WEB开发中的cookie
2)pageContext:web开发中的pageContext:这个对象能获取所有域对象中的数据

二、JSTL:

  JSTL的出现是为了简化JSP的代码简写,我们利用JSP做过for循环的嵌套可以知道,JSP对网页的跳动挺大的,容易造成前端页面的困扰。使用JSTL的标签形式能集中写JSP代码。
1.使用JSTL:下载jstl.jar包和standard.jar包,放在/WEB-INF/lib/里面。在JSP页面中要引用任何库的话,必须加一个头指令:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 这个表示引用JSTL的核心标签库
2.重要的核心库标签:
1)<c:forEach> 标签是一种迭代标签,接受多种集合类型:
(1)属性:
items:要被循环的集合,记得加${myList}这个符号
var:当前项的变量名称  var="i" 记住 不是value
begin:开始的元素索引位置
end:最后的元素元素索引位置
step:每次循环加多少:默认是0,step="2"表示一次加2

varStatus:"s"  s.count 表示当前的循环次数
2)<c:if>标签相当于if()语句,格式是:<c:if test="${判断条件}"

<c:if test="${i%2==0}">
<font color='red'>${i}</font>
</c:if>
for标签和if标签重点掌握,其余了解
3)<c:out>        :用于在JSP中显示数据,就像<%= ... >
把输出的内容放在value,escapeXml忽略转义字符
<c:forEach var="entry" items="${cartMap}">
<c:out value="${entry.key }"/>
4)<c:redirect url="www.baidu.com"/>重定向

3.作用域范围:
scope属性值设置变量的作用域(作用范围)
在JSTL中有四个作用范围,由小到到一次是
pageContext<requestContext<sessionContext<ServletContext

三、MVC设计模式:

MVC是一种设计思想,核心内容是model模型,view显示,controller控制三个模块。开发的原则是view显示方面只做数据显示工作;model主要是一些Bean实体类,还有普通的java类;contorller通过调用model做逻辑数据操作。因此,后面负责view方面的jsp就尽量只做数据接收和显示的操作。逻辑代码都放在servlet中处理,最后返回jsp页面。
  MVC中,一个请求最先发送到Servlet中,然后Servlet经过处理以后,返回到JSP页面,JSP根据Servlet处理的数据集合,或者结果。展示到前端。
  这样的有序操作能提升代码的逻辑结构,并且有较好的扩展性
  MVC包的建立:
  com.web.dao:DAO数据库操作
  com.web.service:连接DAO和Servlet的中间服务
  com.web.servlet:放Servlet接收用户请求
  com.web.utils:常用的工具类
  com.web.bean:javaBean实体类(User类,Product类这些)

四、老师总结的关于Session的生命周期

   Session默认是在request对象第一次访问Session空间的时候创建(通过request.getSession().setAttribute()方法),这时候服务器给request一个SESSIONID,通过cookie带回浏览器。当浏览器关闭的时候,Session不会消失的。如果清空了浏览器的缓存,Session也不会消失。而是以游离状态存在服务器端,因为装在cookie里面的SEESIONID丢了。
   Session默认的寿命是30分钟(意思是30分钟内没有对象访问seesion会被注销),要手动设置寿命,可以在web.xml中设置;非正常关闭服务器,Session来不及序列化保存到硬盘中,也会被注销。如果正常关闭,Session会保存下来;另外还有Session的方法inval....什么来着可以结束Session;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马