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>
效果图如下所示:
jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门的更多相关文章
- JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
- 2.EL表达式&JSTL标签库常用方法
1.EL表达式 Expression Language表达式语言,主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出. 格式为${表达式} EL表达式输出Bean的普通属性.数组属性.Li ...
- jsp之el表达式jstl标签
不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...
- EL表达式与标签库
https://blog.csdn.net/panhaigang123/article/details/78428567
- el和jstl标签库讲解视频
https://www.bilibili.com/video/av22415283/?p=1
- 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!
jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- Java第三阶段学习(十四、JSP动态页面、EL表达式、JSTL标签库)
一.JSP技术 1.jsp脚本和注释 jap脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部,比如写在doget.dopost 内的代码 2) ...
- JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)
1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...
随机推荐
- mybatis 使用记录
首先,贴一个好文.把mybatis中的<if></if>的条件扒到源码分析了一遍.PS:目前还看不懂... http://cheng-xinwei.iteye.com/blog ...
- mac 10.9开启有道词典取词功能
取词时候,有道词典给出提示,说要去开启辅助功能,但提示的是在mac 10.8上面怎么操作,在10.9的话,就是以下位置去改了. 补充以下: 在mac机器上,实际上大多数的单词都能从自带的词典中查找到. ...
- Eclipse编辑XML文件的代码提示
1.Eclipse无法解析的情形 Eclipse中编辑XML文件时,能够代码自动提示,是因为在XML头部引入了DTD文件(文档类型定义),Eclipse就是通过解析这个DTD文件,来达到代码提示的功能 ...
- (转)JITComplier、NGen.exe及.NET Native
一.JITComplier 如你所知,JIT(just-in-time或“即时”)编译器是CLR的重要组件,它的职责是将IL转换成本地cpu指令. <<CLR via C#>> ...
- linux 查找目录或文件
查找目录:find /(查找范围) -name '查找关键字' -type d查找文件:find /(查找范围) -name 查找关键字 ·find path -option [ -print ] [ ...
- LinQ To Object 基本用法
http://www.cnblogs.com/terryzh/archive/2012/11/10/2763538.html LinQ To Object 基本用法 inq的基本语法:var resu ...
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-myba ...
- 使用celery的backend异步获取结果
惯例先贴出相关参考的文档: http://docs.celeryproject.org/en/stable/getting-started/next-steps.html http://docs.ce ...
- textContent 与innerText
转自下面这位大神: http://zhangyaochun.iteye.com/blog/1391370 其实关于这textContent与innerText有很多碎碎的东西,不过个人觉得还是一个不错 ...
- python基础知识---变量
一.变量是什么? python变量是对内存中一个数据结构的引用,用一个变量给另外一个变量赋值,那就有两个变量引用同一个数据结构(数字.字符串.列表.元组.字典.自定义对象等) 当一个数据结构的引用计数 ...