当前位置: 移动技术网 > IT编程>开发语言>Jsp > jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门

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

2018年04月13日  | 移动技术网IT编程  | 我要评论
项目中的包命名规则,一般如下:

 

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" "https://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"

 "https://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>

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

 

2.引入标签库

<%@ taglib uri="https://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="https://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://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>

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网