2305ZB 第2章 JSP基础语法1

本文详细介绍了JSP的基础概念,包括JSP页面元素的脚本分类(代码脚本、声明脚本和表达式脚本),以及JSP指令和注释的使用。讲解了如何在Tomcat环境下工作,展示了代码示例和JSP指令的作用,有助于理解动态网页开发技术。
摘要由CSDN通过智能技术生成

一.JSP概述

1. 概念

Java Server Pages,Java服务端页面
是一种动态的网页技术, 可以定义 HTML,JS,CSS等静态内容, 还可以的定义Java 动态内容
在这里插入图片描述

  1. 浏览器第一次访问 test.jsp文件
  2. tomcat会将test.jsp文件转换为 test_jsp.java的一个Servlet
  3. test_jsp.java文件会被翻译为test_jsp.class文件
  4. tomcat执行该字节码文件,向外提供响应
导入Tomcat源代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二. JSP页面元素

脚本

JSP脚本用于在jsp页面中编写java程序

分类

1. 代码脚本

<%java语句%>,定义局部变量,if语句,for循环

<body>
    <%--代码脚本案例-- java语句
        变量, 常亮
        if条件句
        while循环, for循环
        数组...
    --%>

    <%
        int i =12;
        if(i==12){
            System.out.println("老师辛苦啦。。。");
        }else {
            System.out.println("也就那样吧。。。");
        }
    %>
    <%
        for(int j=0;j<10;j++){
            System.out.println(j);
        }
    %>
</body>

总结:

  1. 代码脚本翻译之后在 _jspService()方法中
  2. 由于代码脚本翻译之后在_jspService()方法中,所以_jspService方法中的现有的对象可以直接使用
  3. 还可以由多个脚本块组成完成完整的java语句
  4. 代码脚本可以和表达式脚本一起使用,在jsp页面中输出数据
	<html>
<head>
    <title>代码脚本演示</title>
</head>
<body>
<%--  1.代码脚本: 定义变量  --%>
<%
    int num = 10;
    String name = "张三";
%>

<%-- 2. 代码脚本 - if条件句--%>
<%
    int i = 12;
    if(i==12){
        // 输出快捷键: sout
        System.out.println("你好, 我是符合条件的");
    }else{
        System.out.println("啊哦,程序出问题了~~~");
    }
%>

<%-- 3.代码脚本-for循环   --%>
<%
    for(int j=0; j<10;j++){
%>
        <%
            System.out.println(j);//0 1 2...
        %>
<%
    }
%>

<%
    String uname = request.getParameter("name");
    System.out.println("用户请求的参数值是:"+uname);
%>
</body>
</html>

2. 声明脚本

<%! 声明java代码%>
作用:可以给jsp翻译出来的java类定义属性和方法甚至代码块以及内部类等…

<html>
<head>
    <title>演示声明脚本</title>
</head>
<body>
<%--1.声明类属性--%>
<%!
    private Integer id;
    private String brand;
    private static Map<String,Object> map;
%>
<%--2.声明静态代码块--%>
<%!
    static{
        map = new HashMap<String,Object>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
    }
%>
<%--3.声明类方法--%>
<%!
    public int abc(){return 12;}
%>
<%--4.声明内部类--%>
<%!
    public static class A{
        private Integer id = 12;
        private String abc = "hello";
    }
%>
</body>
</html>

总结:
声明脚本翻译的JspDemo2.java文件中, 声明脚本语句在JspDemo2_jsp类中

3.表达式脚本

<%=表达式%> : 用来输出 = 后边的表达式的值
作用: 在jsp页面中输出数据

<html>
<head>
    <title>表达式脚本</title>
</head>
<body>
<%!
    private static Map<String,Object> map;
%>

<%!
    static{ map = new HashMap<String,Object>();
        map.put("key1", "value1");
        map.put("key2", "value2");

        map.put("key3", "value3");
    }
