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

17.12.04,web学习第十八天,还有一年,努力吧青年EL和JSTL

2017-12-04 20:08 405 查看

EL和JSTL

1. EL express Language 可以嵌入在jsp页面内部,减少减少jsp脚本的编写。EL最重要的作用就是从四大域中取数据。格式:$(EL 表达式)。

   Jsp:<% =request.getAttributeName(“”)%>

EL:${requestScope.name}

获得PageContext域中的值:${pageScope.Key};

获得Request域中的值:${requestScope.Key};

获得Session域中的值:${sessionScope.key};

获得application域中的值:${applicationScope.key};

从四个域中检索某个值:${key}同PageContext;

获得普通字符串:${pageScope.key}

获得User对象的值:${sessionScope.key.name}

获得List<User>的值:${applicationScope.key[x].name}

EL的全域查找:

${省略...Scope后面的得写}  。。。集合的键名不能和其他重复!!

2. 以后的开发中jsp主要用来显示数据,不要过多的嵌入java代码,所以EL的内置11个对象(这11个是用来接收数据的,这个接收数据是很早以前使用的了)没那么重要了。

pageScope,requestScope,sessionScope,applicationScope---获取jsp域中的数据

Param,paramValues-接收参数相当于request.getParamter(),,request.getParameterValues();

header,headerValues()-获取请求头信息相当于request.getHeader(name);注意特殊字符”User-Agent”需:

例:${header[“User-Agent”]}

initParam-获得全局初始华参数相当于this.getServletContext.getInitParameter(name);

例:<context-param>
<param-name>aaa</param-name>通过aaa获得xxx
<param-value>xxx</param-value>
<context-param>
${param.aaa}
Cookie-web开发中的cookie相当于request.getCookies()-cookie.getName()-cookie.getValue()

pageContext -web开发中的pageContext;用来获取其他八大对象

pageContext对象是这十一个对象中唯一要记住的,用来${pageContext.request.contextPath}拿到应用名在form表单或者其他地方动态显示应用名。比如请求图片时用到服务器名的这种客 户端访问服务器端的相对地址都用这种动态显示。其实Http请求不是访问一次,这个理解就行。

<%=pageContext.getRequest().getContextPath()%>有误差,因为  pageContext。Getrequest()拿的是ServletRequest,只有
httpServletRequest可以拿到项目名的方法。

3.  EL的执行表达式:表达式运算,只要有结果的都可以执行

例:${1}    ${1+1}   ${1==1?true:false}

判断对象是否为空,它认为空字符串也为空${empty “”} 是空返回 true。后期会用到。

El不能进行逻辑判断。只能简化从四大域中取数据。

EL可以放在””内部,但必须放在jsp内!

Jsp已经不用从客户端接收请求的功能了。

4. JSTL jsp标准标签库,可以嵌入在jsp页面中完成业务逻辑。同样也是为了替代jsp中的脚本代码。它有5个子库,目前常使用他的核心库。
Jstl需要下载和导入jar包:jstl.jar和standard.jar
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core”  prefix=”c” %>
两个常用标签:<c:if test=”借助el表达式${}输出true或fasle”>   </c:if>   这个用于商城登录显示是否成功!
例:  <c:if text="${empty name}">
<li><a href="login.jsp">${name}</a></li>
<li><a href="register.jsp">退出</a></li>
</c:if>
第二个标签:
<c:forEach>标签
<c:forEach begin="0" end="5" var="i">
${i}
</c:forEach>
<c:forEach items=”${xxx}” var=”pro”> </c:forEach>
Items:一个集合或数组  var :代表集合的某一元素
遍历List<String>的值
<%
List<String> dl=new ArrayList<String>();
dl.add("111111");
request.setAttribute("l", dl);
%>
<c:forEach items="${l }" var="val">
${val }
</c:forEach>

遍历List<User>的值
<%
List<JB> list=new ArrayList<JB>();
JB jb1=new JB(); jb1.setName("wly1");
JB jb2=new JB(); jb2.setName("wly2");
list.add(jb1);
list.add(jb2);
request.setAttribute("list", list);
%>
<c:forEach item=”{$list}” var=”l”>
${l.name}
</c:forEach>
输出:wly1 wly2

遍历Map<String,String>的值
<%
Map<String,String> map=new HashMap<String,String>();
Map.put(“1”,”1”);
Map.put(“2”,”2”);
request.setAttribute(“map”,”map”);
%>
<c:forEach items=”${map}” var=”map”>
${map.key}
${map.value}
</c:forEach>

遍历Map<String,User>的值
<%
Map<String,JB> map=new HashMap<String,JB>();
JB jb=new JB(); jb.setName(“啊啊”);
Map.put(“jb”,jb)
request.setAttribute(“map” ,map);
%>
<c:forEach items=”${map} ” var=”map”>
${map.value.name}
</c:forEach>
遍历Map<User,Map<String,user>>的值.......


5. javaEE开发模式

javaEE经历的模式:

Model1:jsp+javaBean 弃

Model2:jsp+servlet+javaBean

MVC:web开发的设计模式。

M:model  模型 javaBean 封装数据

V:View 视图 jsp:单纯的显示数据

c:controller 控制器 servlet 获取数据-对数据进行封装-传递数据-
指定显示的jsp页面。

6. javaEE的三层架构

Web层:与客户端交互

Service层:复杂业务处理

Dao层:与数据库进行交互

MVC于三层架构的关系:

Mvc位于三成架构的web层

学习:

Web层学习struts2 springMVC

Service层学习:spring

Dao层学习:hibernate mybatis

7. 三层架构重写jsp写的商品显示案例

注意点:

1)分包:web包 service包 dao包 JBbean包 util包  

2)Jsp中图片动态显示地址应加上项目名!!!

3)El表达式:这个案例在思路和编写代码时很流畅,主要问题出现在el表达式上:${request.name}获得集合数据,并使用<c:forEach items=”${request.name}” var=”JB”>在内部遍历时要注意获取信息时不能使用方法直接${JB.name}!!!

4).和[]区别,特殊字符用[]

<script type="text/javascript" src="/w3school.com.cn/abc.js">....</script>
对特别长的 JavaScript 程序或者经常重复使用的程序来说,你可以希望将这些代码存放到一个单独的文件中。在这样的情况下,让浏览器通过 src 属性来载入那个单独的文件。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