容器拿到jsp,會把它轉換為一個servlet類源文件(.java),然后再把這個源文件編譯為java servlet類。也就是說,JSP本質上就是一個servlet。
JSP轉換后的servlet代碼放在<tomcat home>/work/Catalina/<server name>/<web app name>/org/apache/jsp下。
注意:如果是第一次訪問.JSP文件,速度會很慢,因為要被服務器翻譯成對于的Java(Servlet)文件,然后再被編譯成.class文件并加載到內存中。但是如果是以后訪問速度就會變快了,因為是直接調用內存中JSP實例。
例子:用JSP編寫一個計算器
主要知識點有:
1、如何接受JSP頁面提交的數據并處理
2、JSP中如何使用Java片段
3、JSP中如何使用JavaScript完成對數據合法性的校驗。
代碼如下:
<!--這是計算器的界面--><%@ page contentType="text/html;charset=gb2312"%><html><head><h1>我的計算器</h1><!--在JSP中添加js代碼,防止用戶空提交--><script language="Javascript"> <!-- //寫一個函數驗證用戶是不是空提交 function checkNum(){ //判斷num1是不是為空 if((form1.num1.value=="")||(form1.num2.value=="")){ window.alert("輸入不能為空"); return false; } //判斷num1是不是一個數 if((Math.round(form1.num1.value)!=form1.num1.value)||(Math.round(form1.num2.value)!=form1.num2.value)){ window.alert("輸入的不是一個數字"); return false; } } --></script></head><body><!--這是計算的結果--><% //接收第一個數 String s_num1 = request.getParameter("num1"); //接收第二個數 String s_num2 = request.getParameter("num2"); //接收符號 String flag = request.getParameter("flag"); int num1 = 0; int num2 = 0; int result = 0; if((s_num1!=null) && (s_num2!=null) && (flag!=null)){ num2 = Integer.parseInt(s_num2); num1 = Integer.parseInt(s_num1); //計算 if(flag.equals("+")){ result = num1 + num2; }else if(flag.equals("-")){ result = num1 - num2; }else if(flag.equals("*")){ result = num1 * num2; }else if(flag.equals("/")){ result = num1 / num2; } }%><hr><form name="form1" action="myCal.jsp" >請輸入第一個數:<input type="text" name="num1" value=<%=num1 %>><br/><select name="flag"><option value=+>+</option><option value=->-</option><option value=*>*</option><option value=/>/</option></select><br/>請輸入第二個數:<input type="text" name="num2" value=<%=num2 %>><br/><input type="submit" value="計算" onclick="return checkNum();"></form><hr>計算結果:<%=result %></body></html>
新聞熱點
疑難解答