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 属性来载入那个单独的文件。 |
相关文章推荐
- 17.11.16,web学习第五天,还有一年,努力吧青年!
- 17.12.06,web学习第二十天,还有一年,努力吧青年商城增删改查记忆
- 18.01.11,web学习第四十天,还有一年,努力吧青年 struts2第二天 action创建+result处理+获取数据方式
- 17.12.14,web学习第二十六天,还有一年,努力吧青年 Linux入门
- 17.12.11,web学习第二十三天,还有一年,努力吧青年Listener
- 17.12.26,web学习第三十三天,还有一年,努力吧青年 商城项目第六天 ajax,文件上传
- 17.11.14,web学习第四天,还有一年,努力吧青年!
- 17.12.16,web学习第二十七天,还有一年,努力吧青年redis
- 17.11.28,web学习第十四天,还有一年,努力吧青年HttpServletResponse
- 17.11.13,web学习第三天,还有一年,努力吧青年!
- 17.12.03,web学习第十七天,还有一年,努力吧青年JSP
- 17.12.13,web学习第二十五天,还有一年,努力吧青年动态代理
- 17.12.22,web学习第三十一天,还有一年,努力吧青年 商城项目第四天订单提交在线支付
- 18.01.08,web学习第三十九天,还有一年,努力吧青年 struts2第一天 搭建框架
- 17.11.18,web学习第六天,还有一年,努力吧青年
- 17.12.19,web学习第二十九天,还有一年,努力吧青年ajax,cookie,分类分页显示
- 18.01.04,web学习第三十七天,还有一年,努力吧青年 hibernate第三天 一对多,多对多
- 18.01.06,web学习第三十八天,还有一年,努力吧青年 hibernate第四天 HQL,Criteria,离线对象,查询策略
- 17.12.12,web学习第二十四天,还有一年,努力吧青年过滤器Filter
- 17.11.26,web学习第十二天,还有一年,努力吧青年HTTp协议和TomCat服务器