HTML引用JSP中的变量

  • 首先呢,我在浏览器里存了一个cookie,cookie的值是用户名。

  • 然后呢,我要在网页中读取cookie,并在网页上显示出来。

第一次尝试

因为我采用了SpringMVC框架,必不可免地,使用JSP语言来读取cookie:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<p>
<%
Cookie cookie = null;
Cookie[] cookies = null;

cookies = request.getCookies();
if (cookies != null) {
for (Cookie cooky : cookies) {
if (cooky.getName().equals(StudentConst.STUDENT_NAME)) {
System.out.println(cooky.getName() + " : " + cooky.getValue());
break;
}
}
} else {
System.out.println("cookie为空!!!!!");
}
%>
</p>

咱本以为,上面的代码嵌入在html页面里,那么,System.out.println(cooky.getName() + " : " + cooky.getValue())应该会在网页上输出用户名,不想运行后,用户名出现于服务器的output窗口。

我这才想起,JSP是一种服务器端的语言,它会由服务器编译并生成相应的网页,System.out.println方法自然会输出内容到服务器而不是网页。(JSP和JavaScript根本不是同一种东西)

第二次尝试

经过学习,我才知道,JSP可以定义全局变量,可以对全局变量进行修改,有特殊的语法将变量输出到html中。
经过修改,网页代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<p>
<%--定义JSP中的全局变量name--%>
<%!
String name;
%>

<%--寻找cookie内容并赋值给全局变量name--%>
<%
Cookie cookie = null;
Cookie[] cookies = null;

cookies = request.getCookies();
if (cookies != null) {
for (Cookie cooky : cookies) {
if (cooky.getName().equals(StudentConst.STUDENT_NAME)) {
System.out.println(cooky.getName() + " : " + cooky.getValue());
name = cooky.getValue();
break;
}
}
} else {
System.out.println("cookie为空!!!!!");
}
%>

<%--html引用全局变量name的值--%>
<%=name%>
</p>

效果:![此处输入图片的描述][1]