%>
<%--输出整型--%>
<%=12%>   <br>

<%--输出浮点型--%>
<%=3.14%>  <br>
<%--输出字符串型--%>
<%="我是字符串"%> <br>

<%--输出对象--%>
<%=map%>

<%--输出12: 输出到 js页面--%>
<%=12%>   <br>
<%
    // 输出12: 输出到控制台
    System.out.println(12);
%>
</body>
</html>

总结:

  1. 所有表达式脚本都会被翻译到_jspService()方法中
  2. 表达式脚本都会被翻译成 out.print()输出到页面
  3. 由于表达式脚本翻译之后在_jspService()方法中,所以_jspService方法中的现有的对象可以直接使用
  4. 表达式脚本中的表达式不能以分号结尾

综合练习 - 品牌表格

<%@ page import="cn.tedu.java.Brand" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    List<Brand> brands = new ArrayList<Brand>();
    brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
    brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
    brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));
%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>脚本练习-品牌类表格</title>
</head>
<body>
<input type="button" value="新增"><br>
<hr>
<table border="1" cellspacing="0" width="800">
    <tr>
        <th>序号</th>
        <th>品牌名称</th>
        <th>企业名称</th>
        <th>排序</th>
        <th>品牌介绍</th>
        <th>状态</th>
        <th>操作</th>
    </tr>
    <%
        // brands是一个集合
        // 集合长度: 集合.size()
        // 数组长度: 数组.length
        for (int i=0;i<brands.size();i++){
            //获取到brand中每一个对象
            Brand brand = brands.get(i);
            //System.out.println(brand); //输出brand对象
    %>
        <tr align="center">
            <td><%=brand.getId()%></td>
            <td><%=brand.getBrandName()%></td>
            <td><%=brand.getCompanyName()%></td>
            <td><%=brand.getOrdered()%></td>
            <td><%=brand.getDescription()%></td>
            <td><%=brand.getStatus()==1?"启用":"禁用"%></td>
            <td><a href="#">修改</a> <a href="#">删除</a></td>
        </tr>
    <%
        }
    %>

</table>
</body>
</html>
JSP指令

写在:<%@…%> 用来设置jsp页面相关的属性,如网页的编码方式以及脚本语言
jsp页面的指令可以修改jsp页面中的一些重要的属性或者行为

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

language属性: 表示的jsp翻译后是什么语言文件, 暂时只支持java
contentType属性: 表示jsp返回的数据类型是什么, 也就是在源码中response.setContentType()的参数值
pageEncoding属性: 表示当前jsp页面本身的字符集
import属性: 跟java源码一样, 用来导入包,或者类
– 给out输出流使用的属性–
autoFlush属性: 设置out输出流缓冲流满了之后,是否自动刷新缓冲区; 默认值:true
buffer属性:设置out缓冲区的大小;默认8kb
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8"
         language="java"
         pageEncoding="UTF-8"
         buffer="1kb"
         autoFlush="false"
%>
<html>
<head>
    <title>JSP指令</title>
</head>
<body>
<%
    Date date = new Date();
    out.print(date);
%>
<%
    for (int i=0;i<100;i++){
%>
        <div>迪丽热巴真漂亮!!!</div>
<%
    }
%>
</body>
</html>

errorPage属性: 表示错误发生后自动跳转的去的页面路径
取值: 发生错误要跳转的路径, 这个路径是以 / 开头, 表示请求的地址为 http://ip:port/工程路径
映射到代码的web目录
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" 
    errorPage="/error500.jsp"
%>
<html>
<head>
    <title>errorPage</title>
</head>
<body>
    <%
        int i = 20/0;
    %>
</body>
</html>
注释

html注释 : <!–html注释–> :在_jspService()方法中, 以out.write() 输出
JSP注释 : <%–JSP注释–%> :可以注释掉所有jsp页面中的代码
Java注释 : 直接翻译到_jspService()方法中
// 单行注释
/*
多行注释
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值