一.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>

效果图如下所示:

jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门的更多相关文章

  1. JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)

    JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <%  Java代码  %>  相当于写在service方法中. <%=java 变量或者表达式 %> ...

  2. 2.EL表达式&JSTL标签库常用方法

    1.EL表达式 Expression Language表达式语言,主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出. 格式为${表达式} EL表达式输出Bean的普通属性.数组属性.Li ...

  3. jsp之el表达式jstl标签

    不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...

  4. EL表达式与标签库

    https://blog.csdn.net/panhaigang123/article/details/78428567

  5. el和jstl标签库讲解视频

    https://www.bilibili.com/video/av22415283/?p=1

  6. 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!

    jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...

  7. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

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

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

  9. JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)

    1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...

随机推荐

  1. Java入门教程总目录

    Java入门教程总目录 持续更新中... 1.Java常识汇总 2.Java框架对比 3.Java技术路线 4.Java编码规范 5.Java环境变量配置 6.枚举 7.操作符 12.定时任务

  2. 正则匹配<{$vcode}>变量

    $title="<{t}>您的验证码是:<{/t}><{$vcode}>,<{t}>请在注册页输入验证码并完成注册:验证码<{$vcod ...

  3. 修复eclipse中使用mave update project后JRE都变成1.5的问题

    在项目中的parent pom中添加如下代码即可 <properties> <project.build.sourceEncoding>UTF-8</project.bu ...

  4. .NET 环境中使用RabbitMQ(转)

    在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方,比如发送短信 ...

  5. myEclipse

    破解myEclipse 建立一个java项目,将reg.java放入,并且运行在控制台 输入账户 回车就会出现 序列号 菜单栏--->myeclipse-->substription in ...

  6. 使用CSS和jQuery实现tab页

    使用jquery来操作DOM是极大的方便和简单,这儿只是简单的用一个使用css和jquery来实现的tab页来简单介绍一些jQuery的一些方便使用的方法,下面是html文件: <!DOCTYP ...

  7. Appium在没有收到下一个命令时,默认超时时间是60s,超时后应用将会自动关闭,如果有需要等待超过60s的场景,怎么处理?

    DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("newCo ...

  8. 浅谈js的键值对key和value

    > 昨晚无意中看到类似下面结构的一段代码的取值问题,引起我的兴趣,花了点时间写了个demo给大家分享一下... var obj = [ {"2011":{"name ...

  9. jQuery最佳编程实践

    加载jQuery 1.坚持使用CDN来加载jQuery,这种别人服务器免费帮你托管文件的便宜干嘛不占呢.点击查看使用CDN的好处,点此查看一些主流的jQuery CDN地址. <script t ...

  10. 【MySQL】MySQL无基础学习和入门大纲

    一.安装 1.yum安装 2.分发包安装 3.配置文件 4.初始化数据库 二.启动 1.service mysqld start默认配置启动 2.mysqld_safe方式加载配置文件启动 3.mys ...