仅作为新手在学习过程中的笔记,并不能保证正确性。
1)WEB项目的结构
META-INFWEB-INF
lib 放jar包
class 放生成的字节码文件
index.jsp 默认主界面
2)JSP的执行过程(编译,翻译,执行)(为什么第一次访问JSP比后面访问的时候要慢)
JSP如果第一次执行需要将jsp翻译成.java文件,在编译为.class文件,所以第一次执行较慢,后续执行已经有.class文件,可直接生成jsp页面,不用再进行翻译和编译,所以速度快。
静态内容:HTML静态文本
指令:以"<%@"开头,以"%>"结尾
小脚本:<%java代码%>
表达式:<%=java表达式%>
注释:<!-- --> <%----%>两种注释
声明:<%!方法%>
动作:<jsp:xxxxx/>
3)<!-- --><%----%>两种注释的区别
<!-- -->注释在客户端源码中可见,不安全,会增加网络传输量,降低页面加载速度;
<%-- --%>注释在客户端源码中不可见,安全,降低了网络传输量,相比而言,<%-- --%>这种注释更好。
4)<%%> <%!%> 中声明变量的区别
<% java代码 %>小脚本中的代码定义在在_jspservice方法中,为局部变量,不能在方法中再次声明方法;
<%! %>这里声明的变量是全局变量,方法也是类里的成员方法。
<%! int num1=0 %> num1=<%=++num1 %>全局变量,只初始化一次,每次刷新页面num1都会+1;<% int num2=0 %> num2=<%=++num2 %>局部变量位于_jspservice方法中,每次刷新页面,都会调用_jspservice方法初始化num2,值不变。
5)include 指令和动作的区别
<%@include file="head.jsp" %>
使用include指令时,翻译机将两个JSP页面翻译为一个.java文件,如果head.jsp中有String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";将会和index中的String path变量冲突,出现编译错误 。
<jsp:include page="foot.jsp"></jsp:include>
使用include动作时,翻译机会产生两个独立的java文件,编译产生两个独立的class文件,不会产生冲突,只是在产生网页时将两个文件合并-。