基本语法

# JSP 解析代码

<!-- 待转 JSP 代码 -->

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  <html>
    <head>
      <title>Title</title>
    </head>
    <body>
      <% int x=5; %>
      <%! int x=7; %>
      <%! int getX(){return x;}%>
      <%=x%><br/>
      <%=getX()%>
    </body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

输出内容为:5 7

// 转换后的 Java 代码

public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {

 int x=7;
 int getX(){return x;}

 /*忽略与这个例子无关的代码*/

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {

     /*忽略与这个例子无关的代码*/

      out.write("\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("    <title>Title</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
 int x=5;
      out.write('\r');
      out.write('\n');
      out.write('\r');
      out.write('\n');
      out.write('\r');
      out.write('\n');
      out.print(x);
      out.write("<br/>\r\n");
      out.print(getX());
      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>\r\n");

      /*忽略与这个例子无关的代码*/

  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

根据上面的示例可以对应出下面的语法含义

# JSP 脚本

<% ... %>内部在\_jspService()函数内

# JSP 声明

<%! ... %>内部声明的在 <jsp文件名>_jsp 类的成员中

# JSP 表达式

<%= ... %>表示在\_jspService()内进行输出

# JSP 指令

<%@ ... %>设置页面相关属性 示例:

  • <%@ page contentType="text/html;charset=UTF-8" %>:指定当前页面的内容类型为HTML,并设置字符编码为UTF-8。
  • <%@ include file="header.jsp" %>:包含名为header.jsp的JSP文件。
  • <%@ taglib uri="http://example.com/mytaglib" prefix="mytag" %>:引入自定义标签库,URI指定标签库的位置,prefix指定标签库的前缀。

# JSP 行为

语法 描述
jsp:include 用于在当前页面中包含静态或动态资源
jsp:useBean 寻找和初始化一个JavaBean组件
jsp:setProperty 设置 JavaBean组件的值
jsp:getProperty 将 JavaBean组件的值插入到 output中
jsp:forward 从一个JSP文件向另一个文件传递一个包含用户请求的request对象
jsp:plugin 用于在生成的HTML页面中包含Applet和JavaBean对象
jsp:element 动态创建一个XML元素
jsp:attribute 定义动态创建的XML元素的属性
jsp:body 定义动态创建的XML元素的主体
jsp:text 用于封装模板数据

# JSP 隐含对象

对象 描述
request HttpServletRequest类的实例
response HttpServletResponse类的实例
out PrintWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page 类似于Java类中的this关键字
exception exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象

# JSP 控制语句

// 分支、循环实例

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>$Title$</title>
    </head>
    <body>
        <p>这是每一周的第<%=day%></p>
        <!-- 分支语句 -->
        <%! int day = 1; %>
        <h1>IF...ELSE</h1>
        <% if (day <= 5) { %>
            <p>工作日</p>
        <% } else { %>
            <p>休息日</p>
        <% } %>

        <!-- Switch 分支语句 -->
        <h1>SWITCH</h1>
        <%
            switch (day) {
                case 1:
                    out.println("星期一");
                    break;
                case 2:
                    out.println("星期二");
                    break;
                case 3:
                    out.println("星期三");
                    break;
                case 4:
                    out.println("星期四");
                    break;
                case 5:
                    out.println("星期五");
                    break;
                case 6:
                    out.println("星期六");
                    break;
                default:
                    out.println("星期天");
            }
        %>

        <!-- 循环语句 -->
        <h1>FOR</h1>
        <% for (int headSize = 2; headSize <= 4; headSize ++) { %>
            <h<%=headSize%>><%=headSize%>号标题</h<%=headSize%>>
        <% } %>
        <h1> WHILE </h1>
        <% int headSize = 2; %>
        <% while (headSize <= 4) { %>
            <h<%=headSize%>><%=headSize%>号标题</h<%=headSize%>>
            <% headSize ++; %>
        <% } %>
    </body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

输出结果

20230928194054

Last Updated: 11/9/2023, 10:22:31 PM