• 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层体现的

  • 相关阅读:
    NOIP初赛知识点大全-普及+提高组
    cron表达式详解,cron表达式写法,cron表达式例子
    n2n的编译和运行、配置
    Visual Studio 2017 扩展
    iis url重写
    http重定向到https
    基于git命令的代码统计方法
    UseSwagger
    docker中mysql数据库的数据导入和导出
    Win10远程桌面提示你的凭据不工作的处理方法
  • 原文地址:https://www.cnblogs.com/-gongxue/p/14536338.html
Copyright © 2020-2023  润新知