在java中设定全局变量是非常容易的,但是在jsp中如果想在一个页面定义一个变量供所有其他的jsp来引用,就不一样了,搞了几个小时吧,终于实现了,用到了以前很少用的include标签。
首先定义两个jsp,index.jsp 和 index2.jsp 目录结构如下
目标是index2中的变量在index中可以调用。
首先是index2.jsp的内容
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%!String name = "张小白";%>
然后是index.jsp的内容
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ include file="index2.jsp"%>
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
index1的内容<br>
<%=name %>
</body>
</html>
然后你会发现这个报错了!
Duplicate local variable basePath--------------这个错误的原因是index2.jsp中有变量重名,我们修改下index2.jsp中的代码:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%!String name = "张小白";%>
把中间部分删除,然后看到index.jsp中的红线还在,别急,等一会(我是把两个页面都关掉再重新开就好了!)
安全了
运行一下页面