JSP Scriptlets

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 中给分号,在这里也需要它,并以分号结束。

赞(0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址