JavaWeb基础-5.jsp

1. jsp概要

  • jsp的全称是java server pages,java的服务器页面
  • jsp的主要作用是代替servlet程序回传html页面的数据,因为servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都极高
  • jsp页面本质上是一个servlet程序
  • 当我们第一次访问jsp页面的时候,tomcat服务器会帮我们把jsp页面翻译成一个java源文件,并对他进行编译成.class字节码。
  • 打开源码发现,HttpJspBase类直接继承了HttpServlet类
  • 底层实现也是通过输出流,把html页面数据回传给客户端

2. jsp的三种语法

2.1 jsp头部的page指令

<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8"
         errorPage="b.jsp" autoFlush="false" extends="javax.servlet.HttpServlet" buffer="6kb" language="java" %>
属性 描述
language 表示jsp翻译后是声明语言文件,暂时只支持java
contentType 表示jsp返回的数据类型是声明,也是源码中response.setContentType()参数值
pageEncoding 表示jsp页面文件本身的字符集
import 用于导包,导类
autoFlush 是给out输出流使用,设置当out输出流缓冲区满了后,是否自动刷新缓冲区,默认true
buffer 是给out输出流使用,设置out缓冲区的大小,默认8kb
errorPage 设置当jsp页面运行时出错,自动跳转去的错误页面路径
isErrorPage 设置当前jsp页面是否是错误信息页面,默认false。如果是true可以获取异常信息
session 设置访问当前jsp页面,是否会创建HttpSession对象,默认是true
extends 设置jsp翻译出来的Java类默认继承谁

2.2 jsp中的常用脚本

2.2.1声明脚本(很少使用)

  • 格式
<%! 声明java代码 %>
  • 作用:可以给jsp翻译出来的java类定义属性和方法甚至是静态代码块、内部类等
<%! private Integer id;
    private String name;
    private static Map<String, Object> map;
%>
<%!
    static {
   
        map = new HashMap<String, Object>();
        map.put("key1", "value1");
        map.put("key2", "value2");
    }
%>
<%!
    public int abc() {
   
        return 123;
    }
%>
<%!
    public static class A {
   
        private int id;
    }
%>

2.2.2 表达式脚本(常用)

  • 格式
<%= 表达式 %>
  • 作用:在jsp页面上输出数据
  • 特点:所有的表达式脚本都会被翻译到_jspService()方法中
  • 表达式脚本都会被翻译成为out.print()输出到页面上
  • 由于表达式脚本翻译的内容都在_jspService()方法中,所以_jspService()方法中的对象都可以直接使用
  • 表达式脚本中的表达式不能以分号结束
<%=12%><br/>

<%=1.123%><br/>

<%="我是字符串"%>

<%=map%>
<%=request.getParameter("username")%>

2.2.3 代码脚本

  • 格式
<%
    Java语句
%>
  • 作用:可以在jsp页面中编写java语句写需要的功能
  • 特点:代码脚本翻译后都在_jspService()方法中
  • 代码脚本由于翻译到_jspService()方法中,所以在此方法中的现有对象都可以直接使用
  • 还可以由多个代码脚本块组合完成一个完整的java语句
  • 代码脚本还可以和表达式脚本一起组合使用
<%
    int i = 11;
    if (i == 12) {
   
        System.out.println("i==12");
    } else {
   
        System.out.println("i!=12");
    }
%>
<table border="1" cellspacing="0">
    <%
        for (int j = 0; j < 10; j++) {
   
    %>
    <tr>
        <td><%=j%></td>
    </tr>
    <br
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值