Web应用程序开发 JSP
开课&开发环境安装
服务器端应用的技术:
- JSP(Java Server Pages)
- Java Servite
- 第三方框架
开发环境
- JDK
- Tomcat
- Eclipse for Java EE (之前是SE)
JSP语法
注释
HTML注释 网页查看源代码可查看
隐藏注释 <%--隐藏注释--%>
代码注释 与Java注释相同
java脚本
格式:<% code %>
<%
out.println("现在时间:");
java.util.Date date = new java.util.Date();
out.println(date.toLocaleString());
%>
脚本的本质:就是将代码插入到Servlet的service方法中。
表达式
格式:<%= code %>
<%
int accesscont=0;
%>
<%= ++accesscont %>
表达式的本质:在将JSP页面转换成Servlet后,使用out.print()将表达式的值输出。这样如果user.getName()
的返回值是"liky", 那么实际上在servlet中就将转换成out.print("liky");
注意点:
- 如果表达式是调用一个方法,那么这个方法必须要有返回值,而不应是void,也就是说
void getName()
这样的方法是不能被调用的。 - 在方法的后面不能有分号;例如
<%=getName();%>
这是不允许的。
声明
格式: <%! code %>
<%!
int accesscont=0;
%>
count:<%= ++accesscont %>
<%
int accesscont2=0
%>
count2:<%= ++accesscont2 %>
注意:加!是成员变量,不加是局部变量。
声明的本质:就是将声明的变量和方法,作为Servlet类的变量和方法。
**注意: **
现象:
打开多个浏览器, 甚至可以在不同的机器上打开浏览器来刷新改页面, 将发现所有访问客户端访问的count值是连续的, 即所有的客户端共享了同一个count变量。
原因:
JSP页面会编译成一个Servlet类, 每个Servlet在容器中只有一个实例(单例模式); 在JSP中声明的变量是成员变量,成员变量只在创建时初始化, 该变量的值将一直保存, 直到实例销毁。
问题:说明第二个m()方法声明报错的原因。
<%!
int accesscount=0;
void m(){}
%>
<%
int accesscount2=0;
void m(){}
%>
count:<%= ++accesscount %>
count2:<%= ++accesscount2 %>
Comments | NOTHING