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服务器向客户端发送.
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(日历类)进行日历的运算,使得代码更加清晰、简洁,效果更好。