使用MVC實現計算器功能


一:View  cal.jsp

    

 1 <%@page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>采用三目運算符獲取運算符</title>
 8 </head>
 9 <body>
10     <form action="CalServlet" method="post" >
11     操作數1:<input type="text" name="num1" value="${requestScope.newCal.num1}"><br>
12     運算: <input type="radio" name="op" value="+"   ${requestScope.newCal.op=="+"? "checked": " "}>+
13           <input type="radio" name="op" value="-"   ${requestScope.newCal.op=="-"? "checked" : " "}>-
14           <input type="radio" name="op" value="*"   ${requestScope.newCal.op=="*"? "checked" : " "}>*
15           <input type="radio" name="op" value="/"   ${requestScope.newCal.op=="/"? "checked" : " "}>/<br> 
16     操作數2:<input type="text" name="num2" value="${requestScope.newCal.num2}"><br>
17     <input type="submit" value="計算" ><br>
18     結果:<input type="text" value="${requestScope.newResult}">
19     </form>
20 </body>
21 </html>

二:Model  Calculator.java

 1 package nuc.sw.cal.bean;
 2 
 3 public class Calculator {
 4       private float num1;
 5       private String op;
 6       private float num2;
 7     public float getNum1() {
 8         return num1;
 9     }
10     public void setNum1(float num1) {
11         this.num1 = num1;
12     }
13     public String getOp() {
14         return op;
15     }
16     public void setOp(String op) {
17         this.op = op;
18     }
19     public float getNum2() {
20         return num2;
21     }
22     public void setNum2(float num2) {
23         this.num2 = num2;
24     }
25       
26 }

三:CalServlet.java

 1 package nuc.sw.cal.servlet;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 
 9 import nuc.sw.cal.bean.Calculator;
10 
11 /**
12  * Servlet implementation class CalServlet
13  */
14 public class CalServlet extends HttpServlet {
15     private static final long serialVersionUID = 1L;
16        
17     /**
18      * @see HttpServlet#HttpServlet()
19      */
20     public CalServlet() {
21         super();
22         // TODO Auto-generated constructor stub
23     }
24 
25     /**
26      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
27      */
28     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
29         // TODO Auto-generated method stub
30         response.getWriter().append("Served at: ").append(request.getContextPath());
31     }
32 
33     /**
34      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
35      */
36     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37         // TODO Auto-generated method stub
38         
39         //form中method若由get改變為post,只需在doPost里調用doGet方法doGet(request, response);就可以,不需要重新寫方法。
40         //第一次請求為Get  之后為Post
41         
42         //接受表單提交的數據,並將數據封裝在bean中
43         Calculator cal=new Calculator();
44 
45         cal.setNum1(Float.parseFloat(request.getParameter("num1")));
46         cal.setOp(request.getParameter("op"));
47         cal.setNum2(Float.parseFloat(request.getParameter("num2")));
48         
49         float result=0;
50         switch(cal.getOp().charAt(0)){
51         //根據運算符做相應的操作
52          case '+':
53             result=cal.getNum1()+cal.getNum2();
54             break;
55          case '-':
56             result=cal.getNum1()-cal.getNum2();
57             break;
58          case '*':
59             result=cal.getNum1()*cal.getNum2();
60             break;
61          case '/':
62             result=cal.getNum1()/cal.getNum2();
63         }
64         
65         //將對象和結果保存到request域中
66         //之后的模型中時常會用到傳遞 整個對象
67         request.setAttribute("newCal",cal);
68         request.setAttribute("newResult",result);
69         //以服務器端跳轉頁面
70         request.getRequestDispatcher("cal.jsp").forward(request, response);
71         
72     /*
73     1.服務器端跳轉              作用域為request  有返回結果而且地址欄改變,變為現頁面            請求轉發
74       request.getRequestDispatcher("cal.jsp").forward(request, response);
75     2.客戶端跳轉(2次請求)      作用域為session  無返回結果而且地址欄不變,仍是前一個頁面  請求重定向 
76       request.sendRedirect("cal.jsp");
77      */
78     }
79 
80 }

四:項目建立結果及運行結果:

      

     

 

     

     

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM