一.項目結構 二.計算模塊和界面模塊間的調用 三.頁面演示效果 四.遇到問題 五.知識點記錄 六.新知識新技能 七.未實現但計劃實現功能 八.學習目標與總結 項目地址:https://git.dev.tencent.com/hey_wuqw/webArithmetic.git 一.項目結構 二. 計 ...
一.項目結構
二.計算模塊和界面模塊間的調用
三.頁面演示效果
四.遇到問題
五.知識點記錄
六.新知識新技能
七.未實現但計劃實現功能
八.學習目標與總結
項目地址:https://git.dev.tencent.com/hey_wuqw/webArithmetic.git
一.項目結構
二. 計算模塊和界面模塊間的調用
三.頁面演示效果
四.遇到問題
1.check()方法(用於接收答題頁面傳來的參數,請求從answer.jsp(答題界面)轉發到result.jsp(做題結果界面))需要訪問makeQ()方法中的保存運算式子的字元串數組(即qlist):同一個類中的一個方法里訪問另一個方法的變數是不合理的。
——想到的三個解決方法(1已實踐成功,2,3未實踐不知是否可行):
(1)定義一個全局變數(字元串數組qlist),這樣就能在makeQ()方法中訪問該變數
——問題:數組大小是固定的,在定義數組時用戶傳的numExp(出題數量)是未知的,這時定義數組變數無法確定數組大小,只能隨便給一個足夠大的數。但這樣轉為list集合放到
String[] list2 = list.toArray(new String[list.size()]);
(2)給makeQ()定義一個返回值,返回qlist數組,check()調用返回值。
(3)由於answer.jsp中請求的目標資源是servlet中的check(),那麼把該表量從makeQ()傳到answer.jsp再傳到check().
2.將foreach迴圈內的input框輸入值傳到servlet:
——設置一個ID
<c:set var="position" value="0"/>
每迴圈一次給name賦如下值且ID+1
<input name="s${position}" id="id${position}" style="width: 60px;"/>
<c:set var="position" value="${position+1}"/>
servlet中接收:
for(int i = 0;i<expNum;i++){
userAn[i] = request.getParameter("s"+i);
}
3.for input String:””
——一開始expNum是makeQ()方法的局部變數,無法在check()中使用——expNum也定義為全局變數
4.把兩個字元創變數userAn和correctAn用“==”來比較是否相等——字元串的比較用str1.equals(str2)
五.知識點記錄
1.JSTL
if( !MD && !Brac ){//沒有乘除法和括弧
for (int i=0; i<expNum; i++)
qlist[i] = question.createExp(fuNum, upper, lower);
}else if ( !MD && Brac ){//沒有乘除法有括弧
for (int i=0; i<expNum; i++)
qlist[i] = question.createExpWithBrac(fuNum, upper, lower);
}else if ( MD && !Brac ){//有乘除法沒有括弧
for (int i=0; i<expNum; i++)
qlist[i] = question.createExpWithMD(fuNum, upper, lower);
}else{//既有乘除法又有括弧
for (int i=0; i<expNum; i++)
qlist[i] = question.createExpWithAll(fuNum, upper, lower);
}
3.controller層包含了較多的邏輯業務處理功能,背離controller層的真正存在意義。如check()方法中涵蓋了生成計算結果,並把計算結果的存入數組的邏輯。
六.新知識新技能
我和我的結對伙伴都是主要學習後端的,關於前端編寫我們速學了一下bootstrap,用了bootstrap的基本模板,再進行修改,得到的頁面真的是整潔美觀,還具備相容性,特別好用。
七.未實現但計劃實現功能
1.錯題報告(將錯誤題目及答案列出,生成錯題集)
2.生成題目文件並課下載
3.做題歷史記錄
八.學習目標與總結
瀏覽了上屆學長學姐這個結對項目的博客,發現他們有大量的篇幅都是在做代碼性能分析,之前從來沒有接觸過,感覺可以學一學。這次涉及人機交互界面的設計,讓我意識到在進行後端技術學習時也可以抽空學學前端,能自己完成一個項目的同時,也能更好的理解前後端的交互。