欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-21 15:26:24
项目中的包命名规则,一般如下:   com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包 com.amos.dao 封装dao层...
项目中的包命名规则,一般如下:

 

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>