我正在努力使用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>
答案 0 :(得分:1)
您写道:
这个家伙使用xsl渲染jsp
我会换一种说法:
.jsp 文件包含应用程序逻辑:
但是这个文件不包含任何实际的HTML代码。 相反,它包含以下&#34;标记&#34;:
<page>
- 这里放置HTML,HEAD和BODY标签
以及要呈现的身体内容的初始部分
在这两种情况下(无论是否有登录用户)。<success>
和<fail>
- 这里放了一块
要在每个相应的案例中呈现的HTML代码。</page>
- 这里放置了BODY和HTML的结束标记。请注意,<success>
和<fail>
都在if ... then ... else ...
范围内
一段JSP代码。
这确保了第一段或第二段HTML代码 将呈现,具体取决于当前用户的存在,但不是两者。
在 .jsp 和 .xsl 文件之间对页面代码进行分区 这是一种分离内容并允许两者的方法 IT人员可以同时工作:
这在某种程度上类似于MVC范例:
使用XSL转换来转换JSP文件是一种加入方式 这两个部分都在一个页面中呈现给浏览器用户。