我最近开始学习Java,我的问题可能很愚蠢,但不过:
我正在开展小型项目,目前它只是一个简单的网络服务,在Google App Engine上工作。 我们使用这样的JSP。
查看 - jsp文件
<jsp:useBean id="bean" class="my.package.web.SpecificBean" />
<jsp:setProperty name="bean" property="request" value="<%=request%>" />
Controller - java bean。
public class SpecificBean {
public void setRequest(HttpServletRequest request) {
/*
Do authorization
Prepare data for page
*/
}
}
--- ADDED ---第一次被隐藏
<jsp:setProperty
调用setRequest方法,它为页面准备数据,我正在使用JSTL将这些数据放在必要的位置。
使用域和控制器的控制器等,但这不是我在说什么。
当我添加授权时,我决定不重定向人员,而是在这个地址上给他们登录页面。
我这样写了一下:
--- / ADDED ---
<jsp:useBean id="bean" class="my.package.web.SpecificBean" />
<jsp:setProperty name="bean" property="request" value="<%=request%>" />
<c:choose>
<c:when test="${!bean.userAuth.loggedIn}">
<html><head><title>Please log in</title></head><body>...</body></html>
</c:when>
<c:when test="${!bean.userAuth.userValid}">
<html><head><title>You are not allowed</title></head><body>...</body></html>
</c:when>
<c:otherwise>
<html><head><title>Page you have been requested</title></head><body>...</body></html>
</c:otherwise>
</c:choose>
是的,这看起来很笨重,我知道!在每个.jsp
中,我必须复制粘贴如此大的代码。
当然我做了一些改进,比如把“请登录”html放到单独的.jsp
中并使用<%@include file=""%>
但无论如何,有一段很好的代码,包含每一页。只有3页,但......
我可以使用两个<%@include file=""%>
指令,用于“头部”和“底部”,但我不确定这个决定是否会产生不良后果。
所以我该怎么办?
<%@include file=""%>
答案 0 :(得分:2)
身份验证不是您的网页应该了解或考虑的内容。
将此逻辑移至Filter,检查身份验证并在需要时重定向。
答案 1 :(得分:1)
简单的动态包括:
<jsp:include page="pagename" />
<jsp:include
动作在请求时执行,<%@include
执行编译时。