JSP页面如何与XSL一起使用

时间:2017-05-17 13:00:21

标签: xml jsp xslt java-ee web

我正在努力使用JSP和XSL技术。以下是我在其他人的项目中看到的代码,这很令人困惑。根据我的理解,这个人使用xsl将jsp像css渲染为html。是否有必要编写这样的代码?我认为生成XSL是为了转换XML,而不是像CSS那样做。我希望有人能够对我进一步解释,这将是一个很大的帮助。提前谢谢!

LoginAction.jsp

 <%@page contentType="application/xml" import="uts.wsd.*" errorPage="error500.jsp"%><?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="loginAction.xsl"?>

                            <!-- Implement page styles + elements from .xsl -->

<% 
//get objects from .xml files
String filePath = application.getRealPath("WEB-INF/users.xml"); %>
<jsp:useBean id="usersApp" class="uts.wsd.UsersApplication" scope="application">
    <jsp:setProperty name="usersApp" property="filePath" value="<%=filePath%>"/>
</jsp:useBean>

<page>

<%
//get needed data

String email = request.getParameter("email");
String password = request.getParameter("password");
//User user = null;
%>

<%
//init login method from java class
User user = usersApp.getUsers().login(email, password);

if (user != null) { //login is successful
    session.setAttribute("user", user);
    response.sendRedirect("index.jsp");
     %> 
<success />

<% 
//if login is not successful
} else { %>
<fail />

<% } %>

</page>

此页面中的失败和成功标记如何工作​​?是否用于匹配xsl?

loginAction.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" indent="yes" />

    <xsl:variable name="email" select="email" />
    <xsl:variable name="password" select="email" />

    <xsl:template match="page">
        <html>
            <head>
                <style>
                      ......
                </style>
                <title>Logging In...</title>
            </head>
            <body>
                <!-- Page layout -->

                <div class="heading">
                    You are not logged in <br />
                    <a href="index.jsp">Index</a> | <a href="register.jsp">Register</a>
                    <br />
                </div>
            <br />
            <xsl:apply-templates />
            </body>
        </html>
    </xsl:template>

    <xsl:template match="success">
    <br />
    <hr />
        <h1>Login successful.</h1>
        <p>Click <a href="index.jsp">here</a> to search through available articles.</p>
    </xsl:template>

    <xsl:template match="fail">
        <hr />
        <h1 class="h1">Email and/or Password incorrect.</h1>
        <p>Click <a href="login.jsp">here</a> to try again.</p>
        <br />
        <p>Click <a href="register.jsp">here</a> to create an account.
        </p>
    </xsl:template>


</xsl:stylesheet>

1 个答案:

答案 0 :(得分:1)

您写道:

  

这个家伙使用xsl渲染jsp

我会换一种说法:

.jsp 文件包含应用程序逻辑:

  • 设置bean和变量,
  • 检查是否有登录用户
  • 决定应该呈现哪部分HTML代码。

但是这个文件不包含任何实际的HTML代码。 相反,它包含以下&#34;标记&#34;:

  • <page> - 这里放置HTML,HEAD和BODY标签 以及要呈现的身体内容的初始部分 在这两种情况下(无论是否有登录用户)。
  • <success><fail> - 这里放了一块 要在每个相应的案例中呈现的HTML代码。
  • </page> - 这里放置了BODY和HTML的结束标记。

请注意,<success><fail>都在if ... then ... else ...范围内 一段JSP代码。

这确保了第一段或第二段HTML代码 将呈现,具体取决于当前用户的存在,但不是两者。

.jsp .xsl 文件之间对页面代码进行分区 这是一种分离内容并允许两者的方法 IT人员可以同时工作:

  • 第一个人 - 一个JSP程序员 - 准备应用程序逻辑,
  • 第二个人 - 一个UI专家 - 准备表示层。

这在某种程度上类似于MVC范例:

  • .jsp 文件包含模型控制器部分,
  • .xsl 文件包含查看部分。

使用XSL转换来转换JSP文件是一种加入方式 这两个部分都在一个页面中呈现给浏览器用户。