jsp是什么文件的扩展名(厉害了!清华学霸梳理的JSP基础知识点,2小时带你从入门到入坟)

Hello,今天给各位童鞋们分享的是JSP,赶紧拿出小本子记下来吧

一、课程目标

【掌握】servlet注解开发

【理解】jsp原理

【了解】jsp标签指令

【掌握】jsp脚本书写

二、servlet注解开发

servlet的jar包是由tomcat进行提供,用于处理客户端发送至服务器的请求,随着技术的不断发展进行版本的更新,现一般使用的版本为3.0之前版本与3.0之后的版本,功能是一样的,只不过对配置与书写上进行了更新,但是实际使用时根据不同的需求进行选择,本质执行原理是一样的

servlet3.0为了简化配置 提供了相应的注解开发的功能

语法:

书写在类声明之上。标注当前类为servlet指定servlet的name与url

name可以省略默认会使用当前类名当做name

urlPatterns是数组形式的地址,可以书写多个地址执行同一个servlet

简写

当只进行url配置且,url只有一个时可以简化注解的书写

@WebServlet("/my")

注意:注解形式虽然简化了配置,但使得项目进行维护时更加繁琐,所以在实际开发过程中根据实际需求进行书写。本质注解开发与配置开发是一样的,只不过在加载时发现相应注解后会执行相应的配置

三、jsp

在使用servlet返回页面过程中,虽然可以返回动态页面,但是如果页面拥有各种样式与功能,那么servlet中的代码就会很多,而且会出现在java中书写html字符串的形式,对于后台开发很不友好,所以,开发出了jsp(java server page)java书写的服务页面用于解决这个问题.

jsp的执行流程

客户端请求jsp,在第一次请求时,服务器会将jsp解析为servlet,创建servlet进行处理,再次请求时如果jsp已经被解析且没有被修改,则直接返回之前解析的servlet进行处理,否则重写解析

3.1 创建jsp页面

开发工具一般都提供jsp页面的创建

sp通过特殊的语法,将servlet变为了可以直接书写html代码的文件,只需要在首行标识这本质是一个servlet页面即可,之后可以完全按照html页面书写的语法进行书写,在执行过程中会自动创建输出流对象将html代码输出至页面

可以让前台将静态页面书写完毕后通过添加<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>指令的形式使其变为可执行的java代码并书写相应的java命令

3.2 page指令

jsp是什么文件

书写在jsp首行用于jsp页面设置的指令,拥有很多的属性

语法:

< %@ page 属性1="属性值" 属性2="属性值1,属性值2"… 属性n="属性值n"%>

在jsp中拥有大量的指令操作通过设置完成不同的功能

3.3 脚本

由于jsp是通特殊语法可以直接书写html代码并通过out对象输出到客户端,但是本质是java代码,为了与直接输出到客户端的html代码区分,所以需要使用脚本块将书写在jsp页面的java代码进行包裹,这样在将html页面输出到客户端的过程中,就不会讲java代码当做html代码进行输出

语法:

< % java代码 %>

虽然jsp本质是servlet可以直接书写java代码进行逻辑操作,但是页面出现大量的java代码会影响书写,所以一般在进行书写时都会将逻辑操作交由servlet进行处理

3.4 方法声明

语法:

由于jsp可以理解为servlet中的某一个请求,所以不能直接进行方法的声明,需要通过特殊的声明语法

3.5 其他指令

3.5.1 编译指令

指的是书写在jsp页面中不会进行直接显示与功能的指令,在jsp被请求编译时进行使用的指令

语法格式:

<%@deriective attr1=val1 attr2=val2...... %>

<%@ 指令 属性名="值" 属性名="值" 属性名="值"%>

page指令

主要设置jsp相关属性,如:页面编码、缓存大小、错误处理页面等,page指令中除了import属性之外,其他属性只能出现一次;

<%@ page language="java" contentType="text/html,ISO-8859-1" import="java.util.*,java.sql.*,java.io.*"

session="true|flase" buffer="none|8kb|sizekb" autoFlush="true|false" info="一段字符串内容"

pageEncoding="ISO-8859-1"%>

include指令

