1 EL技术

1.1 EL 表达式

EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,

EL出现的目的是要替代jsp页面中脚本的编写,就是简化java代码。

1.2 EL最重要的作用:从域中取出数据

jsp脚本:<%=request.getAttribute(name)%>

EL表达式替代上面的脚本:${requestScope.name}

1.2.1获得四大域中的数据

格式 ${EL表达式}

EL获得pageContext域中的值:${pageScope.key};

EL获得request域中的值:${requestScope.key};

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

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

例:demo01.jsp:

<%
request.setAttribute("name", "zhangsan");
%>
${requestScope.name}

1.2.2 EL从四个域中获得某个值

${key};

相当于pageContext.findAttribute("key");

同样是依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不再向后寻找。

例:

<%
pageContext.setAttribute("name", "lisi");
request.setAttribute("name", "zhangsan");
%>
${name}

1.2.3获取属性

获得普通字符串

获得User对象的值

获得List<User>的值

例:

User实体类:

public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}

demo02.jsp:

<%
//普通字符串
request.setAttribute("username", "小红帽");
//User对象
User user=new User();
user.setName("大灰狼");
user.setAge(18);
session.setAttribute("User", user);
//List<User>
User user02=new User();
user02.setName("外婆");
user02.setAge(55);
List<User> list=new ArrayList<User>();
list.add(user);
list.add(user02);
application.setAttribute("UserList", list);
%> <!-- 获取字符串 -->
<p>username:${username}</p>
<!-- 获取User对象 -->
<p>User:${User.name}...${User.age}</p>
<!-- 获取List -->
<p>UserList:${UserList[0].name}...${UserList[1].age}</p>

1.2.4 pageContext获得其他八大对象

比较重要的:${pageContext.request.contextPath} 获得web应用名称

例:

<!-- 获取web应用名称 -->
<p>web应用名称:${pageContext.request.contextPath }</p>

1.3 EL执行表达式

例如:

${1+1}   可以运算

${empty user}  判断user是否为空,为空:true(判断的是域里面的key值)

${user==null?true:false}  三目运算符

例:

<!-- EL执行表达式 -->
${1+1 }<br>
${empty User}<br>
${UserList==null?"空":"不空"}

2 JSTL技术

JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。

jstl出现的目的同el一样,也是要代替jsp页面中的脚本代码。

JSTL标准的标准标签库有5个子库,但随着发展,目前常使用的是核心库Core

2.1 JSTL下载与导入

“http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”下载JSTL的安装包:

jakarta-taglibs-standard-1.1.2.zip

将这两个jar包加到项目中:

2.2使用jsp的taglib指令导入核心标签库

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

2.3 JSTL核心库的常用标签

JSTL标签要与EL表达式配合使用

1)<c:if test=””>标签

其中test是返回boolean的条件

例:

<c:if test="${1!=1}">
1!=1
</c:if>
<c:if test="${1==1}">
1==1
</c:if>

<c:if test="${empty User}">
登录
</c:if>
<c:if test="${!empty User}">
${User.name}
</c:if>

2)<c:forEach>标签

例1:

    <!-- 普通for -->
<c:forEach begin="0" end="10" var="i">
${i }
</c:forEach> <hr> <!-- 增强for -->
<c:forEach items="${UserList}" var="user">
${user.name}...${user.age}
</c:forEach>

例2:遍历

遍历List<String>的值

遍历Map<String,String>的值

遍历Map<String,User>的值

遍历Map<User,Map<String,User>>的值

    <!-- List<String> -->
<c:forEach items="${StringList}" var="str">
${str}
</c:forEach> <hr> <!-- Map<String,String>遍历 -->
<c:forEach items="${StringMap}" var="entry">
${entry.key}...${entry.value}
</c:forEach> <hr> <!-- Map<String,User>遍历 -->
<c:forEach items="${UserMap}" var="entry">
${entry.key}...${entry.value.name}...${entry.value.age}
</c:forEach> <hr>
<!-- Map<User,Map<String,User>>遍历 -->
<c:forEach items="${UserMaps}" var="entry">
<h4>${entry.key.name}...${entry.key.age}</h4>
<c:forEach items="${entry.value}" var="entry1">
${entry1.key}...${entry1.value.name}...${entry1.value.age}<br>
</c:forEach>
</c:forEach>

(数据存入的代码没贴)

3 javaEE的开发模式

3.1什么是模式

模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式

3.2 javaEE经历的模式

model1模式

  技术组成:jsp+javaBean(实体类)

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

model2模式

  技术组成:jsp+servlet+javaBean

  model2的优点:

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

    servlet:擅长处理java业务代码

    jsp:擅长页面的实现

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

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

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

  C:Controller----控制器 Servelt:获取数据--对数据进行封装--传递数据--指派显示的jsp页面

3.3 javaEE的三层架构

服务器开发时 分为三层:

web层:与客户端交互----这里体现了MVC

service层:复杂业务处理

dao层:与数据库进行交互

开发实践时,三层架构通过包结构体现

4实例

1)列表实例改成用EL和JSTL实现

    <c:forEach items="${ProductList}" var="product">
