javaweb实训第四天上午——员工管理系统-JavaBean&EL&JSTL&MVC思想
Posted dearQiHao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaweb实训第四天上午——员工管理系统-JavaBean&EL&JSTL&MVC思想相关的知识,希望对你有一定的参考价值。
1.课程介绍
- 项目需求分析; (了解)
- JavaBean; (掌握)
- El表达式; (掌握)
- JSTL标签; (掌握)
- MVC思想; (掌握)
2.项目需求分析
1.在前面我们已经学习了javaWeb的一些基础的知识了,从今天开始我们会花两天的时间通过javaWeb的知识做一个小型的项目;
2.在开发直接我们需要获取数据来展示,所以我们还需要掌握javaBean、El、JSTL等知识点,并且我们项目需要使用MVC开发模式,所以今天我们先把这些知识搞定,明天才来真正做这个小型项目;
3.JavaBean
3.1.什么是JavaBean
1.JavaBean是一种JAVA语言写成的可重用组件。可重复使用,减少代码冗余,方便维护;
2.简单一点:JavaBean是一种特殊的类,或者说满足一定规范的类;
3.2.JavaBean的规范
我们开发一个JavaBean,需要满足一定的规范:
必须有包; – 编程规范/良好的编程习惯
必须是具体的和公共的; – 访问权限最大化,非抽象的
必须有公有无参构造; – 方便框架或底层通过反射创建对象
必须有相应公有的setter、getter方法; – 方便设置和获取属性/el表达式
建议对象属性私有化; – 控制直接操作对象属性
建议对象属性使用包装类; – 控制直接操作对象属性
3.3.Bean属性与对象属性
1.Bean属性 ==
JavaBean属性:getter和setter方法上的属性,其中getter方法上的属性称之为可读属性,setter方法上面的属性称之为可写属性;
2.对象属性 ==
字段,即实例变量;
【例子】
3.一般情况下bean属行和对象属性拥有相同的名字,当然也可以不一样,甚至没有对象属性;
4.我们接下来要学得el表达式就是使用的getter方法上的Bean属性获取值的;
3.4.BeanUtils的使用(主要进行属性的拷备)
引入:有人对JavaBean做了一整套的解决实施方案,有些时候需要用到属性的拷贝,而且很多框架都是在用这个属性的拷贝的功能。需要导入对应的jar包:
commons-beanutils-1.9.2.jar
commons-logging-1.2.jar
commons-collections-3.1.jar
用法1:同一个类之间的属性拷贝:
用法2:不同类之间属性拷贝
用法3:把Map里面的元素拷贝到对象中去(但是不能把对象的元素拷贝到map)
4.EL表达式
4.1.什么是EL表达式
EL就是一种表达式语言:可以获取四大作用域中的共享数据:
pageContext
request
session
application
注意:el表达式获取作用域中的属性要依靠JavaBean的可读属性即需要有getter方法,否则无法获取;
4.2.EL表达式的使用
1.搭建登录环境:
以前的写法:
以前我们用jsp的表达式从作用域里拿到值,并且判断为空,需要这么写:
现在使用EL表达式的写法:
e
r
r
o
r
语
法
:
{error} 语法:
error语法:{key} :会到依次从四个作用域里面去找到key对应的value,如果key不存在,显示为空字符串,而不会显示null值(体验度好);
(1)登录失败取值:
(2)登录成功取值:
4.3.EL表达式访问四大作用域的绑定值
搭建环境:分别从各大作用域里面取值
EL取值的顺序:在作用域范围我们的名字取成一样了,怎么去找到特定的一个作用域中的值呢??
结论:它查询找的顺序 -> 从小至大,先取小的范围的值,小的没有,在取到大的范围的值:
pageContext --> request --> session --> application
以后我们常用的是request和session,有时候如果没有一个规范的时候,我们取的名字会重复:
第一种解决方案:前面添加一个前缀,确定到哪个作用域拿,比如下面:
${pageScope.msg}
${requstScope.msg}
${sessionScope.msg}
${applicationScope.msg}
例子:
第二种解决方案:名字规范比如:XXX_IN_SESSION
4.4.EL表达式访问JavaBean中的属性
方式一:${对象名.属性名}
– 常用
方式二:${对象名["属性名"]}
– 一般在属性名有特殊字符时才使用
注意:
1.对象名可以从四大作用中获取;
2.对象名写错显示空字符串,属性名写错要报错;
4.5.EL其他特性
1.EL算术运算符
(1)${1+2} ${2-1} ${2*3} ${16/5}
2.EL关系运算符
(1)${16>5} 或 ${16 gt 5}
(2)${16<5} 或 ${16 lt 5}
(3)${16>=5} 或 ${16 ge 5}
(4)${16<=5} 或 ${16 le 5}
(5)${1==2} 或 ${1 eq 2}
(6)${2!=1} 或 ${2 ne 1}
3.EL逻辑运算符
(1)${true && true}:结果 true
(2)${true and true}:结果true
(3)${true || false} ${true or false}:结果 true
(4)${!true} 或 ${not true}:结果false
4.EL其他运算符
(1)${empty param.name} :如果param.name 为空返回true否则false
5.EL三目运算符
(1)${A?B:C},比如:${user.sex?"男":"女"}
4.6.EL注意事项
4.6.1.注意一
特殊的写法:session.setAttribute(“KEY.IN.SESSION”, “你是session”)
错误写法:${sessionScope.KEY.IN.SESSION}
代码如下:
正确写法:${sessionScope[“KEY.IN.SESSION”]}
这样才拿得到值:
4.6.2.注意二
${pageContext.request.contextPath}
:拿到上下文路径,页面上的href,src等属性可以使用这种方式制定绝对路径;
比如下面的代码:
5.JSTL
引入:页面上的Java代码,对于前端开发人员无疑是一种累赘,而且大量的java代码也会破坏页面的整体效果。所以为了将页面中Java代码替换掉,可以使用JSTL帮助我们我们去消除Java代码,那么以后将不会再页面中出现:<% %>、<%! %>、<%= %>
5.1.JSTL是什么
JSTL(JavaServer Pages Standard Tag Library):JSP标准标签库,标签库由标签库和EL表达式语言两个部分组成,用来消除JAVA代码:
上面的代码就可以使用<c:if>标签代替,但是这个标签不能随便写,Java已经给我统一一套标签这个标签叫JSTL;
所以要使用JSTL,必须使用标签,所以也必须导入Java提供好的标签库;
5.2.怎么使用JSTL标签库
第一步:导入相关的jar包
这里面找到JSTL的jar包
servlet-api.jar
jstl.jar
standard.jar
el-api.jar
jsp-api.jar
第二步:引用JSTL标签库,标签库介绍:
我们学习的是core标签库:需在进行导入:
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
5.3.JSTL常用标签
5.3.1.if标签(判断)
5.3.2.foreach标签(循环)
Java代码:
前台页面展示jstl.jsp:
items:要循环的集合或数组,必须通过el表达式获取作用域中的数据;
var:用于接收集合中的每一个对象;
varStatus:当前循环的状态 (s 它是个javabean,里面有属性 index(循环索引,从0开始),count(计数,从1开始))
begin:表示从那里开始展示,从0开始;
end:表示从那里结束展示;
页面结果:
5.3.3.choose标签(选择 - 了解)
6.MVC
6.1.Model1模型
JSP + JavaBean开发也称作JSP模式:以JSP为中心的设计模型
优点:架构简单,比较适合小型项目开发 (没有人使用 除非15年以前的)
缺点:JSP 职责不单一,职责过重,不便于维护,不适合团队开发
6.2.Model2模型
Model2就是MVC的一种实现:JSP + Servlet + JavaBean
优点:职责清晰,适合团队开发,好维护,较适合于大型项目架构
缺点:分层较多,不适合小型项目开发
6.3.什么是MVC
1.MVC是程序设计的一种思想,与三层架构并没有直接的联系。全名是Model View Controller
M:业务模型Model javaBean
V:页面视图View jsp
C:控制器Controller
2.在MVC 模式中,Web 用户向服务器提交的所有请求都由控制器接管。接受到请求之后,控制器负责决定应该调用哪个模型来进行处理或直接跳转页面;
(1)可能直接跳转到视图;
(2)也有可能调用模型根据用户请求进行相应的业务逻辑处理,并返回数据。最后控制器跳转到相应的视图并将数据呈现给用户;
3.MVC职责
(1)控制器C:整个过程中,控制器即要与前端界面交互,也要与后台Java代码(Model)进行交互,起到核心控制作用。
(2)模型M:后台Java代码,包括业务代码、持久化层代码、实体Model/domain等
(3)视图V:页面,只显示内容
注意:Model是不能直接与视图交互的
6.4.三层架构和MVC的区别
1.三层架构和MVC并没有直接的联系,MVC是一种设计模式,而三层架构是一种软件架构。目的都是解耦,提高代码复用,适用于团队开发;
(1)表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得;
(2)业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理;
(3)数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等;
7.课程总结
7.1.重点
1.EL表达式访问作用域中绑定值;
2.EL表达式获取Bean属性值;
3.JSTL标签的使用步骤;
4.JSTL标签的使用:c:if、c:foreach
5.什么是MVC,有什么作用;
7.2.难点
1.c:foreach的使用;
2.对MVC和三层架构的理解;
7.3.如何掌握
1.课上认真听课;
2.完成课后练习;
3.抓住课程重点;
7.4.排错技巧
1.通过异常和错误找出问题,分析问题,解决问题;
2.注意el表达式获取要根据后台的getter方法;
8.常见问题
9.课后练习
1.课堂代码1-2遍;
10.面试题
1.什么是MVC?各部分职责是什么? (预计5分钟完成)
2.JDBC是什么?JDBC编程步骤? (预计10分钟完成)
11.扩展知识或者课外阅读推荐(可选)
11.1.扩展知识
11.2.课外阅读
以上是关于javaweb实训第四天上午——员工管理系统-JavaBean&EL&JSTL&MVC思想的主要内容,如果未能解决你的问题,请参考以下文章