您的位置:首页 > 运维架构 > Tomcat

使用符合MVC设计模式的自定义框架实现加法计算器

2017-09-14 21:27 435 查看
自定义MVC框架的核心是控制器的实现:首先我们来定义Action接口,实现Controller类。编译环境为eclipse。

package com.dh.ch01.framework;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface Action {
String execute(HttpServletRequest request,HttpServletResponse response);

}创建名为Controller的Servlet
public class Controller extends HttpServlet {
//声明由控制器Controller维护的Action映射,其中保存所有的Action实例
private HashMap actionMap;
/**
* Servlet初始化方法
*/
public void init() throws ServletException{
//初始化actionMap
actionMap=new HashMap();
//将AddAction对象放入到acctionMap中
actionMap.put("add", new AddAction());
//    	actionMap.put("sub", new SubAction());
}
private Action determinActionByPath(String path){
String actionName=path.substring(path.lastIndexOf('/')+1,path.length()-7);
Action ret=(Action)actionMap.get(actionName);
return ret;
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//得到path
String path=request.getServletPath();
//找出Action
Action action=(Action)this.determinActionByPath(path);
//执行操作
String resultView=action.execute(request, response);
//控制页面转向
if(null!=resultView){
request.getRequestDispatcher(resultView).forward(request, response);
}
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
web.xml的配置
<servlet-name>Controller</servlet-name>
<servlet-class>com.dh.ch01.framework.Controller</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Controller</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>创建add.jsp页面(用户接收数据)
<title>算数计算器</title>
</head>
<body bgcolor="#ffffc0">

<h1>算数计算器</h1>
<form id="calxForm" method="post" action="add.action">
<table>
<tbody>
<tr>
<td>第一个数</td>
<td><input type="text" name="num1"/></td>
</tr>
<tr>
<td>第二个数</td>
<td><input type="text" name="num2"/></td>
</tr>
<tr>
<td><input type="submit" value="加"/></td>
</tr>
</tbody>
</table>
</form>
</body>
创建Calculator,实现算数运算
public class Calculator {
public double add(double a,double b){
return a+b;
}
public double subtract(double a,double b){
return a-b;
}
public double multiply(double a,double b){
return a*b;
}
public double divide(double a,double b){
return a/b;
}
}


创建AddAction类,实现Action接口
public class AddAction implements Action {
private Calculator biz=new Calculator();
public String execute(HttpServletRequest request,HttpServletResponse response){
//execute获取add.jsp页面的表单数据
double num1=Double.parseDouble(request.getParameter("num1"));
double num2=Double.parseDouble(request.getParameter("num2"));
//调用业务逻辑方法,获得返回值
double result=biz.add(num1, num2);
//将结构存放在request中,以便在页面中得到
request.setAttribute("result", result);
//返回将要转发到页面路径
return"add_result.jsp";
}

}
创建add_result.jsp页面显示计算结果

<body bgcolor="#ffffc0">
<table>
<tbody>
<tr>
<td>第一个数</td>
<td>${param.num1}</td>
</tr>
<tr>
<td>第二个数</td>
<td>${param.num2}</td>
</tr>
<tr>
<td>结果</td>
<td>${requestScope.result}</td>
</tr>
</tbody>
</table>
<button onclick="history.go(-1);">返回</button>
</body>附上两张结构图

     



显示如图所示结果就成功啦!同理可以继续完善程序,实现减法,乘法和除法,在这里我就不一一写出啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat mvc servlet class 实例
相关文章推荐