• JSP(Java Server Pages)


    JSP 即 Java服务端页面

    其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容。也就是JSP=HTML + Java。

    JSP代码简单例子:

    1. <html>
    2. <head>
    3. <title>Titletitle>
    4. head>
    5. <body>
    6. <h1>JSP,Hello Worldh1> //展示在页面上
    7. <%
    8. System.out.println("hello,jsp~");//输出在控制台
    9. %>
    10. body>
    11. html>

    JSP步骤:

    1.导入JSP依赖

    1. <dependency>
    2. <groupId>javax.servlet.jspgroupId>
    3. <artifactId>jsp-apiartifactId>
    4. <version>2.2version>
    5. <scope>providedscope>
    6. dependency>

    2.创建JSP页面

    在项目的web下创建jsp页面

    3.编写代码

    在hello.jsp 页面中书写HTML标签和Java代码,比如上面的例子。

    4.测试

    启动服务器在浏览器地址输入http://localhost:8080/jsp-demo/hello.jsp;

    JSP原理:

    JSP是一个页面,在JSP中写html标签可以理解,但还可以写Java代码,这是因为JSP本质上就是一个Servlet

    案例——使用JSP脚本展示品牌数据:

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: ASUS
    4. Date: 2023/10/25
    5. Time: 11:41
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. 商品信息
    10. <%!
    11. class Product {
    12. private String name;
    13. private String company;
    14. private int order;
    15. private String intro;
    16. private int state;
    17. public Product(String name, String company, int order, String intro, int
    18. state) {
    19. this.name = name;
    20. this.company = company;
    21. this.order = order;
    22. this.intro = intro;
    23. this.state = state;
    24. }
    25. public String getName() {
    26. return name;
    27. }
    28. public String getCompany() {
    29. return company;
    30. }
    31. public int getOrder() {
    32. return order;
    33. }
    34. public String getIntro() {
    35. return intro;
    36. }
    37. public int getState() {
    38. return state;
    39. }
    40. }
    41. %>
    42. <%
    43. Product wxr = new Product("外星人", "戴尔", 1, "不买最好的,只卖最贵的", 1);
    44. Product rog = new Product("ROG", "华硕", 3, "反正也挺贵", 1);
    45. Product mac = new Product("Mac Book Pro", "苹果", 2, "反正买不起", 0);
    46. Product[] products = {wxr, rog, mac};
    47. %>
    48. <%
    49. for (int i = 0; i < products.length; i++) {
    50. Product current = products[i];
    51. %>
    52. <%
    53. }
    54. %>
    55. 序号品牌名称企业名称排序品牌介绍状态操作
      <%=i + 1%><%=current.getName()%><%=current.getCompany()%><%=current.getOrder()%><%=current.getIntro()%><%=(current.getState() == 1) ? "启用" : "禁用"%>"#">修改"#">删除

    JSP指令:

    指令的基本格式:

    在目前的JSP规范中只定义了三个指令:page指令、include指令、taglib指令

    为了保持程序的可读性,建议将page指令放在整个JSP源文件的最前方:

    <% @ page contentType = "text/html;charset=UTF-8" language = "java" %>
    <% @ page contentType = "text/html;charset=utf-8;" %>

     JSP缺点:

    书写麻烦、阅读麻烦、不易协作完成、复杂度高、调式困难、占内存和磁盘

    由于以上缺点,JSP已经退出历史舞台,更多的是使用HTML+Ajax

    EL表达式:

    用于简化JSP页面内的Java代码。主要作用是获取数据。

    其实就是从域对象中获取数据,然后将数据展示在页面上。EL表达式的语法也比较简单:

    ${expression} 。例如:${loginUser}就是获取域中存储的key为loginUser的数据。

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. Title
    3. ${loginUser}

    四大域对象:

    page:当前页面有效

    request:当前请求有效

    session:当前会话有效

    application:当前应用有效

    这四个域的作用范围:

     JSTL标签:

    使用标签取代JSP页面上的Java代码:

    例如:

    1. if test="${flag == 1}">
    2. if>
    3. if test="${flag == 2}">
    4. if>
    5. <%=(flag == 1 ? "男" : "女")%>
    jstl依赖:
             javax.servlet
             jstl
             1.2

     在JSP页面上引入JSTL标签库:

    <% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
    最常用的两个标签为:  和 标签

    相当于if判断

    属性:test,用于定义条件表达式
    1. if test="${flag == 1}">
    2. if>
    3. if test="${flag == 2}">
    4. if>

    :

    相当于for循环。java中有增强for循环和普通for循环,JSTL中也有两种用法

    用法一:类似Java中的增强for循环

    属性:

    items :被遍历的容器
    var :遍历产生的临时变量
    varStatus :遍历状态对象
    如下代码,是从域对象中获取名为 users 数据,该数据是一个集合;遍历遍历,并给该集合中的每一个元素起名为 user ,是 User 对象。在循环里面使用 EL 表达式获取每一个 User 对象的属性值
    1. "${users}" var="user">
    2. "center">
    3. ${user.id}
    4. ${user.username}
    5. ${user.password}
    6. ${user.email}

    用法二:使用begin、end、step属性循环指定次数

    可以根据指定的起始、结束和步长来循环指定次数,如:

    1. "1" end="10" step="2" varStatus="loop"
    2. 第${loop.index}次循环
  • 相关阅读:
    Mysql基础篇(Mysql数据类型)
    MIT6.s081/6.828 lectrue4:page tables 以及 Lab3 心得
    基于Vue+SpringBoot的大病保险管理系统 开源项目
    雷达实测数据的信噪比
    LeetCode 0053. 最大子数组和:DP 或 递归(线段树入门题?)
    独立产品灵感周刊 DecoHack #039 - 制作自己的音乐墙
    Linux相关命令
    awk判断整除(包含小数和负数)
    分布式代理IP的优势及用途有哪些?
    CAD二次开发---关于JoinEntity出现eNotApplicable的问题
  • 原文地址:https://blog.csdn.net/lzpyy/article/details/134250984