<div class="col-md-2" style="height:250px">
<a href="product_info.htm"> <img src="${product.pimage}"
width="170" height="170" style="display: inline-block;">
</a>
<p>
<a href="product_info.html" style='color: green'>${product.pname}</a>
</p>
<p>
<font color="#FF0000">商城价:&yen;${product.market_price}</font>
</p>
</div>
</c:forEach>

2)实例2:完成产品详情页

在列表页的跳转那里,加一个参数:

<a href="productInfoServlet?pid=${product.pid}">

productInfoServlet:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接收参数
String pid=request.getParameter("pid");
//调用Service层方法
Product pro=productService.lookProduct(pid);
request.setAttribute("Product", pro); //存入数据
request.getRequestDispatcher("/product_info.jsp").forward(request, response); //请求转发
}

product_info.jsp中用el表达式获取相关属性信息:

${Product.pimage}

${Product.pname}

${Product.shop_price}

Tips:一个servlet只完成一个功能

动态页面技术----EL技术、JSTL技术,javaEE的开发模式的更多相关文章

  1. jsp基础、el技术、jstl标签、javaEE的开发模式

    一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...

  2. Java第三阶段学习(十四、JSP动态页面、EL表达式、JSTL标签库)

    一.JSP技术 1.jsp脚本和注释 jap脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部,比如写在doget.dopost 内的代码 2) ...

  3. 【JAVAWEB学习笔记】18_el&jstl&javaee的开发模式

    一.EL技术 1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据 ...

  4. javaEE的开发模式

    1.什么是模式 模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式 2.javaEE经历的模式 model1模式: 技术组成:jsp+javaBean model1的弊端:随着业务复杂性 ...

  5. JavaEE——JSP开发模式(model1)

    model1开发模式 工作流程: ①浏览器请求,JSP页面接收 ②JSP根据请求和JavaBean进行交互 ③JavaBean进行业务处理,JDBC操纵数据库 ④JSP将请求结果返回浏览器页面 利用m ...

  6. JavaEE之动态页面技术(JSP/EL/JSTL)

    动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%= ...

  7. 动态页面技术JSP/EL/JSTL

    本节内容: jsp脚本和注释 jsp运行原理 jsp指令(3个) jsp内置/隐式对象(9个) jsp标签(动作) EL技术 JSTL技术 JavaEE的开发模式 动态页面技术:就是在html中嵌入j ...

  8. JavaWeb之动态页面技术JSP/EL/JSTL

    一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> - ...

  9. jsp/el和jstl动态页面

    一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> - ...

随机推荐

  1. Nios程序烧写到EPCS方法 - 第1页 - asus119's Blog - EDN China电子设计技术

    Nios程序烧写到EPCS方法 - 第1页 - asus119's Blog - EDN China电子设计技术 这里主要是针对EP3C系列FPGA的Nios程序固化到EPCS中的方法做简要说明.硬件 ...

  2. C++中的对象的赋值和复制

    对象的赋值 如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象.这里所指的对象的值是指对象中所有数据成员的值. 对象之间的赋值也是通过赋值 ...

  3. IPv4 和 IPv6地址

    目前Internet上使用的基本都是IPv4地址,也就是说地址总共是32个比特位,也就是32位二进制数.  所以IPv4地址总的容量是 2的32次方 = 4294967296 比如 11010010 ...

  4. lsnrctl start错误Linux Error: 29: Illegal seek (翻译:非法谋取)

    现在,想不起来为什么ORACLE的监听,怎么就突然无法起来了呢. 好吧,问题反正就是发生了. lsnrctl start 遇到如下错误, LSNRCTL for Linux: Version 10.2 ...

  5. sql server 2008 r2安装

    选择功能(好像报错了-下次重装系统测试)

  6. GoWeb开发_Iris框架讲解(三):路由功能处理方式

    Context概念 Context是iris框架中的一个路由上下文对象,在iris框架中的源码路径定义为:{$goPath}\github.com\kataras\iris\context\conte ...

  7. 使用 PHPMailer 发送邮件出现诡异bug,间歇性发送失败

    场景 使用PHPMailer的SMTP发送邮件,用的是腾讯企业邮箱 smtp.exmail.qq.com 在邮箱设置里看到配置smtp方法 问题描述 本地windows开发环境发送邮件100%成功 远 ...

  8. 某人视频中提到的 Spark Streaming 优化的几点事项

    某人,并未提他的名字,是因为看的视频是1年前的,视频里他吹得厉害.我看视频时,查了一下他在视频里说的要做到的东西,结果上网一查,就看到了很多人说他骗了钱后,就不管交了学费的人了.真假无从查起.但是无风 ...

  9. 51nod1007(01背包)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1007 题意:中文题诶- 思路:尽量将一个数组分成两个相等的部 ...

  10. 在eclipse中打开文件所在的目录

    eclipse中默认是不能直接打开文件所在的目录的,需要在文件中右键-->properties-->location,复制到资源管理器中才能打开文件所在的目录.这种方法很麻烦.这里介绍一种 ...