在jsp开发当中,为了避免代码冗余(重复),可以把jsp开发当中多次使用的功能代码封装成一个独立的jsp文件。

include指令:用于引入其他JSP页面,如果使用include指令引入了其他JSP页面,那么JSP引擎将把这两个JSP翻译成一个Servlet,所以include指令引入通常也成为静态引入。

< %@include file=“被包含组件的绝对URL或相对URL"%>

被引入的文件必须遵循JSP语法。被引入的文件可以是任意扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见名知意,JSP规范建议使用.jspf(JSP fragments)作为静态引入文件的扩展名。由于使用include指明将会涉及到2个JSP页面,并会把JSO翻译成一个Servlet,所以这两个JSP页面的指令不能冲突(pageEncoding和导包除外)

就是在jsp编译之前将指定的jsp页面加载到当前页面中,相当于将指定jsp页面代码复制到指定位置

taglib指令

通过使用taglib指令,开发者可以导入其他的标签库,来完成特定的功能。

<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

虽然后期jsp仅仅用于数据的展示,但是仍然会书写java代码,所以提供了第三方标签库,通过taglib指令可以在jsp页面中引入标签库,通过特定的标签实现原本java的代码(在jsp页面通过这些标签完成不写任何java代码)

3.5.2 动作指令

指的是在jsp编译为servlet后执行过程中提供功能的指令(可以理解为将java的代码进行了指令的封装,减少页面中java代码出现的频率)

语法格式:

<%jsp:deriective attr1=val1 attr2=val2...... %>

<%jsp:指令 属性名="值" 属性名="值" 属性名="值"%>

param指令

用于传递参数,必须与其他支持参数指令的标签一起使用。

<jsp:forward page="index.jsp">----传到index.jsp页面

<jsp:param name="name" value="心雨"/>

<jsp:param name="password" value="123"/>

</jsp:forward>

forwoad指令

执行页面跳转,将请求的处理转发到下一个页面。可以使用参数指令进行数据的传输
<jsp:forward page=“date.jsp” />

a.jsp

b.jsp

指令就是通过标签实现原本java代码书写的功能

useBean指令

用于调用指定类无参构造方法创建对象

setProperty指令

用于设置指定对象指定属性的值

getProperty指令

用于获取指定对象指定属性的值

include指令

<jsp:include page="index.jsp"/>

<%--将指定页面导入当前页面--%>

include编译指令与include动作指令的区别

3.6 jsp执行流程

当客户端请求指定jsp时,首先在已经翻译好的文件中查找,是否修改,如果已存在并且没有修改则直接进行操作,如果不存在或进行了修改,那么现将jsp翻译为servlet,之后编译servlet初始化创建servlet对象,将请求交由servlet对象进行处理.

翻译阶段:当服务器中没有对应servlet实例或对jsp进行修改时,进入翻译阶段,将jsp翻译成对应的setvlet

编译阶段:将对应的serlvet.java编译为对应的.class执行文件

执行阶段:调用对应servlet初始化方法创建对应的servlet实例对象并保存至服务器中,并通过配置获取注解的形式将实例与url请求进行关联.再次请求时直接使用对应的实例进行服务的处理

3.7 jsp组成

静态内容:

指的是在jsp中书写的html相关的静态页面数据(包含html、css、js以及前端相应的代码)

注释:

<%- 注释内容 -%>

书写在jsp中在编译时不会进行编译的内容

小脚本 :

<% java代码 %>

直接在jsp中书写的java代码,在编译成servlet进行执行的代码

声明:

<%! 声明方法 %>

用于在jsp中声明方法(属于声明脚本)

表达式:

<%= 拥有返回值的表达式 %>

将表达式的结果直接输出到页面上等价于out.print(表达式)(属于表达式脚本)

指令:

编译指令<%@指令 属性=值%>

page/include/taglib

动作指令<jsp:指令 属性=值/.>

forward/param/include/useBean/setProperty/getProperty

模仿html标签样式,用于减少在jsp页面书写大量的java代码

好啦,今天的文章就到这里了,希望能够帮助到屏幕前迷茫的你们

您可以还会对下面的文章感兴趣

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友