容器拿到JSP,会把它转换为一个servlet类源文件(.java),然后再把这个源文件编译为java servlet类。也就是说,JSP本质上就是一个servlet。
JSP转换后的servlet代码放在<tomcat home>workCatalina<server name><web app name>orgapachejsp下。
注意:如果是第一次访问.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>