使用符合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
<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页面(用户接收数据)
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>附上两张结构图
显示如图所示结果就成功啦!同理可以继续完善程序,实现减法,乘法和除法,在这里我就不一一写出啦。
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>附上两张结构图
显示如图所示结果就成功啦!同理可以继续完善程序,实现减法,乘法和除法,在这里我就不一一写出啦。
相关文章推荐
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- .NET 插件系统框架设计(二) 使用对象序列化实现自定义配置文件管理
- Glide框架使用及自定义缓存实现缓存
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- 前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成相应的响应发送到客户端。前端控制器既可以使用Filter实现(Struts2采用这种方式),也可以使用Servlet来实现(spring MVC框架)。
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- ASP.NET 使用DataTable在Table中实现自定义分页
- 使用Gridview和ObjectDataSource轻松实现自定义分页
- 使用Gridview和ObjectDataSource轻松实现自定义分页
- 使用profile的PASSWORD_VERIFY_FUNCTION参数实现自定义的密码验证规则
- 使用框架集实现页面导航功能
- 使用AjaxPro框架实现无刷新用户登录验证【原创】
- AjaxPro框架使用整理(二) 客户端与服务器端自定义对象交互