• jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门


    一.mvc模式介绍

     下图是常用的mvc分层模式:

    项目中的包命名规则,一般如下:

    com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包
    com.amos.dao 封装dao层
    com.amos.dao.daoimpl 实现dao层接口
    com.amos.service 封装service层
    com.amos.service.serviceiml 实现service层接口
    com.amos.web.controller业务逻辑层
    com.amos.web.listener 监听器
    com.amos.web.filter 过滤器
    com.amos.utils 存放工具类
    com.amos.test 测试类
    按照上面的分类,可以方便维护.
    WEB-INF/jsp将jsp存放到WEB-INF目录下,这样可以增加安全性

    二.el表达式

    EL表达式用于获取数据,在JSP页面中可使用${标识符}的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为””(注意,不是null)。
    示例:使用EL表达式获取request、session、applection域中的数据。
    EL表达式中也可以使用${customerBean.address}的形式来访问JavaBean对象的属性。
    示例:使用EL表达式获取Bean属性。
    EL表达式也可使用类如${1==1}的形式进行简单的逻辑判断。

    <%@page import="java.util.*"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="java.util.List"%>
    <%@page import="com.amos.model.*"%>
    <%@ page isELIgnored="false"%>
    <%@ 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>el表达式学习</title>
    </head>
    <body>
        第一种,简单取值:
        <%
        String data = "hi,amos!";
        request.setAttribute("data", data);
    %>
        ${data}
        <br> 第二种,从bean中取值:
        <%
            Person p = new Person();
            p.setName("amosli");
            session.setAttribute("person", p);
        %>
        ${person.name}
        <br>
        <%=((Person) session.getAttribute("person")).getName()%><br>
        第三种:从复杂bean中取值:
        <%
            Person person1 = new Person();
            Address a = new Address();
            a.setCity("上海");
            person1.setAddress(a);
            application.setAttribute("p1", person1);
        %>
        ${p1.address.city}
        <br> 第四种:从集合中取值:
        <%
            List list = new ArrayList();
            list.add(new Person("amos"));
            list.add(new Person("li"));
            list.add(new Person("amosli"));
            list.add(new Person("hi"));
            list.add(new Person("hi_amos"));
            application.setAttribute("personlist", list);
        %>
        ${personlist[0].name }
        <br>
    
        <%
            Map map = new HashMap();
            map.put("aa", new Person("aaaa"));
            map.put("cc", new Person("cccc"));
            map.put("dd", new Person("dddd"));
            map.put("ee", new Person("eeee"));
            map.put("11", new Person("111"));
    
            request.setAttribute("map", map);
        %>
        ${map.dd.name }<br> 
        <%-- ${map.11.name } 一般情况下用点号进行取值,如果点号取不出来值,那么可以用[]来代替. --%>
        ${map['11'].name }<br>
        
        获取当前应用的名称:
        ${pageContext.request.contextPath }
        
    </body>
    </html>

    结果:

    注意:el表达式不能用的解决方法,我这里是2.3版本的,web.xml中有如下代码:

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >

    解决方法是在jsp页面中加入:

    <%@ page isELIgnored="false"%>

    三.jstl标签库的使用

    1.关于JSTL标签库

    JSTL是sun公司开发的一套标签库,使用JSTL可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码。
    在页面中使用JSTL标签需完成以下2个步骤:
    1、导入jstl.jar和standerd.jar这两个JSTL的jar文件。
    2、在JSP页面中使用<%@ tablib url=“” prifix=“” %>元素导入标签库。
    JSTL标签库中常用标签:
    <c:foreach var=“” items=“”>
    <c:if test=“”>

     我这里用的是maven管理jar包的,所以只需要引入:

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    或者直接下载:http://repo1.maven.org/maven2/jstl/jstl/1.2/jstl-1.2.jar

    2.引入标签库

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

    3.示例:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ page isELIgnored="false"%>
    <%@page import="java.util.*,com.amos.model.*" %>
    <%@ 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>jstl标签学习</title>
    </head>
    <body>
        <br> 从集合中取值:
        <%
            List list = new ArrayList();
            list.add(new Person("amos"));
            list.add(new Person("li"));
            list.add(new Person("amosli"));
            list.add(new Person("hi"));
            list.add(new Person("hi_amos"));
            application.setAttribute("personlist", list);
        %>
        ${personlist[0].name }
        <br>
        
        <c:forEach var="list" items="${ personlist}">
            <c:out value="${list.name }"></c:out><br>
        </c:forEach>
    
        <%
            Map map = new HashMap();
            map.put("aa", new Person("aaaa"));
            map.put("cc", new Person("cccc"));
            map.put("dd", new Person("dddd"));
            map.put("ee", new Person("eeee"));
            map.put("11", new Person("111"));
            request.setAttribute("maps", map);
        %>
        <c:forEach  var="map" items="${maps }">
         ${map.key}:${map.value.name }<br>
        </c:forEach>
    
    </body>
    </html>

    效果图如下所示:

  • 相关阅读:
    ios 动态库加载及某个文件非ARC问题
    block循环引用用__weak声明
    nib加载方式
    UIImage两种加载方式
    xcode头文件编译错误
    ios 工程的相对路径
    ios的window.rootViewController的更换
    Header Search Paths找不到
    mac下svn问题 —— “.a”(静态库)文件无法上传的 简单处理办法
    UIPickerView 和 UIDatePicker常用方法, 程序启动的完整过程
  • 原文地址:https://www.cnblogs.com/amosli/p/3615031.html
Copyright © 2020-2023  润新知