MVC模式:MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
(控制器Controller)- 负责转发请求,对请求进行处理。
(视图View) - 界面设计人员进行图形界面设计。
(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据 库设计(可以实现具体的功能)。
Java
Java 平台企业版 (J2EE)
和其他的各种框架不一样,J2EE为模型对象(Model Objects)定义了一个规范。
视图(View):在J2EE应用程序中,视图(View)可能由Java Server Page(JSP)承担。生成视图的代码则可能是一个servlet的一部分,特别是在客户端服务端交互的时候。
控制器(Controller):J2EE应用中,控制器可能是一个servlet,现在一般用Struts2/Spring Framework实现。
模型(Model):模型则是由一个实体Bean来实现。
(以上内容摘录自维基百科对MVC模式概念的部分解析)
MVC框架模式在java开发过程中也比较常用,下面通过一个简易计算器的实例去理解一下MVC这个方便而强大的东东。每个人的思路步骤可能会略有不同,我这里只分享我自己的思路“殊途同归”吧,呵呵。
这个简易计算器进行对两个数字的运算,选择(+、-、*、/)结算符,最后计算出结果。大概的界面设计如下所示:
大概可分为下面几个步骤:
1.Model由实体Bean来实现:编写一个bean,用来封装计算器的数字,结果及操作运算符
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package
com.lixiyu.bean;
public
class
CalculatorBean
{
double
numberOne,numberTwo,result;
//数字1、数字2、结果
String operator=
"+"
;
//操作
//setxxx和getxxx
public
void
setNumberOne(
double
n)
{
numberOne=n;
}
public
double
getNumberOne()
{
return
numberOne;
}
public
void
setNumberTwo(
double
n)
{ numberTwo=n;
}
public
double
getNumberTwo()
{
return
numberTwo;
}
public
void
setOperator(String s)
{ operator=s.trim();;
}
public
String getOperator()
{
return
operator;
}
public
void
setResult(
double
r)
{ result=r;
}
public
double
getResult()
{
return
result;
}
}
|
2.编写控制器CalculatorServlet,用于转发请求,对请求进行处理。下面给出Servlet中doPost()的关键代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
public
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
CalculatorBean dataBean =
null
;
HttpSession session = request.getSession(
true
);
try
{
dataBean = (CalculatorBean) session.getAttribute(
"ok"
);
if
(dataBean ==
null
) {
dataBean =
new
CalculatorBean();
// 创建Javabean对象
session.setAttribute(
"ok"
, dataBean);
// 将dataBean存储到session对象中
}
}
catch
(Exception exp) {
dataBean =
new
CalculatorBean();
// 创建Javabean对象
session.setAttribute(
"ok"
, dataBean);
// 将dataBean存储到session对象中
}
double
numberOne = Double
.parseDouble(request.getParameter(
"numberOne"
));
double
numberTwo = Double
.parseDouble(request.getParameter(
"numberTwo"
));
String operator = request.getParameter(
"operator"
);
double
result =
0
;
if
(operator.equals(
"+"
)) {
result = numberOne + numberTwo;
}
else
if
(operator.equals(
"-"
)) {
result = numberOne - numberTwo;
}
else
if
(operator.equals(
"*"
)) {
result = numberOne * numberTwo;
}
else
if
(operator.equals(
"/"
)) {
result = numberOne / numberTwo;
}
dataBean.setNumberOne(numberOne);
// 将数据存储在dataBean中
dataBean.setNumberTwo(numberTwo);
dataBean.setOperator(operator);
dataBean.setResult(result);
RequestDispatcher dispatcher = request
.getRequestDispatcher(
"showResult.jsp"
);
dispatcher.forward(request, response);
// 请求showResult.jsp显示dataBean中的数据
}
|
在web.xml中注册servlet及实现映射:
|
1
2
3
4
5
6
7
8
|
<
servlet
>
<
servlet-name
>CalculatorServlet</
servlet-name
>
<
servlet-class
>com.lixiyu.servlet</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>CalculatorServlet</
servlet-name
>
<
url-pattern
>/calculator</
url-pattern
>
</
servlet-mapping
>
|
3.编写视图(view),主要通过输入操作和显示结果的两个JSP来实现
inputNumber.jsp(主要代码):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<
form
id
=
"form1"
action
=
"calculator"
method
=
"post"
name
=
"form1"
>
<
table
>
<
tr
><
td
> <
b
>输入任意两个数:</
b
></
td
>
<
td
> <
Input
type
=
text
name
=
"numberOne"
value
=
0
size
=
6
></
td
>
<
td
> <
Input
type
=
text
name
=
"numberTwo"
value
=
0
size
=
6
></
td
>
</
tr
>
<
tr
><
td
><
b
>选择算术运算符号:</
b
></
td
>
<
td
> <
Select
name
=
"operator"
>
<
Option
value
=
"+"
>+(加)
<
Option
value
=
"-"
>-(减)
<
Option
value
=
"*"
>*(乘)
<
Option
value
=
"/"
>/(除)
</
Select
>
</
td
>
<
td
> <
INPUT
TYPE
=
"submit"
value
=
"提交选择"
name
=
"submit"
></
td
>
</
tr
>
</
table
>
</
form
>
|
showResult.jsp的关键代码,用到<jsp:usebean>:
|
1
2
3
4
5
6
|
<jsp:useBean id=
"ok"
type=
"com.lixiyu.bean.CalculatorBean"
scope=
"session"
/>
运算结果:
<jsp:getProperty name=
"ok"
property=
"numberOne"
/>
<jsp:getProperty name=
"ok"
property=
"operator"
/>
<jsp:getProperty name=
"ok"
property=
"numberTwo"
/> =
<jsp:getProperty name=
"ok"
property=
"result"
/>
|
运算结果:
本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1355002,如需转载请自行联系原作者



