java_第一年_JavaWeb(10)
JavaWeb的两种开发模式
- JSP+JavaBean框架:JavaBean负责封装数据、提供方法,JSP负责处理用户请求和显示数据;只能开发较为简单的业务;
- JSP+JavaBean+Servlet:这是一种MVC开发模式;控制器为Servlet、视图采用JSP、模型采用JavaBean;
理解MVC模型:
需了解Model(M)、View(V)、Controller(C)概念;
M(模型):数据模型。提供展示数据,包括数据 和行为;
V(视图):负责模型展示,即客户直观看到的东西;
C(控制器):接受请求,委托模型处理,处理后再将其数据模型返回视图;
题外知识点:若是观察者设计模式,在模式上注册视图,当模式数据更新时可以自动推送到视图中进行更新,不过web开发是请求-响应模型,因此模型无法主动更新视图,需客户端发出请求后再由控制器调度、模型处理后,再通过控制器更新到视图上;
JSP+JavaBean+Servlet开发模式的缺点:
Servlet作为控制器的缺点:控制逻辑复杂,每个模块都需要一个控制器;请求参数到模型的封装比较麻烦,既要收集参数又要封装参数;选择视图都要依赖Servlet API提供的request对象的getRequestDisposition()方法,很难跟换视图;
JavaBean作为模型的缺点:
JavaBean作为模型既要收集封装数据,还要进行业务逻辑处理,会造成其组件类很庞大,现在项目一般都采用三层架构,即将域模型层分为表现层、业务逻辑层(服务层)、持久层(数据访问层);
这一节的开发模式需根据一个简单的项目理解起来会更加清楚深刻,等有时间再插入一个项目代码进行学习加深理解;
java_第一年_JavaWeb(10)的更多相关文章
- java_第一年_JavaWeb(14)
EL :EL表达式主要用于获取数据.执行运算.获取对象.调用java方法: 获取数据 语法:"${标识符}" 会调用pageContext.findAttribute方法,从pag ...
- java_第一年_JavaWeb(13)
JSTL标签库——核心标签库 为了弥补html标签的不足,为了更加方便地在jsp页面中使用java逻辑代码,JSTL标签库因运而生,而其中的佼佼者,被恩宠最多的就是核心标签库了: 核心标签库从功能上可 ...
- java_第一年_JavaWeb(11)
自定义标签:主要是用来移除JSP页面中的java代码. 先从一个简单的案例了解其怎么移除代码: 一个正常的jsp页面: <%@ page language="java" pa ...
- java_第一年_JavaWeb(15)
Filter过滤器,Servlet API 中提供了一个Filter接口,用于实现用户在访问某个目标资源前对其进行拦截: 拦截原理:web服务器通过Filter接口调用doFilter方法,会传递一个 ...
- java_第一年_JavaWeb(12)
SimpleTag标签 定义了五个方法:setJspContext.setJspBody.setParent和getParent以及最重要的doTag方法(完成了所有的业务逻辑): setJspCon ...
- java_第一年_JavaWeb(9)
JavaBean是一个遵循某种特定写法的Java类,有以下特点: 必需具有一个无参的构造函数 属性必需私有化 私有化的属性必需通过public类型的方法暴露给其它程序,其方法命名也有一定的规范 范例: ...
- java_第一年_JavaWeb(8)
前面说到,JSP在运行时会被编译成Servlet源代码,通过_jspServlet方法处理请求,此时该方法会传递和提供9个与web开发相关的对象进行使用,开发人员在JSP页面通过对这些变量即可引用这9 ...
- java_第一年_JavaWeb(7)
JSP执行过程 客户端发出请求访问JSP文件 JSP Container将要访问的JSP文件转译为Servlet的源代码(转译时期),并将其编译成.class文件(编译时期): 执行编译后的.clas ...
- java_第一年_JavaWeb(6)
会话 会话:浏览器从打开一个进程访问服务器到该浏览器关闭,我们称之为一个会话: 在浏览器和服务器交互期间,会不可避免地产生一些数据,而为了为每个用户保存其对应的数据,可使用两种技术:Cookie和Se ...
随机推荐
- python数组中在某一元素前插入数据
# 已知有一个已经排好序的数组.要求是,有一个新数据项,要求按原来的规律将它插入数组中. a=[1,2,3,4,5,6,7,8,9]num=int(input("input num:&quo ...
- 【LuoguP4770】[NOI2018] 你的名字
题目链接 题意简述 给定一个串 \(S\) 多组询问 , 每次给定一个串 \(T\) 和一个 区间 \([l,r]\) 求串\(T\) 有多少个本质不同的子串 满足不是 \(S[l...r]\) 的子 ...
- 关于sword框架浏览器上方小图标的修改
sword框架默认有一个document.ejs文件,可以导出html模板(找了很久没找到index.html,哈哈哈),里面有一行代码 这个href就是代表着浏览器上方图标的路径. 在public文 ...
- rk3288-cc上编写一个hello world
一.编写一个hello world驱动 懒,不写了 二.编写Kconfig和Makefile 我们在kernel/driver目录下创建一个hello目录 然后创建一个Kconfig文件: confi ...
- 文件/大文件上传功能实现(JS+PHP)全过程
PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...
- luogu 4004 Hello world! 分块 + 并查集 + 乱搞
其实呢,我也不理解这道题咋做,等以后有时间再研究研究 #include <bits/stdc++.h> #define ll long long #define maxn 100002 u ...
- 在volist中用遍历
$('.InColor').each(function(){ if($(this).val()==1){ $('.absolute').css({"color":"gra ...
- HDU-6703 array
Description You are given an array a1,a2,...,an(∀i∈[1,n],1≤ai≤n). Initially, each element of the arr ...
- CodeForces 1198D 1199F Rectangle Painting 1
Time limit 1000 ms Memory limit 262144 kB 解题思路 一堆循环嵌套的那种dp,不好想.但是可以搜啊,很暴力的.记忆化一下就好. 我们定义搜索函数\(\text{ ...
- Windows下zookeeper安装及配置
zookeeper有单机.伪集群.集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式.本章主要讲述单机部署方式. 系统要求 zookeeper可以运行在多种系统平台上面,表1展示了zk支持的 ...