我最近开始学习 Java,我的问题可能很愚蠢,但是:
我正在做一个小项目,现在它只是一个简单的网络服务,在谷歌应用引擎上工作。我们使用这样的 JSP。
查看-jsp文件
<jsp:useBean id="bean" class="my.package.web.SpecificBean" />
<jsp:setProperty name="bean" property="request" value="<%=request%>" />
控制器 - java bean。
public class SpecificBean {
public void setRequest(HttpServletRequest request) {
/*
Do authorization
Prepare data for page
*/
}
}
---添加---第一次被隐藏
<jsp:setProperty
调用 setRequest 方法,它为页面准备数据,我正在使用 JSTL 将这些数据放在必要的地方。控制器使用域等,但这不是我要说的。当我添加授权时,我决定不重定向人们,而是在这个地址上给他们登录页面。我是这样写的:
- -/添加 - -
<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=""%>
- 重定向(但我认为这不是我架构的最后一个问题)
- 我听说过 Spring Web Flow,猜猜这是我需要的。但是,对于小型 Web 服务来说,这可能是矫枉过正
- 使用 taglib 并制作我自己的标签,像 JSTL 一样使用它们
- 你的建议?