1. 程式人生 > >Java學習(三)JSP學習1

Java學習(三)JSP學習1

rtm 斷開 三大指令 保持 web應用 對比 c語言 let 新建

一、 理解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服務器向客戶端發送.

  JSP頁面是動態頁,有JSP容器執行該頁面的Java代碼部分然後實時生成的頁面.

三、在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