目录

  • 1.课程介绍
  • 2.项目需求分析
  • 3.JavaBean
    • 3.1.什么是JavaBean
    • 3.2.JavaBean的规范
    • 3.3.Bean属性与对象属性
    • 3.4.BeanUtils的使用(主要进行属性的拷备)
  • 4.EL表达式
    • 4.1.什么是EL表达式
    • 4.2.EL表达式的使用
    • 4.3.EL表达式访问四大作用域的绑定值
    • 4.4.EL表达式访问JavaBean中的属性
    • 4.5.EL其他特性
    • 4.6.EL注意事项
      • 4.6.1.注意一
      • 4.6.2.注意二
  • 5.JSTL
    • 5.1.JSTL是什么
    • 5.2.怎么使用JSTL标签库
    • 5.3.JSTL常用标签
      • 5.3.1.if标签(判断)
      • 5.3.2.foreach标签(循环)
      • 5.3.3.choose标签(选择 - 了解)
  • 6.MVC
    • 6.1.Model1模型
    • 6.2.Model2模型
    • 6.3.什么是MVC
    • 6.4.三层架构和MVC的区别
  • 7.课程总结
    • 7.1.重点
    • 7.2.难点
    • 7.3.如何掌握
    • 7.4.排错技巧
  • 8.常见问题
  • 9.课后练习
  • 10.面试题
  • 11.扩展知识或者课外阅读推荐(可选)
    • 11.1.扩展知识
    • 11.2.课外阅读

1.课程介绍

  1. 项目需求分析; (了解)
  2. JavaBean; (掌握)
  3. El表达式; (掌握)
  4. JSTL标签; (掌握)
  5. 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表达式的写法:error语法:{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实训第四天上午——员工管理系统-JavaBeanELJSTLMVC思想相关推荐

  1. javaweb实训第四天上午——MySQL基础

    目录 1 课程介绍 2 数据库概述 2.1 数据库概念 2.2 数据库的由来和发展 2.3 常见的==关系型数据==库服务器(DBMS) 2.4 SQL概述 2.5 表的概念(table) 3 数据库 ...

  2. javaweb实训第五天上午——Spring基础

    Spring基础 1.课程介绍 2.为什么需要Spring 3.初识Spring 3.1.什么是Spring 3.2.Spring框架的好处 3.3.Spring框架的模块化 4.Spring入门 4 ...

  3. javaweb实训第三天上午——Servlet

    文章目录 Servlet基础 1.Servlet基础 1.1.什么是Servlet 1.2.如何开发一个Servlet 1.3.Servlet执行流程 1.4.Servlet生命周期 1.5.Serv ...

  4. [JavaWeb实训Day4]__jsoup爬虫(爬新闻页面)词云的生成( kumo库)

    目录 一.本次实验分析过程 二.Jee连接MySQL数据库 三.异步传值及界面设计 四.jsoup爬虫爬取新闻网页 五.新闻词云的生成( kumo库) 六.存入数据库 快速链接:[JavaWeb项目实 ...

  5. JavaWeb实训项目:基于SSM框架的CRM客户关系管理系统(文章最后有源码)

    JavaWeb实训项目:基于SSM框架的CRM客户关系管理系统(附部分源码) 一.项目背景 项目演示 二.项目介绍 三.涉及技术 总结 源码地址 一.项目背景 "世上本来没有CRM,大家的生 ...

  6. Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!...

    Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写.加上色彩.分数等深度剖析开发过程! 关于2048,我看到非常多大神,比方医生.郭神.所以我也研究了一段时间.还好是研 ...

  7. java web开发实训心得,【JavaWeb实训心得体会材料】

    JavaWeb实训心得体会材料 <JavaWeb实训心得体会材料.doc>由会员分享,可免费在线阅读全文,更多与<JavaWeb实训心得体会材料>相关文档资源请在帮帮文库(ww ...

  8. CSDN实训第四天(OTP——动态令牌的实现)

    CSDN实训第四天(OTP--动态令牌的实现) 一.前言 出于对重要文件的保护,产生了 密码 和验证码这一产物.如今验证码有很多形式,Gif动画验证码.手机短信验证码.手机语音验证码.视频验证码等等, ...

  9. Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!

    Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程! 关于2048,我看到很多大神,比如医生,郭神,所以我也研究了一段时间,还好是研究 ...

最新文章

  1. 6个例子让你彻底明白,什么是纳什均衡
  2. 人工智能和机器人将成为数据中心最佳“伴侣”
  3. centos7系统/etc/resolv.conf 配置DNS客户
  4. 华三交换机ping不通用户但用户_H3C故障常见故障及解决方案
  5. 用户空间与内核空间数据交换的方式(1)------debugfs
  6. TextView 在java中使用Html设置字体大小颜色
  7. 业务流程图6个图例_系统流程图用什么软件做?流程图绘制全教程
  8. 多变量微积分(4)——多重积分之三重积分
  9. 图像匹配滤波器 matlab,[转载]匹配滤波器的仿真验证(MATLAB)
  10. 数字系统设计中形式验证
  11. 【离散数学】第二章 命题逻辑的推理理论
  12. 北大计算机复试被刷经历,为什么那么多高分被刷?复试真的有黑幕吗?
  13. 无需软件网页星号密码查看
  14. 微信公众号开发获取openID以及用户详细信息,超详细步骤,亲测开发
  15. java Mail使用SSl,端口465加密发送邮件配置
  16. 哥德尔不完全性定理 关系 谓词和代入——哥德尔读后之二十
  17. 人人都是设计师:主流七种平面版式
  18. 进制转换:输入一个十进制整数转换为十六进制。
  19. VirtualBox不能为虚拟电脑打开一个新任务
  20. Virtualbox 启用USB 设备支持

热门文章

  1. echarts 去掉Y轴分割线
  2. webstorm 2017 2016 各个版本 激活破解大全 实测可用
  3. 遇到的坑_那些年跟团游遇到的坑,花了很多钱才发现自己被坑了
  4. tensorflow 版本列表_最新|谷歌发布TensorFlow 1.3.0版本,都更新了哪些内容?
  5. 字节跳动异构场景下的高可用建设实践
  6. Java面试高频题:Spring Boot+Sentinel+Nacos高并发已撸完
  7. 翻车事故频发,原来是开发者漏了这一步!
  8. GitHub 下架 Youtube-dl 遭粉丝疯狂上传源码报复,开源者的权益谁来维护?
  9. 由 Apache 说开,中国开源项目已经走向世界!
  10. 腾讯公布5G开放平台全景图,定义12大场景,引入45个应用