MVC分层
题目:客户端给出一个月薪数字过来,服务器进行计算,算一下个人所得税是多少钱,然后显示给客户端看。
垃圾代码
1、 先建一个index.jsp
a. 接受收入income 数字
b. 开始计算税费
- 显示结果
在url输出
//http://localhost:8080/test014/index.jsp?income=10000
jsp文件中打如下代码:
//第一步:接受客户端的参数
String income_str = request.getParameter("income");
float income = Float.parseFloat(income_str);
//第二步:处理业务逻辑
float tax_income = income - 3500;//应交所得税的金额
float tax = tax_income*0.2f-555;
//第三步:输出结果
%>
应交税款<%=tax %>
思考:
1、 实体是Tax
2、 分层 M ,V , C
第一步:先建立实体类Tax.java
第二步:做数据库的操作(这个例子没有,跳过)
第三步:写业务逻辑的代码
1. 先写接口(定义一下有什么方法)
2. 写实现类
第四步:写控制器
(接受客户端的请求参数,调用M,跳转到v)
建立一个TaxAction.java
(控制器用Servlet替代jsp,它没有任何html代码)
a. 控制器接受客户端的请求,获取客户端传递的参数
b. 调用业务逻辑的控件,进行计算,得到结果。
- 把结果放在request的属性中,然后把请求转发给view层
第五步:编写view层jsp页面,用于显示结果。
(view层没有任何的java代码)
jsp收税案例:
首先创建一个jsp文件
然后在src中创建四个包entity、action、dao、service
然后在entity中创建一个实体类TAX
public class Tax {
private float income;//收入
private float taxRate;//税率
private float qcd;//速算扣除数
private float taxDue;//应交税金
public float getIncome() {
return income;
}
public void setIncome(float income) {
this.income = income;
}
public float getTaxRate() {
return taxRate;
}
public void setTaxRate(float taxRate) {
this.taxRate = taxRate;
}
public float getQcd() {
return qcd;
}
public void setQcd(float qcd) {
this.qcd = qcd;
}
public float getTaxDue() {
return taxDue;
}
public void setTaxDue(float taxDue) {
this.taxDue = taxDue;
}
}
然后在action中创建一个servlet类:TaxAction
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//第一步:获取参数
String income_str=request.getParameter("income");
float income=Float.parseFloat(income_str);
//第二步:调用各种业务逻辑
TaxService ts=new TaxServiceimpl();
Tax tax=ts.calcTax(income, 0.2f, 555);
//第三步:请求转发给tax.jsp显示结果
request.setAttribute("tax", tax);
request.getRequestDispatcher("tax.jsp").forward(request, response);
}
doGet(request, response);
}
public Tax calcTax(float income,float taxRate,float qcd);
}
然后创建一个类:TaxServiceimpl:
public Tax calcTax(float income, float taxRate, float qcd) {
// TODO Auto-generated method stub
Tax t=new Tax();
t.setIncome(income);
t.setTaxRate(taxRate);
t.setQcd(qcd);
if(income<=3500){
t.setTaxDue(0);
}else{
t.setTaxDue( (income-3500)*0.2f-qcd );
}
return t;
}
最后在tax.jsp中打入如下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
您的收入:${tax.income}<br>
税率:${tax.taxRate} <br>
速算和除数:${tax.qcd} <br>
应交税金:${tax.taxDue} <br>
</body>
</html>
然后运行,在url中打入如下代码:
http://localhost:8080/test015/TaxAction?income=10000
即可完成!