ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
{% raw %} # JSP Scriptlets > 原文: [https://beginnersbook.com/2013/05/jsp-tutorial-scriptlets/](https://beginnersbook.com/2013/05/jsp-tutorial-scriptlets/) **Scriptlet 只是包含在`<%`和`%>`标签中的 java 代码**。 JSP 容器将 JSP 中包含的语句移动到`_jspService()`方法,同时从 JSP 生成 Servlet。将此代码复制到服务方法的原因是:对于每个客户端的请求,调用`_jspService()`方法,因此其中的代码将针对客户端发出的每个请求执行。 **Scriptlet 的语法:** `<% 可执行的 java 代码 %>` ### JSP 到 Scriptlet 的 Servlet 转换: 正如我在之前的教程中所述,JSP 没有直接执行,它首先被转换为 Servlet,然后 Servlet 执行正常。另外,我在第一段中解释说,从 JSP 到 servlet 的转换,java 代码从 scriptlet 复制到`_jspService()`方法。让我们看看这是怎么回事。 **示例 JSP 代码:** ```html <H3> Sample JSP </H3> <% myMethod();%> ``` **注意:**分号在 scriptlet 的末尾。 **上述 JSP 代码的相应翻译 Servlet 代码:** ```java 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(); } ``` ### **了解脚本元素的一个例子:** ```html` <%– 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 语句: ```html <%if(localstring.equals("JSP scriptlet")) out.println("Hi"+string2); else out.println("hello"); %> ``` 上面的代码是一个 JSP scriptlet(注意开始`<%`和结束`%>`标签)。如果您分析上面的代码,那么您会发现标签内的代码是纯 Java 代码,因此为了在 JSP 中执行 Java 代码,我们使用 scriptlet。 ```html <%String string1 ="JSP scriptlet";%> ``` 像上面的语句一样,这个语句是一个 java 初始化代码,它包含在标签中。 除了上面两组 scriptlet 之外,上面的例子中还有许多其他的 scriptlet 标签(注意`if-else`控制流逻辑)。要使用 java 的`if-else`控制流语句,我们在上面的示例中使用了 scriptlet。因为这是使用 scriptlet 的主要优点所以让我们借助一个例子让它更清晰 - 你必须知道我们的`If-else`控制语句有多重要。 **使用 scriptlet 显示`if-else`的使用示例:** 假设有一个变量`num`并且你想在你的网页上显示`"hi"`,如果它大于 5,否则你想要显示一条消息。考虑下面这个场景的代码: **如果你想在 java 中为上述情况编写一个代码,那么它看起来像这样:** ```java if (num > 5) { out.println("hi"); } else { out.println("num value should not be less than 6"); } ``` **要在 JSP 中编写类似的代码,我们需要使用 JSP scriptlet - 代码就像这样:** ```html <! 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 中给分号,在这里也需要它,并以分号结束。 {% endraw %}