0

例子

<%
Editor editor = (Editor)session.getAttribute("editor");
if(null == editor){
%>
<script type="text/javascript">
window.parent.location.href = "login.jsp";
</script>
<%
}
%>

这样的时间似乎很多

use java code to get something....
if(something is true){
    Then do something with javascript;
}

所以,我需要一个好的实现来分离jsp文件中的js、java。

4

5 回答 5

2

在 JSP 中使用标记库而不是 Java 代码。您发布的代码很简单,可以使用简单的核心标签来实现。有很多开源标签​​库可以用来避免 JSP 中的 java 代码。一旦你开始使用它们,它会看起来更干净。检查以下链接以获取类似问题:

如何避免 JSP 文件中的 Java 代码?

于 2013-09-25T07:34:23.613 回答
0

Based on the code given, I would suggest not to check for authentication in every of your JSPs, but use a filter instead. In your filter, check whatever you need to know, and sent a HTTP redirect to the loginform instead.

于 2013-09-25T07:36:53.970 回答
0

对于这个用例,您可以在 servlet 中检查您的编辑器(您可以从请求中获取会话)并从中重定向到登录。

标记库也可以解决这个问题,但如果你问我,它仍然感觉像是 JSP 中的 Java。

于 2013-09-25T07:34:40.103 回答
0

在jsp中分离javascript和java的最佳方法

不要在 JSP 中使用 Java。

忘记 Scriptlets,避免 JSP 中的业务逻辑,只使用 JSTL(或 Struts 中的 OGNL)来执行表示逻辑。

于 2013-09-25T08:50:06.180 回答
0

我认为使用JSTL标签在 jsp 中使用 java 代码的最佳方式。您可以在此处了解有关 JSTL的更多信息

只需在您的 jsp 文件中包含以下行

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

你的代码会像

function redirectFunction() {   
    <c:choose>
        <c:when test="${empty sessionScope.editor}">
            window.parent.location.href = "login.jsp";
        </c:when>
        <c:otherwise>
            //other code will go here.
        </c:otherwise>
    </c:choose>
}

您也可以在一个demo.js文件中编写此函数并将其包含到您的 jsp 文件中

<script type="text/javascript" src="javascript/demo.js"></script>

这一切

于 2013-09-25T08:30:38.200 回答