代碼解釋基本都在代碼中給出

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=UTF-8"> 7 <title>簡易計算器</title> 8 </head> 9 <body> 10 11 <!-- 12 總結一下今天學到的知識 13 1、學到了EL表達式----》賊強哇 以前都不知道(調用的時候直接寫&{里邊寫下邊4中的一種之后添加東西} 14 ①:PageScope 15 ②:RequestScope 16 ③:SessionScope 17 ④:ApplicationScope 18 2、說一下自己在寫完代碼與看完老師代碼之后出現的一些復雜的地方 19 ①:我在處理radio的時候使用for循環寫的 但是,看了老師的三元表達式以后,我承認,我的復雜了 (無懈可擊) 20 3、今天還學到了一個新知識(關於服務器跳轉和客戶端跳轉) 21 ①:服務器跳轉(快):在服務器之間跳轉是可以使用request的 22 ②:客戶端跳轉(相對於服務器 不快):在客戶端跳轉中是應該使用session的 23 --> 24 <form action="CalServlet" method="post" name="From" > 25 第一個數:<input type="text" name="num1" value="${requestScope.cal.num1}"><br> 26 運算符: 27 <input type="radio" name="operator" value="+" ${requestScope.cal.op=="+"?"checked":""}>+ 28 <input type="radio" name="operator" value="-" ${requestScope.cal.op=="-"?"checked":""}>- 29 <input type="radio" name="operator" value="*" ${requestScope.cal.op=="*"?"checked":""}>* 30 <input type="radio" name="operator" value="/" ${requestScope.cal.op=="/"?"checked":""}>/ 31 <br> 32 第二個數:<input type="text" name="num2" value="${requestScope.cal.num2}"><br> 33 <input type="submit" name="smt" value="提交"><br> 34 計算結果:<input type="text" name="result" value="${result}"> 35 </form> 36 37 </body> 38 </html>

package Calculation; public class Cal { private float num1; private String op; private float num2; public float getNum1() { return num1; } public void setNum1(float num1) { this.num1 = num1; } public String getOp() { return op; } public void setOp(String op) { this.op = op; } public float getNum2() { return num2; } public void setNum2(float num2) { this.num2 = num2; } }

1 package CalculationServlet; 2 3 import java.io.IOException; 4 import javax.servlet.ServletException; 5 import javax.servlet.annotation.WebServlet; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 import Calculation.Cal; 11 12 /** 13 * Servlet implementation class CalServlet 14 */ 15 @WebServlet("/CalServlet") 16 public class CalServlet extends HttpServlet { 17 private static final long serialVersionUID = 1L; 18 19 /** 20 * @see HttpServlet#HttpServlet() 21 */ 22 public CalServlet() { 23 super(); 24 // TODO Auto-generated constructor stub 25 } 26 27 /** 28 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 29 */ 30 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 31 // TODO Auto-generated method stub 32 response.getWriter().append("Served at: ").append(request.getContextPath()); 33 } 34 35 /** 36 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 37 */ 38 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 39 // TODO Auto-generated method stub 40 //doGet(request, response); 41 response.setCharacterEncoding("UTF-8"); 42 Cal cal = new Cal(); 43 cal.setNum1(Float.parseFloat(request.getParameter("num1"))); 44 cal.setOp(request.getParameter("operator")); 45 cal.setNum2(Float.parseFloat(request.getParameter("num2"))); 46 float result = 0; 47 switch(cal.getOp().charAt(0)) { 48 case '+': result = cal.getNum1() + cal.getNum2();break; 49 case '-': result = cal.getNum1() - cal.getNum2();break; 50 case '*': result = cal.getNum1() * cal.getNum2();break; 51 case '/': result = cal.getNum1() / cal.getNum2();break; 52 //可以加入一個default 53 } 54 //System.out.println(result); 55 request.setAttribute("result", result); 56 request.setAttribute("cal", cal); //---- 傳值不過去??? 57 //request.getSession().setAttribute("cal", cal); 58 //新知識 59 //下邊的這個函數就是服務器之間跳轉 注意需要先調用getRequestDispatcher來獲取這個對象 我是這么理解的 60 request.getRequestDispatcher("Cal.jsp").forward(request, response); 61 } 62 63 }
下邊大概了解一下過濾器的問題
//個人理解
1、重要內容寫在doFilter中
2、傳值那些的寫在doinit中