未写完的JSP总结

一:JSP认知

1:什么是Jsp?

JavaServer Pages, java的服务器页面,是一种动态网页技术标准

2:Jsp的组成部分

静态网页html,  java代码,jsp的独有标记

3:Jsp的运行机制

访问Jsp页面时,tomcat内置的Jsp编译器将Jsp文件编译成 .java文件,然后再由Java的编译器将 .Java文件编译成 .class文件,交由jvm虚拟机运行。

4:为什么说Jsp本质上是一个Servlet

a:因为继承关系

jsp文件编译后的java类,继承了HttpJspBase类,此类又继承了我们创建Servlet时继承的HttpServlet,所以追根溯源可以找到Servlet接口,所以说Jsp本质上就是一个Servlet

b:生命周期的方法

在编译后的java类中,存在与Sevlet同样的生命周期方法,而且有一个_jspService方法用来接收请求,响应数据,这与Servlet的功能是一致的,所以说Jsp本质上就是一个Servlet

5:为什么访问Jsp可以看到页面内容

查看jsp文件编译后的java文件中的_jspService方法发现,书写在jsp文件内部的html结构,是通过输出流响应数据的形式,一点一点写出去的,所以记住,jsp文件不能被浏览器直接识别,渲染,呈现在页面中的内容,都是响应体。

6:Jsp与Servlet的区别

(1):Jsp虽然可以接收请求,响应数据,但是内嵌了网页html,所以在实际开发过程中趋向于做View视图层,主要用于数据展示,请求发起。而Servlet在实际开发过程中做Controller控制层,主要用于接收请求,响应数据,方法调用,数据传递等。

(2):Jsp中存在九大内置对象,来辅助Jsp的功能,而Servlet中没有内置对象的概念。

(3):Servlet就是一个纯粹的类,而Jsp只有访问编译后才是java类文件,但是文件本身的后缀为 .jsp

二:JSP基础语法

1:Java代码段

语法格式:<% java代码 %>

<%
     for(int i=0;i<10;i++){
         System.out.println("HelloWorld");
     }
     //定义一个字符串
     String str = "小可爱";
     System.out.println(str.length);
     /*不要定义方法,因为编译就报错*/  
%>

注意事项:

a.在<% %>中只能书写java代码,不能定义方法。java代码只能写在<% %>中间

b.<% %>可以做拼接,用于在一段java程序内部需要执行其他语言的场景

2:脚本表达式

语法格式:<%=  具有返回值或结果的java程序代码%>

<%=str.length()%>
<%="我是普通字符串">

脚本表达式的作用就是将java程序代码的结果输出到浏览器页面显示。

脚本表达式的结果,在jsp文件编译后的java类中的_jspService方法内,输出流将内容响应到浏览器页面内。

3:声明

语法格式:<%!  java内容的声明 %>

<%!
      int num = 100;//声明一个变量
      public void haha(){
         System.out.println("sayHi");
      }
%>
<% 
      haha(); 
%>

<%!   %>中书写的是java中的声明代码。比如变量,方法。

4:注释

三:JSP指令

指令在jsp文件内部的语法格式:

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

page指令

include指令

taglib指令

 

四:JSP的九大内置对象

(在jsp中,不需要实例化,直接使用的对象就是内置对象)

application(ServletContext):全局管理者对象

config(ServletConfig):Servlet的配置对象

out(JspWriter):Jsp中的输出流对象,用于响应数据

page(Object):代指当前的Jsp页面

pageContext(PageContext):当前Jsp页面的管理者对象

request(HttpServletRequest):请求对象

response(HttpServletResponse):响应对象

session(HttpSession):会话对象

exception(Throwable):异常对象异常对象只有在指定了当前页面是错误页面时,才能使用。

 

1、request对象

request 对象是 javax.servlet.HttpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。

 

2、response对象

response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。

 

3、session对象

session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

 

4、application对象

 application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

 

5、out 对象

out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

 

6、pageContext 对象

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。

 

7、config 对象

config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

 

8、page 对象

page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

 

9、exception 对象

exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。exception对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面

中处理相应的 exception 对象。

 

五:JSP的四大域对象

Servlet中的域对象有三个:

HttpServletRequest请求

ServletContext全局管理者

HttpSession会话

 

Jsp中的域对象有四个:

pageContext当前页面管理者-----作用范围仅限于当前的jsp页面

request请求-----作用范围仅限于一次请求

session会话-----作用范围是一个会话(我们可以将浏览器窗口的关闭认为是一次会话的结束)

application全局管理者-----作用范围是整个web项目的运行期间

 

以上书写Jsp域对象的顺序,是按照域对象作用范围从小到大写的。

六:JSP的动作标签

1:静态包含与动态包含的区别

(1):静态包含使用的是include指令,被包含的文件书写在file属性中,动态包含使用的是include动作标签,被包含的文件书写在page属性中。

(2):静态包含被包含文件不会单独进行解析与编译,而是将被包含文件的内容导入到源文件中,统一对源文件进行解析与编译。动态包含源文件与被包含的文件都会单独进行解析与编译,编译运行后再整合到一起。

(3):静态包含通常用于包含静态页面文件,比如html。而动态包含可以用于包含动态文件jsp

(4):静态包含速度要快于动态包含

(5):如果我们需要在被包含文件中进行数据操作,一般选用动态包含(能够进行数据操作的文件是动态的jsp)

七:EL表达式

八:JSTL标准标签库

1:什么是JSTL?

JSP标准标签库。开发人员可以利用这些标签取代JSP页面上的java代码,从而提高程序的可读性,降低程序的维护难度。

2:JSTL的库组成?

(1):核心标签

核心标签库是整个JSTL中最常用的部分,主要由以下几个部分组成:基本输入输出,流程控制,迭代操作和URL操作。负责Web应用的常见工作:循环,表达式赋值,基本输入输出等。

(2):l18N格式标签库

用来格式化显示数据的工作如:对不同区域的日期格式化等。

(3):XML标签库

(4):数据库标签库

(5):函数标签库

用来读取已经定义的某个函数。

3:核心标签库的使用

(1):要导入的库

<!--
     核心标签库core,默认的标签前缀就是c
     uri   是要导入jsp/jstl/core
--> 
<% taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>

(2):常用标签

a:支持在Jsp页面内进行判断的标签

b:支持在页面中进行迭代,循环的标签

c:支持在页面中定义变量(输入),输出打印的标签

4:函数库的使用

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值