【JavaEE】jsp学习笔记之el技术和jstl

来源:互联网 发布:淘宝老瑞贸易可信吗 编辑:程序博客网 时间:2024/06/06 09:37

一、EL技术

1.EL表达式(取值)

嵌入到jsp页面,替代jsp页面中脚本的编写

2.EL从域中取出数据(最重要的作用)

格式:${EL表达式}  request.getAttribute(name)--------${requestScope.name}

①EL获得pageContext域中的值:${pageContextScope.key},

②EL获得request域中的值:${reuqestScope.key},

③EL获得session域中的值;${sessionScope.key},

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

⑤获得值${key},顺序依次向下

<!-- 模拟域中的数据 --><%//存储字符串request.setAttribute("name", "zhangsan0");//存一个对象User user = new User();user.setId(1);user.setName("zhangsan");user.setPassword("123");session.setAttribute("user", user);//存一个集合List<User> list = new ArrayList<User>();User user2 = new User();user2.setId(2);user2.setName("zhangsan2");user2.setPassword("1232");list.add(user2);User user3 = new User();user3.setId(3);user3.setName("zhangsan3");user3.setPassword("1233");list.add(user3);application.setAttribute("list", list);%><!-- 脚本取出值 --><%=request.getAttribute("company") %><%User sessionUser = (User)session.getAttribute("user");out.write(sessionUser.getName());%><!-- 使用EL表达式取值 -->${requestScope.name}${sessionScope.user.name}${applicationScope.list[1].name }

3.EL内置对象(11个)

①pageScope

②requestScope

③sessionScope

④applicationScope

⑤param,parpamValues----接收参数 (相当于request.getParamter() request.getParamterValues())

⑥header,headerValues     -----------${header["User-Agent"],,,header.host}

⑦initParam---获取全局参数---(相当于this.getServletContext().getInitParamter(name))

⑧cookie

⑨pageContext ----可以获得其他jsp八大内置对象----${pageContect.request.contextPath}

4.EL执行表达式(可以执行运算,只要有结果就行)

${1+1},${user==null?true:false}

${empty user}----------关键字empty,判断某个对象是否是null,是null返回true(""空字符串也解析是null)

二、JSTL技术(JSP Standard Tag Library)-----JSP标准标签库

1.主要完成逻辑功能,代替jsp页面中的脚本代码,有5个子库,常用的是core库(核心库)

①core-------http://ja.....------------c(核心库)

②I18N--------------------------------fmt(格式库),国际化

③SQL--------------------------------sql(基本废弃)

④XML---------------------------------x

⑤Functions-------------------------fn

2.下载jstl包,使用jsp的taglib指令导入核心库

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

3.常用标签:

<!-- test代表的是返回的boolean的表达式 --><c:if test="${1==1}">xxxx;</c:if><%request.setAttribute("count", 10);%><c:if test="${count==10 }"><!--大括号内部写表达式运算  -->xxxyyy;</c:if>
②---1

<!-- forEach模拟 for(int i=0;j<=5;i++){syso(i)} --><c:forEach begin="0" end="5" var="i">${i}<br/></c:forEach>
②---2

<!-- 模拟增强for for(Profuct product:productList){syso(product.getName())}--><!-- items:集合或数组 var:代表集合当中的某一个元素--><c:forEach items="${productList}" var="pro">${pro.pname}<br/></c:forEach>
③:示例代码:

<%@page import="java.util.Map"%><%@page import="java.util.HashMap"%><%@page import="com.pdlpdy.domain.User"%><%@page import="java.util.ArrayList"%><%@page import="java.util.List"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><%//模拟List<String> strListList<String> strList = new ArrayList<String>();strList.add("one");strList.add("two");strList.add("three");request.setAttribute("strList", strList);//模拟List<User>List<User> userList = new ArrayList<User>();User user1 = new User();user1.setId(1);user1.setName("pdl");user1.setPassword("1");userList.add(user1);User user2 = new User();user2.setId(2);user2.setName("pdl2");user2.setPassword("2");userList.add(user2);application.setAttribute("userList", userList);//遍历Map<String,String>Map<String,String> strMap = new HashMap<String,String>();strMap.put("name","n1");strMap.put("age","1");strMap.put("addr","addr1");strMap.put("email","n1@n1.com");session.setAttribute("strMap", strMap);//遍历Map<String,User>Map<String,User> userMap = new HashMap<String,User>();userMap.put("user1", user1);userMap.put("user2", user2);request.setAttribute("userMap", userMap);%><h1>取出strList数据:</h1><c:forEach items="${strList}" var="str">${str }<br></c:forEach><hr><h1>取出userList数据:</h1><c:forEach items="${applicationScope.userList}" var="user">${user.name }<br></c:forEach><hr><h1>取出strMap数据:</h1><c:forEach items="${sessionScope.strMap}" var="entry">${entry.key}:${entry.value}<br></c:forEach><hr><h1>取出userMap数据:</h1><c:forEach items="${requestScope.userMap}" var="entry">${entry.key }:${entry.value.name}---${entry.value.password }<br></c:forEach></body></html>

4.javaEE的开发模式

1)什么是模式:

模式在开发过程中总结的“套路”,总结出的一套流程或设计模式

2)javaEE经历的模式

①model1模式:

技术组成:jsp+javaBean

弊端:随着业务的复杂性导致jsp页面比较混乱

②model2模式:

技术组成:jsp+servlet+javaBean

优点:开发中使用各个技术擅长的方面

servlet:擅长处理java业务代码

jsp:擅长页面的现实

MVC:---web开发的设计模式

M:model---模型-----javaBean:封装数据

V:view------视图-----jsp:单纯的进行页面显示

C:controller----控制体-----Servlet:获取数据,对数据进行封装,传递数据,指派显示的页面

3)javaEE的三层架构

服务器开发时,分三层:

web层:与客户端交互

service层:复杂业务处理

dao层:与数据库进行交互

通过包结构体现

MVC与三层架构关系:


原创粉丝点击