Scriptlet 只是包含在<%
和%>
标签中的 java 代码。 JSP 容器将 JSP 中包含的语句移动到_jspService()
方法,同时从 JSP 生成 Servlet。将此代码复制到服务方法的原因是:对于每个客户端的请求,调用_jspService()
方法,因此其中的代码将针对客户端发出的每个请求执行。
Scriptlet 的语法:
<% 可执行的 java 代码 %>
JSP 到 Scriptlet 的 Servlet 转换:
正如我在之前的教程中所述,JSP 没有直接执行,它首先被转换为 Servlet,然后 Servlet 执行正常。另外,我在第一段中解释说,从 JSP 到 servlet 的转换,java 代码从 scriptlet 复制到_jspService()
方法。让我们看看这是怎么回事。
示例 JSP 代码:
<H3> Sample JSP </H3>
<% myMethod();%>
注意:分号在 scriptlet 的末尾。
上述 JSP 代码的相应翻译 Servlet 代码:
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
HttpSession session = request.getSession();
JspWriter out = response.getWriter();
out.println("<H2>Sample JSP</H2>");
myMethod();
}
了解脚本元素的一个例子:
<%– A jsp example to learn the JSP scripting elements–%>
<%String string1 ="JSP scriptlet";%>
<%!String string2 ="";%>
<html>
<head>
<title> JSP page: Welcome </title>
</head>
<body>
<h1>
<%–This is an Expression statement–%>
Welcome to <%=string1%>
</h1>
<%–sciptlet example–%>
<%if(localstring.equals("JSP scriptlet")){%>
Hi
<%}
else {%>
hello
<%} %>
<%–same thing can be done in this way also–%>
<%if(localstring.equals("JSP scriptlet"))
out.println("Hi"+string2);
else
out.println("hello");
%>
</body>
</html>
在上面的示例中,存在许多类型的 JSP 元素,例如表达式,JSP 注释,元素声明等。我们将在即将到来的 JSP 教程中看到它们中的每一个,但是到目前为止,您只能关注 Scriptlet。以下是上例中使用的 scriptlets 语句:
<%if(localstring.equals("JSP scriptlet"))
out.println("Hi"+string2);
else
out.println("hello");
%>
上面的代码是一个 JSP scriptlet(注意开始<%
和结束%>
标签)。如果您分析上面的代码,那么您会发现标签内的代码是纯 Java 代码,因此为了在 JSP 中执行 Java 代码,我们使用 scriptlet。
<%String string1 ="JSP scriptlet";%>
像上面的语句一样,这个语句是一个 java 初始化代码,它包含在标签中。
除了上面两组 scriptlet 之外,上面的例子中还有许多其他的 scriptlet 标签(注意if-else
控制流逻辑)。要使用 java 的if-else
控制流语句,我们在上面的示例中使用了 scriptlet。因为这是使用 scriptlet 的主要优点所以让我们借助一个例子让它更清晰 – 你必须知道我们的If-else
控制语句有多重要。
使用 scriptlet 显示if-else
的使用示例:
假设有一个变量num
并且你想在你的网页上显示"hi"
,如果它大于 5,否则你想要显示一条消息。考虑下面这个场景的代码:
如果你想在 java 中为上述情况编写一个代码,那么它看起来像这样:
if (num > 5) {
out.println("hi");
} else {
out.println("num value should not be less than 6");
}
要在 JSP 中编写类似的代码,我们需要使用 JSP scriptlet – 代码就像这样:
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.0 translation //EN">
<HTML>
<HEAD>
<TITLE> MY JSP PAGE </TITLE>
</HEAD>
<BODY>
<% if (num > 5) { %>
<H3> hi </H3>
<%} else {%>
<h3> num value should not be less than 6 </h3>
<% } %>
</BODY>
</HTML>
重要的一点要记住:由于里面的代码是 java 代码,必须以分号(;
)结尾。现在注意所有的语句 – 你可能会发现很少的 scriptlet,我们在 java 中给分号,在这里也需要它,并以分号结束。