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(javaserverpage)java书写的服务页面用于解决这个问题.
jsp的执行流程
客户端请求jsp,在第一次请求时,服务器会将jsp解析为servlet,创建servlet进行处理,再次请求时如果jsp已经被解析且没有被修改,则直接返回之前解析的servlet进行处理,否则重写解析
3.1创建jsp页面
开发工具一般都提供jsp页面的创建
sp通过特殊的语法,将servlet变为了可以直接书写html代码的文件,只需要在首行标识这本质是一个servlet页面即可,之后可以完全按照html页面书写的语法进行书写,在执行过程中会自动创建输出流对象将html代码输出至页面
可以让前台将静态页面书写完毕后通过添加%
pagelanguage=“java”contentType=“text/html;charset=UTF-8”pageEncoding=“UTF-8”%指令的形式使其变为可执行的java代码并书写相应的java命令3.2page指令
书写在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被请求编译时进行使用的指令
语法格式:
%
deriectiveattr1=val1attr2=val2......%%
指令属性名=值属性名=值属性名=值%page指令
主要设置jsp相关属性,如:页面编码、缓存大小、错误处理页面等,page指令中除了import属性之外,其他属性只能出现一次;
%
pagelanguage=javacontentType=text/html,ISO--1import=java.util.*,java.sql.*,java.io.*session=true
flasebuffer=none
8kb
sizekbautoFlush=true
falseinfo=一段字符串内容
pageEncoding=ISO--1%
include指令
在jsp开发当中,为了避免代码冗余(重复),可以把jsp开发当中多次使用的功能代码封装成一个独立的jsp文件。
include指令:用于引入其他JSP页面,如果使用include指令引入了其他JSP页面,那么JSP引擎将把这两个JSP翻译成一个Servlet,所以include指令引入通常也成为静态引入。
%
includefile=“被包含组件的绝对URL或相对URL%被引入的文件必须遵循JSP语法。被引入的文件可以是任意扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见名知意,JSP规范建议使用.jspf(JSPfragments)作为静态引入文件的扩展名。由于使用include指明将会涉及到2个JSP页面,并会把JSO翻译成一个Servlet,所以这两个JSP页面的指令不能冲突(pageEncoding和导包除外)
就是在jsp编译之前将指定的jsp页面加载到当前页面中,相当于将指定jsp页面代码复制到指定位置
taglib指令
通过使用taglib指令,开发者可以导入其他的标签库,来完成特定的功能。
%
taglibprefix=“c”uri=“