Java學習(三)JSP學習1
一、 理解JSP技術
JSP全名為Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它 是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,後綴名為(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。
二、區分JSP與html技術
HTML頁面是靜態頁面,也就是事先由用戶寫好放在服務器上,由web服務器向客戶端發送.
三、在eclipse的Web項目中新建一個JSP文件
四、與html語句對比
五、 導出Web項目
註意:導出Web文件時,要先斷開服務連接
導出一個war包
六、將War部署到Tomcat服務
將打包好的War文件部署到Tomcat服務中
接著運行Tomcat,會看到War包已經解壓成為文件夾
接著就可以運行Tomcat使本地網頁顯示webapps中的JSP文件的效果
七、JSP打印艾賓浩斯記憶曲線
1、了解艾賓浩斯記憶曲線
在新一天的學習中,學習了有關遺忘曲線復習記憶的方法,讓我們先了解下艾賓浩斯記憶曲線。
德國心理學家艾賓浩斯(H.Ebbinghaus)研究發現,遺忘在學習之後立即開始,而且遺忘的進程並不是均勻的。最初遺忘速度很快,以後逐漸緩慢。他認為"保持和遺忘是時間的函數",並根據他的實驗結果繪成描述遺忘進程的曲線,即著名的艾賓浩斯記憶遺忘曲線。
2、在昨天的Web項目的基礎上,新建一個JSP文件
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="java.util.*" %> 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5 <html> 6 <head> 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8 <title>Insert title here</title> 9 </head> 10 <body> 11 <table border=2> 12 <tr> 13 <td>日期</td> 14 <td>新學期</td> 15 <td>復習前1課</td> 16 <td>復習前2課</td> 17 <td>復習前5課</td> 18 <td>復習前7課</td> 19 <td>復習前15課</td> 20 </tr> 21 <% 22 //通過日歷類創建對象 23 Calendar cd = new GregorianCalendar();//向上轉型 24 int y =Calendar.YEAR; 25 int Y = cd.get(y);//獲得年份 26 int m=Calendar.MONTH; 27 int M = cd.get(m);//獲月年份 28 int days = 0;//初始化天數 29 String day = "";//初始化輸出日期 30 //定義循環參數 31 int n = 1; 32 int p = 1; 33 int l = 1; 34 35 int startday = 8;//初始化開始日期 36 int startmonth = 5;//初始化開始月份 37 String month1=(startmonth+1)+"";//月份的遞加 38 String month2=(startmonth+2)+"";//月份的遞加 39 String month3=(startmonth+3)+"";//月份的遞加 40 String start = startmonth+"";//定義月份參數 41 42 //對月份進行劃分 43 List<String> myList1=new ArrayList<String>(); 44 List<String> myList2=new ArrayList<String>(); 45 myList1.add("1"); 46 myList1.add("3"); 47 myList1.add("5"); 48 myList1.add("7"); 49 myList1.add("8"); 50 myList1.add("10"); 51 myList1.add("12"); 52 53 myList2.add("4"); 54 myList2.add("6"); 55 myList2.add("9"); 56 myList2.add("11"); 57 58 59 60 61 int group = 72;//代表有多少篇課文要背誦 62 int work = 72+15; 63 for(int i=0;i<work;i++){ 64 65 //通過比較的出當月最大天數 66 boolean b1=myList1.contains(start); 67 boolean b2=myList2.contains(start); 68 if(b1){ 69 days = 31; 70 }else { 71 if(b2){ 72 days = 30; 73 }else{ 74 if(Y % 4 == 0 && Y % 100 != 0 || Y % 400 == 0){ 75 days = 28; 76 }else { 77 days = 29; 78 } 79 } 80 } 81 //以時間的形式輸出days 82 if((startday+i)<=days){ 83 day = (1+M)+"月"+(i+startday); 84 }else if(n<=days){ 85 start = month1; 86 day =(2+M)+"月"+n; 87 n++; 88 }else if(p<=days){ 89 start = month2; 90 day =(3+M)+"月"+p; 91 n++; 92 p++; 93 }else{ 94 start = month3; 95 day =(4+M)+"月"+l; 96 l++; 97 } 98 String task1 = "";//當天需要工作的第一個任務 99 String task2 = ""; 100 String task3 = ""; 101 String task4 = ""; 102 String task5 = ""; 103 String task6 = ""; 104 //先求算任務1 105 if(i<=group-1){ 106 task1 = (i+1)+""; 107 }else{ 108 task1 = "—"; 109 } 110 //先求算任務2 111 if(i<=0||i>=(group+1)){ 112 task2 = "—"; 113 }else{ 114 task2 = i+""; 115 } 116 //先求算任務3 117 if(i<=0+1||i>=(group+2)){ 118 task3 = "—"; 119 }else{ 120 task3 = (i-1)+""; 121 } 122 //先求算任務4 123 if(i<=0+3||i>=(group+4)){ 124 task4 = "—"; 125 }else{ 126 task4 = (i-3)+""; 127 } 128 //先求算任務5 129 if(i<=0+6||i>=(group+7)){ 130 task5 = "—"; 131 }else{ 132 task5 = (i-6)+""; 133 } 134 //先求算任務5 135 if(i<=0+14||i>=(group+15)){ 136 task6 = "—"; 137 }else{ 138 task6 = (i-14)+""; 139 } 140 141 %> 142 <tr> 143 <td><%=day %></td> 144 <td><%=task1%></td> 145 <td><%=task2%></td> 146 <td><%=task3%></td> 147 <td><%=task4%></td> 148 <td><%=task5%></td> 149 <td><%=task6%></td> 150 </tr> 151 <% 152 } 153 %> 154 </table> 155 156 </body> 157 </html>
對這串代碼不是很滿意,感覺不夠流暢,但又不知道的怎樣能夠優化。。。,希望能有大神來指點下,謝謝!
3、運行結果
4、對上面的代碼進行改進
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ page import = "java.util.Date , java.text.*" %> 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5 <html> 6 <head> 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8 <title>Insert title here</title> 9 </head> 10 <body> 11 <table border=1> 12 <tr> 13 <td>天數</td> 14 <td>新學習</td> 15 <td>復習前1天</td> 16 <td>復習前2天</td> 17 <td>復習前4天</td> 18 <td>復習前7天</td> 19 <td>復習前15天</td> 20 </tr> 21 <% 22 Date today=new java.util.Date();//向上轉型 23 SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd"); 24 25 int group=72; 26 int days=group+15; 27 for(int i=0;i<days;i++){ 28 29 java.util.Calendar calendar = new java.util.GregorianCalendar(); 30 //String day=today.toString(); 31 //String day=today.getTime()+""; 32 //給日歷一個初始時間 33 calendar.setTime(today); 34 //日歷可以獲取的時間 35 36 calendar.add(java.util.Calendar.DATE,i); 37 String day=sdf.format( calendar.getTime()); 38 String task1="";// 39 String task2=""; 40 String task3=""; 41 String task4=""; 42 String task5=""; 43 String task6=""; 44 //求算任務1 45 if(i<=group-1){ 46 task1=(i+1)+""; 47 } 48 else{ 49 task1="--"; 50 } 51 //求算任務2 52 if(i<=0||i>group){ 53 task2=(i+1)+""; 54 } 55 else{ 56 task2=i+""; 57 } 58 //求算任務3 59 if(i<=(0+1)||(i-1)>=(group+1)){ 60 task3="--"; 61 } 62 else{ 63 task3=(i-1)+""; 64 } 65 //求算任務4 66 if((i-3)<=0||(i-3)>=(group+1)){ 67 task4="--"; 68 69 }else{ 70 task4=(i-3)+""; 71 } 72 //求算任務5 73 if((i-6)<=0||(i-3)>=(group+1)){ 74 task5="--"; 75 76 }else{ 77 task5=(i-6)+""; 78 } 79 //求算任務6 80 if((i-14)<=0||(i-14)>=(group+1)){ 81 task6="--"; 82 83 }else{ 84 task6=(i-14)+""; 85 } 86 87 %> 88 <tr> 89 <td><%=day %></td> 90 <td><%=task1%> </td> 91 <td><%=task2 %></td> 92 <td><%=task3 %></td> 93 <td><%=task4 %></td> 94 <td><%=task5 %></td> 95 <td><%=task6 %></td> 96 </tr> 97 <% 98 } 99 %> 100 </table> 101 </body> 102 </html>
效果圖:
註意:
這是jsp常用的page指令,註意import中,多個包和類用逗號隔開
JSP三大指令分別是:page指令、include指令和taglib指令
5、對2和4 兩串代碼進行比較分析
代碼2:運算停留在C語言的基礎上,用更加復雜的方式實現了部分效果。
代碼4:運用Java語言中的Calendar(日歷類)進行日歷的運算,使得代碼更加清晰、簡潔,效果更好。
Java學習(三)JSP學習1