JavaWeb-jsp1

本节主要介绍了JSP的基本概念。

JSP的组成(html+jsp)。

JSP的创建。

JSP的优点。

JSP的执行过程。

JSP的指令元素,脚本段,注释,动作元素,也就是JSP页面的组成部分。

1.JSP简介

1.1概念

1.JSP:是sun公司发布的,和微软的ASP是类似的技术,不过JSP是更加的广泛。是在html文件中加入了Java程序段的JSP标签。

白话:JSP就是网页中加入了Java代码

1.2JSP组成

1.组成:

JSP由Java程序段+HTML页面组成

Java程序段

  • 注释:html注释,JSP注释,JSP+html注释,脚本段注释

  • 指令:include,page和taglib

  • 脚本段:普通脚本段,表达式,声明脚本段

  • 动作元素:就是JSP的标签

Java程序段最好在jsp中少用,优先推荐的就是jsp中本身存在的标签

1.3JSP优点

1.JSP可以充当显示逻辑,原先的Servlet显示页面必须得靠append往输出流中写入html的内容。

2.可重用,可以接哈JavaBean实现复杂的逻辑。

3.采用标签代替脚本段。

1.4JSP执行过程

1.JSP的执行过程

问什么访问JSP页面第一次比第二次慢?就是第一次存在一个将JSP页面翻译成class文件的过程,第二次直接处理请求就可以。

第一次请求时:

客户端发起请求->服务器查找对应的JSP->JSP翻译成Servlet.Java代码->编译成class文件->载入内存->创建实例,处理请求

第二次请求时:

发起请求->直接创建实例,处理请求

1.5如何声明JSP页面

1.案例:创建第一个JSP页面

从下面的创建过程中可以发现,除了头部多了一行,其余的和普通的html文件没有什么不同,就是page指令声明了JSP文件。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>第一个jsp页面</title>
</head>
<body>
你好
</body>
</html>

效果图:

 

2.JSP组成部分详解

从上面可以获悉,JSP的组成包括注释,指令元素,脚本段以及动作元素,下面2.1-2.4将详解我们的JSP组成部分。

2.1注解

1.常见的注解

  • html注解

  • html+jsp注解

  • jsp注解

  • 脚本段注解

案例:测试四种注解。

<!-- 我是html注解 -->
<!-- 我是html+jsp<%=new java.util.Date() %> -->
<%--我是jsp注解 --%>
<%
//我是脚本段注解
/*我也是脚本段注解*/
%>

查看html页面的源码图:

  • 可以获悉jsp和脚本段的注释没有显示

  • html的注解显示出来,html中的jsp脚本段也显示出来

 

2.2指令元素

1.什么是指令元素?

  • JSP的指令元素由JSP的引擎去实现,负责如何处理JSP页面,并不会直接产生任何输出。

2.指令元素

  • page:声明jsp页面

  • include:包含静态资源

  • taglib:引入标签库用(后面发相关案例)

2.2.1page指令

1.简介:page负责全局的JSP属性,例如,页面编码,缓冲区大小,是否使用session等等。

2.语法格式:

  • 就是<%@ page 属性="属性值"...%>

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

3.常见的page指令的属性

  • language:JSP的脚本段默认的语言,目前只能是Java,而且必须声明

  • extends:编译形成的Servlet所集成的父类

  • import:导入脚本段中需要的Java包

  • session:执行JSP页面是不是使用session,默认是true

  • contentType:JSP页面响应的结果和编码

  • pageEncoding:页面本身的编码

  • buffer:设置缓冲区大小

  • autoFlush:缓冲区满了是不是自动刷新

  • isThreadSafe:当前的JSP是不是支持多线程访问,默认是true

  • info:指定导入到JSP页面中的文字

  • errorPage:公用的错误页面,需要指定错误页面的url地址

  • isErrorPage:当前页面是不是出现错误的页面,指定为true可以使用exception对象

  • isELIgnored:是不是忽略对表达式的计算${}

4.page指令的注意事项

  • pageEncoding要和contentType的编码一致

  • page指令不能动态包含,但是可以静态包含

2.2.2include指令

1.简介:可以在页面中包含另一个页面,最终翻译成一个Servlet文件。

扩展:静态包含和动态包含的区别。

<%@include file=""%>声明的就是静态包含

jsp:include声明的是动态包含。

静态包含有也就是说,最终翻译出来的Servlet是一个文件。动态包含最终的结果是多个Servlet文件,也就是被包含的部分不会和引用的一起翻译成一个Servlet。

总结:前者把文件包含进去再去编译,最后形成一个文件。后者动态包含,文件单独编译,放入的是结果。

2.静态包含语法

<%@include file="引入文件的未知" %>

3.案例:头部和底部作为被引用的静态页面。

<%--引入头部 --%>
<%@include file="header.jsp" %>
<div style="text-align:center;height:500px">
我是中间区域 <br>
我是中间区域 <br>
我是中间区域 <br>
我是中间区域 <br>
我是中间区域 <br>
</div>
​
<%--引入底部 --%>
<%@include file="footer.jsp" %>

效果图:

 

2.3脚本元素

1.常见的有三种脚本元素

<%--第一种脚本元素 --%>
<% 
int a=5;
int b=4;
int c=a+b;
%>
<%--第二种脚本元素(可以往页面显示内容) --%>
a=<%=a %>
b<%=b %>
c=<%=c %>
<%--声明式脚本元素 --%>
<%!
int x=0;
%>
<%x++; %>
x<%=x %>

效果图:

 

再次运行:

  • 发现唯独x的值发生变化(下面解释)

2.声明里面的变量和脚本段里面的有什么区别。

创建一个Fun类,方便理解。

public class Fun {
    int x;
    public int sum(int a,int b) {
        return a+b;
    }
​
}
​

声明里面的x相当于类里面的静态变量。而脚本段里面的相当于形参,每次调用都是不同的对象,以为jsp本身多线程,x是一个对象。

总之:声明中的变量是实例变量,相当于类的属性。脚本段中的相当于临时变量,多线程访问不会变。

2.4动作元素

1.简介:符合xml标记的语法,能够实现请求转发,包含动态文件以及访问JavaBean等的功能的就可以称之为JSP动作元素。

2.语法格式:带标签体的和不带标签体的(也叫空标记)。

3.常见的动作元素

  • jsp:forword:请求转发

  • jsp:include:动态包含

  • jsp:useBean:创建JavaBean对象

  • jsp:setProperty:设置JavaBean对象属性

  • jsp:getProperty:获取JavaBean对象属性

  • jsp:param:设置参数

3.具体的案例:下期继续

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单点了

谢谢大佬

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值