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

时间:2013-09-25 07:30:56

标签: java javascript jsp

实施例

<%
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;
}

所以,我需要一个很好的impl来分隔jsp文件中的js,java。

5 个答案:

答案 0 :(得分:2)

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

How to avoid Java code in JSP files?

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

根据给出的代码,我建议不要在每个JSP中检查身份验证,而是使用过滤器。在您的过滤器中,检查您需要知道的任何内容,并将HTTP重定向发送到loginform。

答案 3 :(得分:0)

我认为使用 JSTL 标记在jsp中使用java代码的最佳方法。您可以了解有关JSTL here

的更多信息

在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>

全部

答案 4 :(得分:0)

  

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

不要在JSP中使用Java。

忘掉Scriptlets,避免使用JSP中的Business Logic,使用JSTL(或Struts中的OGNL)来执行Presentation Logic。