JSP 页面如何与 XSL 配合使用

卢乔伊

我正在努力使用 JSP 和 XSL 技术。下面是我在别人的项目中看到的代码,比较混乱。据我了解,这家伙使用 xsl 将 jsp 像 css 一样渲染为 html。有必要写这样的代码吗?我认为生成 XSL 是为了转换 XML,而不是做 CSS 所做的事情。我希望有人能进一步向我解释,这将是一个很大的帮助。提前致谢!

登录操作.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的吗?

登录操作.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>
瓦尔迪博

你写了:

这家伙用xsl来渲染jsp

我换一种说法:

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

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

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

  • <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 文件是一种将这两个部分合并到一个页面中以呈现给浏览器用户的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jsp页面如何一次加载到内存中?

来自分类Dev

如何使jQuery与Underscore配合使用?

来自分类Dev

如何让jQuery与Underscore配合使用?

来自分类Dev

导航如何与 ViewModelLocator 配合使用?

来自分类Dev

如何使用xsl遍历xml

来自分类Dev

如何使用 xsl 遍历 XML

来自分类Dev

如何使用xsl:number count作为xsl:if测试条件的条件?

来自分类Dev

使用参数在我的JSP页面中调用JSP页面

来自分类Dev

在JSP中使用<X:Transform>将XML与多个XSL文件转换

来自分类Dev

Spring Sidecar如何与Docker配合使用

来自分类Dev

如何使Nginx重写与别名配合使用?

来自分类Dev

如何让Glimpse与EF6配合使用?

来自分类Dev

如何使Zend Framework 2与Nginx配合使用?

来自分类Dev

SagePay如何与PayPal Express Checkout配合使用?

来自分类Dev

如何使色彩与golang制表器配合使用?

来自分类Dev

如何使%in%与R中的字符配合使用?

来自分类Dev

如何将配对与光子配合使用?

来自分类Dev

ImmutableJS如何与Angular 2配合使用?

来自分类Dev

如何使图案与输入数字配合使用?

来自分类Dev

如何使Zend Framework 2与Nginx配合使用?

来自分类Dev

如何使TypeScript与jQuery插件配合使用?

来自分类Dev

如何使DataTables与RESTful API配合使用

来自分类Dev

devise如何与多种模型配合使用?

来自分类Dev

如何将KeyListener与音频配合使用?

来自分类Dev

如何使Nginx重写与别名配合使用?

来自分类Dev

我该如何使xargs与stdin配合使用?

来自分类Dev

如何使Live Edit与Pycharm 5配合使用

来自分类Dev

它如何与媒体屏幕配合使用?

来自分类Dev

Enumerable.Zip 如何与 LinQ 配合使用