jsp详解

JSP概述:
什么是JSP:java服务器端页面,它是建立在servlet规范基础上的动态网页开发技术。
java服务端页面:在jsp可以写java代码,也可以写HTML标记,它运行在服务器端。
jsp=java+html+jsp自身的一些东西。
为什么会产生jsp技术?
因为在早期没有jsp时,需要servlet向页面写数据,比较麻烦,所以产生了jsp技术。
jsp其实它的本质是servlet。
可以看到jsp继承了HttpJspBase 继承 HttpServlet
jsp生成java文件,编译成class文件,存在Tomcat服务器的work目录下。

jsp运行原理:
1.通过浏览器首次访问jsp时,
2.jsp容器会生成对应的servlet文件,也就是.java文件。
3.jsp容器,会把生成的java文件编译成对应的class文件。
4.jsp容器,会生成对应的servlet对象
5.通过生成的servlet对象,去处理浏览器发送的请求,响应数据到浏览器。
在这里插入图片描述
JSP基本语法
jsp的脚本元素
在jsp页面中书写java的三种方式:
1.可以声明语句和方法
2.可以书写java代码
3.可以书写表达式
jsp书写java代码对应的位置在_jspService方法内。局部内
声明式:对应的位置是在生成在成员位置,成员内
jsp表达式:对应的位置生成在成员位置。
<%=表达式%,其实就相当于out.print(),注意表达式后面不能写分号

<%@ page import="com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput" %>
<%@ page import="org.w3c.dom.ls.LSOutput" %><%--
  Created by IntelliJ IDEA.
  User: 86133
  Date: 2021/9/1
  Time: 15:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。--%>
 1.<% %>叫做脚本片段,其中写的内容会翻译在Servlet的Service方法中,显然我们可以在Service方法中定义局部变量或者调用其他方法,但是不能

在Service中再定义其他的方法,也就是我们可以在<%%>中定义局部变量或者调用方法,但不能定义方法。在jsp页面可以有多个脚本片段,但是多

个脚本片段之间要保证结构完整。
    <%  int  a =2;
        System.out.println(a);
        int b=6;
        System.out.println(a>b);
        method();
        System.out.println(c);
        //方法里不能在嵌套方法,所以一般式不能写方法,可以调用声明式的方法
    %>


    <%
        System.out.println(a);
        System.out.println(c);
    %>


<%!%>称作声明,其中写的内容将来会直接翻译在Servlet类中,因为我们可以在类中定义方法和属性以及全局变量,所以我们可以在<%!%>中声

明方法、属性、全局变量。
    <%!
    public void method(){
        System.out.println("哈哈");

    }

    private  int c=20;

    %>
<%--声明式是在类的下面,方法的上面,属于成员变量或者方法,而一般式是在方法中,属于局部变量--%>
<%--<%=method()%>    &lt;%&ndash;//需要输出到浏览器页面显示&ndash;%&gt;--%>

 <%--3.<%=%>称作jsp表达式,用于将已经声明的变量或者表达式输出到网页上面。--%>


<%=application.getAttribute("name")%>
</body>
</html>

jsp指令:page指令,include指令,taglib指令。
page指令的用途是设置与jsp页面相关的信息,比如jsp页面的编码格式,默认语言,
基本语法:<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
import属性:用于导包,和java里面一样,使用哪个类,导入某个类的包。

include指令
在jsp页面通常会需要显示其他的页面,所以可以通过这个include指令把其他页面包含过来,
基本语句:<%@ include file=“被包含页面的URL” %>
静态包含的特点:
1.把多个页面的内容,合并输出,
2.多个页面的对应生成一个java文件,编译后生成一个class文件。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
  <% out.write(new Date().toLocaleString());%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    当前时间是:
   <%@ include file="date.jsp"%>
</body>
</html>

jsp九大隐式对象
request:HttpServletRequest,请求对象,它同时也是域对象,作用范围一次请求。
response:HttpServletResponse,响应对象。
session:HttpSession,会话对象,它同时也是域对象,作用范围是一次回话。
application:ServletContext;上下文对象,它同时也是域对象,作用范围整个项目。
config:ServletConfig;配置对象。
out:jspWriter;其实和printwriter作用差不多。
page:Object;代表当前jsp页面对象。
pageContext:PageContext;jsp容器。
exception:Throwable,异常对象,用来捕获异常。

out对象:
在这里插入图片描述
pageContext对象
1.获取其他八大隐式对象。
例如:获取请求对象; getRequest();
获取响应对象;getResponse();
获取输出对象;getOut();

2.操作其他三个域对象。
request session application
pageContext也是一个域对象,范围是当前jsp页面。
存值:
setAttribute(String key,Object obj,int scope);
APPLICATION_SCOPE;对应的是application
REQUEST_SCOPE;对应的request
SESSION_SCOPE;对应的session
PAGE_SCOPE;对应自己
取值:
getAttribute(String key,int scope);
结论:在pageContext域对象使用findAttribute方法时,进行全局查找。
查找范围 pageContext -request -session- application
首先查找范围小的对象,如果有值,获取到,没有继续向下找。

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值