javaweb(二十一)——JavaWeb的两种开发模式
一、JSP+JavaBean开发模式
1.1、jsp+javabean开发模式架构
jsp+javabean开发模式的架构图如下图(图1-1)所示
aaarticlea/png;base64,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" alt="" />
图1-1
在jsp+javabean架构中,JSP负责控制逻辑、表现逻辑、业务对象(javabean)的调用。
JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据。
1.2、JSP+JavaBean开发模式编写计算器
首先分析一下jsp和javabean各自的职责,jsp负责显示计算器(calculator)页面,供用户输入计算数据,并显示计算后的结 果,javaBean负责接收用户输入的计算数据并且进行计算,JavaBean具有firstNum、secondNum、result、 operator属性,并提供一个calculate方法。
1、编写CalculatorBean,负责接收用户输入的计算数据并且进行计算
CalculatorBean代码如下:
1 package me.gacl.domain;
2
3 import java.math.BigDecimal;
4
5 /**
6 * @author gacl
7 * CalculatorBean用于接收输入参数和计算
8 */
9 public class CalculatorBean {
10
11 //用户输入的第一个数
12 private double firstNum;
13 //用户输入的第二个数
14 private double secondNum;
15 //用户选择的操作运算符
16 private char operator = '+';
17 //运算结果
18 private double result;
19
20 public double getFirstNum() {
21 return firstNum;
22 }
23
24 public void setFirstNum(double firstNum) {
25 this.firstNum = firstNum;
26 }
27
28 public double getSecondNum() {
29 return secondNum;
30 }
31
32 public void setSecondNum(double secondNum) {
33 this.secondNum = secondNum;
34 }
35
36 public char getOperator() {
37 return operator;
38 }
39
40 public void setOperator(char operator) {
41 this.operator = operator;
42 }
43
44 public double getResult() {
45 return result;
46 }
47
48 public void setResult(double result) {
49 this.result = result;
50 }
51
52 /**
53 * 用于计算
54 */
55 public void calculate() {
56
57 switch (this.operator) {
58 case '+': {
59 this.result = this.firstNum + this.secondNum;
60 break;
61 }
62 case '-': {
63 this.result = this.firstNum - this.secondNum;
64 break;
65 }
66 case '*': {
67 this.result = this.firstNum * this.secondNum;
68 break;
69 }
70 case '/': {
71 if (this.secondNum == 0) {
72 throw new RuntimeException("被除数不能为0!!!");
73 }
74 this.result = this.firstNum / this.secondNum;
75 // 四舍五入
76 this.result = new BigDecimal(this.result).setScale(2,
77 BigDecimal.ROUND_HALF_UP).doubleValue();
78 break;
79 }
80 default:
81 throw new RuntimeException("对不起,传入的运算符非法!!");
82 }
83 }
84 }
2、编写calculator.jsp,负责显示计算器(calculator)页面,供用户输入计算数据,并显示计算后的结果
calculator.jsp页面代码如下:
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--使用me.gacl.domain.CalculatorBean --%>
3 <jsp:useBean id="calcBean" class="me.gacl.domain.CalculatorBean"/>
4 <%--接收用户输入的参数 --%>
5 <jsp:setProperty name="calcBean" property="*"/>
6 <%
7 //使用CalculatorBean进行计算
8 calcBean.calculate();
9 %>
10 <!DOCTYPE HTML>
11 <html>
12 <head>
13 <title>使用【jsp+javabean开发模式】开发的简单计算器</title>
14 </head>
15
16 <body>
17 <br/>
18 计算结果是:
19 <jsp:getProperty name="calcBean" property="firstNum"/>
20 <jsp:getProperty name="calcBean" property="operator"/>
21 <jsp:getProperty name="calcBean" property="secondNum"/>
22 =
23 <jsp:getProperty name="calcBean" property="result"/>
24
25 <br/><hr> <br/>
26 <form action="${pageContext.request.contextPath}/calculator.jsp" method="post">
27 <table border="1px">
28 <tr>
29 <td colspan="2">简单的计算器</td>
30 </tr>
31 <tr>
32 <td>第一个参数</td>
33 <td><input type="text" name="firstNum"></td>
34 </tr>
35 <tr>
36 <td>运算符</td>
37 <td><select name="operator">
38 <option value="+">+</option>
39 <option value="-">-</option>
40 <option value="*">*</option>
41 <option value="/">/</option>
42 </select></td>
43 </tr>
44 <tr>
45 <td>第二个参数</td>
46 <td><input type="text" name="secondNum"></td>
47 </tr>
48 <tr>
49 <td colspan="2"><input type="submit" value="计算"></td>
50 </tr>
51 </table>
52 </form>
53 </body>
54 </html>
运行结果如下:
二、Servlet+JSP+JavaBean开发模式
在平时的JavaWeb项目开发中,在不使用第三方mvc开发框架的情况下,通常会选择Servlet+JSP+JavaBean开发模式来开发JavaWeb项目,Servlet+JSP+JavaBean组合开发就是一种MVC开发模式了,控制器(Controller)采用Servlet、模型(Model)采用JavaBean、视图(View)采用JSP。在讲解Servlet+JSP+JavaBean开发模式之前,先简单了解一下MVC开发模式。
2.1、Web开发中的请求-响应模型
图2-1
在Web世界里,具体步骤如下:
1、Web浏览器(如IE)发起请求,如访问http://www.iteye.com/
2、Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html)。
3、web服务器处理完成后,返回内容给web客户端(一般就是我们的浏览器),客户端对接收的内容进行处理(如web浏览器将会对接收到的html内容进行渲染以展示给客户)。
因此,在Web世界里:都是Web客户端发起请求,Web服务器接收、处理并产生响应。
一般Web服务器是不能主动通知Web客户端更新内容。虽然现在有些技术如服务器推(如Comet)、还有现在的HTML5 websocket可以实现Web服务器主动通知Web客户端。
到此我们了解了在web开发时的请求/响应模型,接下来我们看一下标准的MVC模型是什么。
2.2、标准MVC模型概述
MVC模型:是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离、流程控制逻辑、业务逻辑调用与展示逻辑分离。如下图(图2-2)所示:
图2-2
2.3、MVC(Model-View-Controller)的概念
首先让我们了解下MVC(Model-View-Controller)的概念:
Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型(domain)或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。
从图2-1我们还看到,在标准的MVC中模型能主动推数据给视图进行更新(观察者设计模式,在模型上注册视图,当模型更新时自动更新视图),但在Web开发中模型是无法主动推给视图(无法主动更新用户界面),因为在Web开发是请求-响应模型。
那接下来我们看一下在Web里MVC是什么样子,我们称其为 Web MVC 来区别标准的MVC。
2.4.、Web MVC概述
Web MVC中的M(模型)-V(视图)-C(控制器)概念和标准MVC概念一样,我们再看一下Web MVC标准架构,如下图(图2-3)所示:
图2-3
在Web MVC模式下,模型无法主动推数据给视图,如果用户想要视图更新,需要再发送一次请求(即请求-响应模型)。
2.5、Servlet+JSP+JavaBean开发模式介绍
Servlet+JSP+JavaBean架构其实可以认为就是我们所说的Web MVC模型,只是控制器采用Servlet、模型采用JavaBean、视图采用JSP,如图2-3
图2-4
具体示例代码:
1、模型(model)
2、视图(View)
3、控制器(controller)
从Servlet+JSP+JavaBean(Web MVC)架构可以看出,视图和模型分离了,控制逻辑和展示逻辑分离了。
三、Servlet+JSP+JavaBean开发模式的缺点
Servlet+JSP+JavaBean(Web MVC)架构虽然实现了视图和模型分离以及控制逻辑和展示逻辑分离,但也有一些比较严重的缺点
3.1、Servlet作为控制器的缺点
此处的控制器使用Servlet,使用Servlet作为控制器有以下几个缺点:
1、控制逻辑可能比较复杂,其实我们可以按照规约,如请求参数submitFlag=toLogin,我们其实可以直接调用toLogin方法,来简化控制逻辑;而且每个模块基本需要一个控制器,造成控制逻辑可能很复杂。现在流行的Web MVC框架(如Struts2)都支持"请求参数submitFlag=toAdd,就可以直接调用toAdd方法"这样的处理机制,在Struts2中类似这样的处理机制就称为"动态方法调用"
2、请求参数到模型的封装比较麻烦,如果能交给框架来做这件事情,我们可以从中得到解放。
请求参数到模型的封装代码:
1 // 1收集参数
2 String username = req.getParameter("username");
3 String password = req.getParameter("password");
4 // 2封装参数
5 UserBean user = new UserBean();
6 user.setUsername(username);
7 user.setPassword(password);
当有几十个甚至上百个参数需要封装到模型中时,这样写恐怕就痛苦万分了,要写几十次甚至上百次这样的代码,估计写到吐了,所以现在流行的Web MVC框架(如Struts2)都提供了非常方便的获取参数,封装参数到模型的机制,减少这些繁琐的工作。
3、选择下一个视图,严重依赖Servlet API,这样很难或基本不可能更换视图。
例如:使用Servlet API提供的request对象的getRequestDispatcher方法选择要展示给用户看的视图
1 private void toLogin(HttpServletRequest req, HttpServletResponse resp)
2 throws ServletException, IOException {
3 //使用Servlet API提供的request对象的getRequestDispatcher方法选择视图
4 // 此处和JSP视图技术紧密耦合,更换其他视图技术几乎不可能
5 request.getRequestDispatcher("/mvc/login.jsp").forward(request, response);
6 }
4、给视图传输要展示的模型数据,也需要使用Servlet API,更换视图技术也要一起更换,很麻烦。
例如:使用Servlet API提供的request对象给视图传输要展示的模型数据
//使用Servlet API提供的request对象给视图login.jsp传输要展示的模型数据(user)
request.setAttribute("user", user);
request.getRequestDispatcher("/mvc/login.jsp").forward(request, response)
3.2、JavaBean作为模型的缺点
此处模型使用JavaBean,JavaBean组件类既负责收集封装数据,又要进行业务逻辑处理,这样可能造成JavaBean组件类很庞大,所以一般现在项目都是采用三层架构,而不直接采用JavaBean。
3.3、视图的缺点
现在被绑定在JSP,很难更换视图,比如Velocity、FreeMarker;比如我要支持Excel、PDF视图等等。
关于JavaWeb的两种开发模式的讲解就介绍到这里,下一篇将使用servlet+jsp+javabean来开发一个用户登录注册功能,以此来加深servlet+jsp+javabean开发模式的理解。
javaweb(二十一)——JavaWeb的两种开发模式的更多相关文章
- javaweb学习总结(二十一)——JavaWeb的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- JavaWeb学习 (二十)————JavaWeb的两种开发模式
一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示
- javaweb基础(21)_两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- java web学习总结(二十九) -------------------JavaBean的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- 咸鱼入门到放弃10--javaweb的两种开发模式
(本篇是之前方法的综合使用,新东西不多,其中也涉及三层架构的问题.此处直接引用了大佬blog:https://www.cnblogs.com/xdp-gacl/p/3908610.html) SUN公 ...
- ASP.Net的两种开发模式
一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...
- tensorflow学习之(二)Seesion的两种打开模式
#Seesion的两种打开模式 import tensorflow as tf matrix1 = tf.constant([[3,3]])#一行两列的一个矩阵 matrix2 = tf.consta ...
- JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- Java Web的两种开发模式
参考文献:http://www.cnblogs.com/xdp-gacl/p/3908610.html 一.Jsp+JavaBean 此模式如下图所示:
随机推荐
- Sublime Text 3中文乱码问题解决
Sublime Text 3是我MacBook Pro最喜欢的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文 ...
- 2019.3.26 为什么说HTTP是无状态协议/无连接
无状态 1.协议对于事务处理没有记忆能力 2.对同一个url请求没有上下文关系 3.每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求时无直接关系的,它不会受前面的请求应答情况直接影响, ...
- Emacs 快速指南 - 原生中文手册
Emacs 快速指南 -折叠目录 1. 小结(SUMMARY) 2. 基本的光标控制(BASIC CURSOR CONTROL) 3. 如果 EMACS 失去响应(IF EMACS STOPS RES ...
- Emgu学习之(三)——操作图像数据
Visual Studio Community 2015 工程和代码:http://pan.baidu.com/s/1jHmlQeE 内容 在这篇文章中将提到以下内容: 修改像素值 图像ROI 图像加 ...
- spring boot +druid数据库连接池配置
1.启动应用入口修改 增加servlet注解 import javax.sql.DataSource; import org.apache.ibatis.session.SqlSessionFacto ...
- 聚类之高斯混合模型(Gaussian Mixture Model)【转】
k-means应该是原来级别的聚类方法了,这整理下一个使用后验概率准确评测其精度的方法—高斯混合模型. 我们谈到了用 k-means 进行聚类的方法,这次我们来说一下另一个很流行的算法:Gaussia ...
- 关于Oracle 数据库死锁 转
转自 https://zhidao.baidu.com/question/200422068111653165.html 一.数据库死锁的现象程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没 ...
- Lua库-string库
string.len(s) string.rep(s,n) string.lower(s) string.upper(s) string.sub(s,i);//截取s第i个开始的后缀 string.s ...
- 关于2018年第九届蓝桥杯[C++省赛B组][第四题:测试次数]的疑问
题目来源:https://blog.csdn.net/qq_34202873/article/details/79784548 #标题:测试次数#x星球的居民脾气不太好,但好在他们生气的时候唯一的异常 ...
- OpenStack(queens)最小化搭建记录——控制与计算共两个节点
境: 2台安装了centos7-minimal的主机 ip地址: 10.132.226.103/24 (controller) 10.132.226.104/24 (compute1) 1.配置主机名 ...