0315 el技术和jstl技术 javaEE开发模式

EL表达式是嵌套在jsp代码中用于简化jsp中java代码的书写 其最重要的作用就是取值

一般我们在取值的时候<%=request.getAttribute(name)%>类似这样的标签去取值

简便方法${key值 } 这样会依次从pageContext域,request域,session域,application域中去获取这个对应key的属性,一旦找到则不会再往后找,所以要注意在域中存储数据的时候key的名字不要重复(其底层就是封装了findAttribute方法)

在取值集合的时候要搭配下标取值,同时el表达式还可以做运算和判断是否为空,同时还可以写三目运算符

可以获取八大隐式内置对象${pageContext.request.contextPath} 这样可以获取当前项目名称

代码展示

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.oracle.daomain.Users"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	//pageContext.setAttribute("name", "pageContxt");
	//存储字符串
	request.setAttribute("name", "request");
	//存储一个对象
	Users user=new Users();
	user.setId(1);
	user.setUsername("lisi");
	user.setPwd("123");
	session.setAttribute("user", user);
	//存储一个集合
	List<Users> list=new ArrayList<Users>();
	Users user1=new Users();
	user1.setId(1);
	user1.setUsername("wangwu");
	user1.setPwd("123");
	list.add(user1);
	Users user2=new Users();
	user2.setId(1);
	user2.setUsername("zhaoliu");
	user2.setPwd("123");
	list.add(user2);
	application.setAttribute("List", list);
%>
<!-- 取值 -->
${name }
${user.id }...${user.username }...${user.pwd }<br>
${List[0].id }...${List[0].username }...${List[0].pwd }<br>
${List[1].id }...${List[1].username }...${List[1].pwd }<br>
${1-1 }<br>
${!empty user }<br>
${user==null?"登录":"欢迎" }
</body>
</html>

  

 JSTL技术(搭配el表达式使用)

JSTL是嵌入到jsp中的标准标签库,随着发展我们使用最常用的core标签库

还记得jsp中的三大指令么,其中第三大指令taglib指令就是用来引入标签库,格式:<%@ taglib uri="标签库地址" prefix="前缀"%>

应用时需要导入jar包

 

 

 那我们就可以应用常用标签

<c:if test=" "></c:if>

用于if判断 test中写的是判定条件,只有if没有else 所以结合实际情况合理使用非

<%@ 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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:if test="${empty user }">
登录 注册
</c:if>
<c:if test="${!empty user }">
欢迎你,${user.username }
</c:if>
</body>
</html>

  先访问demo02.jsp 再访问demo04.jsp 就会显示的时候欢迎xxx

直接访问demo04.jsp就会显示登录注册 因为域中并没有数据

<c:forEach ></c:forEach>

主要用于循环

模拟普通for循环

<!-- 普通for -->
<c:forEach begin="0" end="10" var="i">
	${i }
</c:forEach>

 模拟增强for 遍历list集合 map集合 和map集合嵌套

demo02.jsp

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.oracle.daomain.Users"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	//pageContext.setAttribute("name", "pageContxt");
	//存储字符串
	request.setAttribute("name", "request");
	//存储一个对象
	Users user=new Users();
	user.setId(1);
	user.setUsername("lisi");
	user.setPwd("123");
	session.setAttribute("user", user);
	//存储一个集合
	List<Users> list=new ArrayList<Users>();
	Users user1=new Users();
	user1.setId(1);
	user1.setUsername("wangwu");
	user1.setPwd("123");
	list.add(user1);
	Users user2=new Users();
	user2.setId(1);
	user2.setUsername("zhaoliu");
	user2.setPwd("123");
	list.add(user2);
	application.setAttribute("List", list);
	//存储Map集合
	Map<String,Users> map=new HashMap<String,Users>();
	map.put("java1127",user1);
	map.put("java1128", user2);
	application.setAttribute("Map", map);
	Map<Users,Map<String,Users>> map1=new HashMap<Users,Map<String,Users>>();
	map1.put(user1, map);
	map1.put(user2, map);
	application.setAttribute("Map1", map1);
%>
</body>
</html>

  demo04.jsp

<%@ 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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 普通for -->
<c:forEach begin="0" end="10" var="i">
	${i }
</c:forEach>
<!-- 增强for -->
<c:forEach items="${List }" var="user">
	${user.id }...${user.username }...${user.pwd }
</c:forEach>
<br>
<c:forEach items="${Map }" var="entry">
	${entry.key }..${entry.value.id }...${entry.value.username }...${entry.value.pwd }
</c:forEach>
<br>
<c:forEach items="${Map1 }" var="entry">
	${entry.key.id }...${entry.key.username }...${entry.key.pwd }
	<c:forEach items="${entry.value }" var="entry2">
	${entry2.key }...${entry2.value.id }...${entry2.value.username }...${entry2.value.pwd }
	</c:forEach>
	<br>
</c:forEach>
</body>
</html>

  

javaEE开发模式

一般有两种开发模式,

1.jsp+javaBean的模式

这种模式什么代码都写在jsp中 所以导致页面比较混乱

2、jsp+servlet+javaBean的模式

这种模式特点就是各自使用各自擅长的方面 servlet擅长java代码,jsp擅长页面代码

MVC是web开发模式与java没有关系

M--代表的模型(model )javaBean 用来封装数据 类似实体类

V--view 代表界面 代表jsp页面

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

MVC与JavaEE三层架构有什么关系

mvc的设计思想就是在我们的web层体现的

posted @ 2021-03-15 10:57  公雪  阅读(144)  评论(0)    收藏  举报