JSP学习笔记
1.声明变量时:<%! int j=1;%>(将变量生成为servlet类的成员变量,多个客户端共享一份)与<% int j=1;%>(只是一个方法内的局部变量,每个客户端都有一个)使用的过程当中,尽量避免将一个变量声明为类的成员变量,除非需要统计一个servlet类的访问次数。后者之中不能定义方法,前者可以。
2.java脚本(如javascript)在客户端执行,<%……%>内的内容在服务器端执行,然后将结果传回客户端。
3.JSP包含指令:
静态包含(常用):<%@ include file="fileURL"%>把被包含的文件原封不动的copy到该位置,然后编译、转换,但只生成一个java和class文件,fileURL中不能包含参数,包含页面和被包含页面访问的是同一个request对象,它们相当于一个页面,二者的编码方式必须相同;
动态包含(不常用):<jsp: include page="fileURL" flush="true"/>fileURL中是可以传递参数的;包含页面和被包含页面request的对象不同,但是可以取到相同的参数(小的可以request到大的参数,还可以添加自己的参数);需要的时候才会转换、编译,在后台产生两个java和class文件。
4.两种跳转方式:
response.sendRedirect(“fileURL”);跳转过程中地址栏要发生变化,跳转后变成跳转后页面的地址;服务器到客户端两个往返,效率低下,速度慢(客户端请求-服务器响应,转向客户端,令客户端地址栏发生变化(地址可以是任意合法地址如其他网址),自动提交,重新向服务器请求新的地址-服务器找到结果后反馈给客户端显示);这种转向不会影响到后面代码的运行(除非加上return);转到的页面不能去前一个页面的参数;URL中的“/”表示到域名的根路径
<jsp:forward page="fileURL"/>客户端请求,服务器端直接转向新地址然后将结果导向客户端,过程中地址栏不发生变化,在服务器内部完成转换(转到的地址不可以是此工程之外的地址);速度快;虽然是不同的对象,但是可以取到上个页面的参数;forward以后的语句不会继续执行;URL中的“/”表示到webapp工程的根路径
5.JSP标签的作用范围scope有page、request、session、application从小到大四种,默认情况下是page
6.Math.floor(cost*100)/100.0 cost是double类型,Math.floor(cost*100)函数用来返回cost*100的整数部分