怎样使JSP页面显示另一个页面上生成好的导航栏

java新手,最近自己做了个小项目练手,卡在权限控制了,我的想法是根据权限不同生成不同的导航栏,然后这个导航栏能始终显示在页面上方,不需要每个JSP都要写,不知道该怎么实现,谢谢了

1.在页面跳转控制action或者serlvet获取权限
2.写一个header.jsp(需要的页面引入就行) 需要standard.jar和jstl-1.2.jar
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
核心代码:
<!-- 多个权限 -->
    <c:forEach var = "auth" items="${sessionScope.user.auths}">
                    <!-- 单个权限判断 -->
                  <c:if test='${auth=="xxx"}'>
                  <!-- 写入你权限下的导航-->
                  </c:if>
                  ...
     </c:forEach>
还有其他不清楚的么

追问

你的意思是,登陆的时候在user属性中加入权限属性,在jsp上写一个判断,来选择生成导航菜单吗?这样是不是就可以直接使用include注入导航就OK了?有没有方法是在action中判断好权限,生成了导航jsp然后其它页面都能显示呢?因为手头有个项目就是这么做的,但是看不懂是怎么实现的

追答

看个人定义user包含不 我的就包含auths 你也可以通过方法获取Auths 然后赋给一个定义个Auths对象(要有 get set方法) ${sessionScope.auths} 就行了

追问

这样做貌似浏览器页面查看源代码可以看到代码,还有没有其它权限控制的方法?大神平时做项目时用的是什么方法呢?指点我一下,thank u

追答

这属性是在HTTPSESSION里面的 不是通过ajax请求返回的字符串 所以是看不到的
例如一个跳转登陆成功之后跳转到主页main的action
在这个action中 创建一个Auths auths对象 包含get set方法
把你访问数据库得到的权限赋给auths 在页面上 就可以用${auths}
当然也可以把得到的值
ActionContext actionContext = ActionContext.getContext();
Map session = actionContext.getSession();
session.put("auths", auths);//放在HTTPSESSION中
浏览器是看不见的这些属性的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-04
有一个属性 可以把另一个页面显示在当前页面!追问

你说的是include吗?

第2个回答  2017-07-04
正常处理点击事件,改变div的display属性就好,页面如果要重新载入,就加个session或加cookie就好
第3个回答  2017-07-05
<jsp:include page="XX.jsp"/>

第4个回答  2017-07-07
用<jsp:include>标签
相似回答