JSP-Web应用程序开发-第一周

发布于 2020-06-21  577 次阅读


Web应用程序开发 JSP

开课&开发环境安装

服务器端应用的技术:

  • JSP(Java Server Pages)
  • Java Servite
  • 第三方框架

开发环境

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 %>

我们都要做生活的高手。