gpt4 book ai didi

java - jsp中如何减少重复?

转载 作者:行者123 更新时间:2023-12-01 23:44:52 25 4
gpt4 key购买 nike

我最近开始学习 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--- for the first time it was hidden

<jsp:setProperty调用 setRequest 方法,它为页面准备数据,我使用 JSTL 将此数据放在必要的位置。使用域等的 Controller ,但这不是我要讨论的。当我添加授权时,我决定不重定向人们,而是为他们提供此地址上的登录页面。我是这样写的:

---/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=""%>说明,针对“头部”和“底部”,但我不确定这个决定不会产生不良后果。

那我该怎么办?

  1. 仅使用 <%@include file=""%>
  2. 重定向(但我认为这不是我的架构的最后一个问题)
  3. 我听说过 Spring Web Flow,我猜这就是我所需要的。然而,对于小型网络服务来说,这可能有点过分了
  4. 使用 taglib 并制作我自己的标签,像 JSTL 一样使用它们
  5. 您的建议?

最佳答案

身份验证不是您的页面应该了解或考虑的内容。

将此逻辑移至 Filter检查身份验证并在需要时进行重定向。

关于java - jsp中如何减少重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17233841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com