动态页面技术----EL技术、JSTL技术,javaEE的开发模式

1 EL技术

1.1 EL 表达式

ELExpress 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}

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第1张图片

 

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

${key};

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

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

 

例:

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

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第2张图片

 

1.2.3获取属性

获得普通字符串

获得User对象的值

获得List的值

 

例:

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 user02=new User();
        user02.setName("外婆");
        user02.setAge(55);
        List list=new ArrayList();
        list.add(user);
        list.add(user02);
        application.setAttribute("UserList", list);
    %>
    
    
    

username:${username}

User:${User.name}...${User.age}

UserList:${UserList[0].name}...${UserList[1].age}

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第3张图片

 

1.2.4 pageContext获得其他八大对象

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

例:


    

web应用名称:${pageContext.request.contextPath }

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第4张图片

 

1.3 EL执行表达式

例如:

${1+1}   可以运算

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

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

例:


    ${1+1 }
${empty User}
${UserList==null?"空":"不空"}

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第5张图片

 

2 JSTL技术

JSTLJSP 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使用jsptaglib指令导入核心标签库

 动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第6张图片 

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

 

 

2.3 JSTL核心库的常用标签

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

 

1标签

其中test是返回boolean的条件 

例:

if test="${1!=1}">
        1!=1
    if>
    if test="${1==1}">
        1==1
    if>

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第7张图片 

if test="${empty User}">
        登录
    if>
    if test="${!empty User}">
        ${User.name}
    if>    

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第8张图片

 

2标签

例1:

    
    
        ${i }
    
    
    
${user.name}...${user.age}

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第9张图片

 

例2:遍历

遍历List的值

遍历Map的值

遍历Map的值

遍历Map>的值 

    
    
        ${str}
    
    
    
${entry.key}...${entry.value}
${entry.key}...${entry.value.name}...${entry.value.age}

${entry.key.name}...${entry.key.age}

${entry1.key}...${entry1.value.name}...${entry1.value.age}

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第10张图片

(数据存入的代码没贴)

 

3 javaEE的开发模式 

3.1什么是模式

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

 

3.2 javaEE经历的模式

model1模式

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

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

 

model2模式

  技术组成:jsp+servlet+javaBean

  model2的优点:

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

    servlet:擅长处理java业务代码

    jsp:擅长页面的实现

 

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

  MModel---模型 javaBean:封装数据

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

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

 

3.3 javaEE的三层架构

服务器开发时 分为三层

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

service层:复杂业务处理

dao层:与数据库进行交互

动态页面技术----EL技术、JSTL技术,javaEE的开发模式_第11张图片

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

 

4实例

1)列表实例改成用ELJSTL实现

    
        
class="col-md-2" style="height:250px"> width="170" height="170" style="display: inline-block;">

${product.pname}

商城价:¥${product.market_price}

 

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

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

 

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只完成一个功能

 

转载于:https://www.cnblogs.com/hzhjxx/p/10275259.html

你可能感兴趣的:(动态页面技术----EL技术、JSTL技术,javaEE的开发模式)