重难点

  • 了解JSP的用途
  • 了解JSP运行原理
  • 掌握JSP基本语法

    Servlet开发的痛点

  • 静态HTML与Java代码混合在一起,难以维护

  • Servlet利用out.println()语句输出,开发效率低下
  • Servlet代码如下图所示

image.png

JSP介绍

  • JSP全称是(Java Server Page),Java服务器页面
  • JSP是J2EE功能模块,由Web服务器执行
  • JSP的作用是降低动态网页开发难度

    JSP的特点

  • JSP使用简单,短时间学习即可上手

  • JSP可将Java代码与HTML分离,降低开发难度
  • JSP的本质是Servlet

    JSP的运行要求

  • 可正常运行Tomcat

  • 所有JSP页面扩展名必须是.jsp
  • JSP页面应放在Web应用程序目录下

    第一个JSP页面

    案例描述

    公司薪资制度

  • 新入职员工:基本工资15000

  • 工作5年内员工:每年工资上浮基本工资的10%
  • 工作5-10年员工:每年工资上浮基本工资的20%
  • 工作10年以上:每年工资上浮基本工资的25%
  • 要求列出工资试算表

    方法一

    我们使用纯HTML实现
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Insert title here</title>
    6. </head>
    7. <body>
    8. <table>
    9. <tr>
    10. <th>year</th>
    11. <th>salary</th>
    12. </tr>
    13. <tr>
    14. <td>0</td>
    15. <td>15000</td>
    16. </tr>
    17. <tr>
    18. <td>1</td>
    19. <td>16500</td>
    20. </tr>
    21. <tr>
    22. <td>2</td>
    23. <td>18000</td>
    24. </tr>
    25. <tr>
    26. <td>3</td>
    27. <td>19500</td>
    28. </tr>
    29. <tr>
    30. <td>4</td>
    31. <td>21000</td>
    32. </tr>
    33. <tr>
    34. <td>5</td>
    35. <td>22500</td>
    36. </tr>
    37. <tr>
    38. <td>6</td>
    39. <td>25500</td>
    40. </tr>
    41. <tr>
    42. <td>7</td>
    43. <td>28500</td>
    44. </tr>
    45. <tr>
    46. <td>8</td>
    47. <td>31500</td>
    48. </tr>
    49. <tr>
    50. <td>9</td>
    51. <td>34500</td>
    52. </tr>
    53. <tr>
    54. <td>10</td>
    55. <td>37500</td>
    56. </tr>
    57. <tr>
    58. <td>11</td>
    59. <td>41250</td>
    60. </tr>
    61. </table>
    62. </body>
    63. </html>

    方法二

    使用JSP编写,在纯HTML基础上可以嵌入Java代码
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Insert title here</title>
    6. </head>
    7. <body>
    8. <table>
    9. <tr>
    10. <th>year</th>
    11. <th>salary</th>
    12. </tr>
    13. <%
    14. for(int i = 0 ; i <=50 ; i++){
    15. out.println("<tr>");
    16. out.println("<td>" + i +"</td>");
    17. int sal = 0;
    18. if(i <= 5){
    19. sal = 15000 + i * 150;
    20. }else if(i > 5 && i <=10){
    21. sal = 15000 + 1500 * 5 + 3000 * (i-5);
    22. }else if (i > 10){
    23. sal = 15000 + 1500 * 5 + 3000 * 5 + 3750 * (i-10);
    24. }
    25. out.println("<td>" + sal + "</td>");
    26. out.println("</tr>");
    27. }
    28. %>
    29. </table>
    30. </body>
    31. </html>
    可以看到,在JSP页面中嵌入Java代码的形式可以简化我们的代码。

    JSP的执行过程

    执行过程如下图 所示:
    image.png
    举个例子:
    image.png

    JSP的基本语法

    按照功能可分为以下四种
  1. JSP代码块
  2. JSP声明构造块
  3. JSP输出语句
  4. JSP处理指令

    JSP代码块

  • 作用
    • 在JSP中嵌入Java代码
  • 语法
    • <% Java代码 %>
  • 例如

    • <% System.out.println(“Hello world!”); %>

      JSP声明构造块

  • 作用

    • 用于声明变量或者方法
  • 语法
    • <%! 声明语句 %>
  • 例如

    • <%! public int add(int a, int b) {return a+b;} %>

      JSP输出语句

  • 作用

    • 在JSP页面显示Java代码执行结果
  • 语法
    • <%= Java代码 %>
  • 例如

    • <%= ““ + name + ““ %>

      JSP处理指令

  • 作用

    • 用于提供JSP执行过程中的辅助信息
  • 语法
    • <%@ JSP指令 %>
  • 例如
    • <%@ page import=”java.util.*” %>
  • JSP常用处理指令
    • <%@ page %>
      • 定义当前JSP页面全局设置
    • <%@ include %>
      • 将其他JSP页面与当前JSP页面合并
    • <%@ taglib %>
      • 引入JSP标签库
  • JSP中注释的区别

    • <%— 注释 —%>
      • JSP注释,该语句不执行
    • //、/../
      • 用于注释<%%>代码,注释的代码不执行
      • HTML注释,被注释的语句不会被浏览器解释

        JSP页面重用

        我们先来看一个页面,里面至少有三大模块:header、body、footer,如下图所示:
        image.png
        image.png
        在JSP中,可以将我们的代码按照模块分成多个JSP编写,这样更便于代码的复用,降低了代码的耦合性。例如我们在WebContent这个目录下创建一个include目录,用于存放header.jsp与footer.jsp:
        1. <%@page contentType="text/html;charset=utf-8"%>
        2. 要闻|推荐|财经|娱乐
        1. <%@page contentType="text/html;charset=utf-8"%>
        2. <hr/>
        3. Copyright 1999-2019
        在我们的新闻页new.jsp与视频页video.jsp中就能复用上面的代码了。
        1. <%@page contentType="text/html;charset=utf-8" %>
        2. <%@include file="include/header.jsp" %>
        3. <%
        4. out.println("<h1>新闻标题</h1>");
        5. out.println("<p>新闻正文</p>");
        6. %>
        7. <%@include file="include/footer.jsp" %>
        1. <%@page contentType="text/html;charset=utf-8"%>
        2. <%@include file="include/header.jsp" %>
        3. <h1>视频板块</h1>
        4. <%@include file="include/footer.jsp" %>

        综合练习

        列出1000以内的质数(除1以外,只能被1和自身整除的自然数)
  • 要求

    1. 使用List保存所有有效的质数
    2. 将结果打印到页面,格式为:

      X是质数