一.jsp的简介

  1.jsp是java server pages允许在页面中使用java作为脚本语言动态生成html代码

  2.jsp首先和html的区别,html可以直接放在浏览器中执行但是jsp必须把tomcat启动起来才能看到效果

  3.组成部分:1.静态内容;2.指令;3.表达式;4.脚本;5.声明;6.注释

    3.1注释:jsp有html使用的注释,java使用的注释,和自己的注释

       第一种:跟html注释一样,此注释是第一种,在客户端可以看见

       第二种jsp注释,在客户端看不见,在编译时,会被擦除<%--注释-->

       第三种是标准java注释,这种注释只能写在jsp脚本中 //注释 ; /*注释*/

    3.2指令:jsp页面可以在最上方加入当前页面的配置等信息叫做jsp指令

       page指令:当前页面的配置信息,最为常用

       include:在一个页面中,将另一个文件嵌入其中

       taglib:引入标签库

    3.3脚本:<%--jsp脚本--%>可以写任何java代码,但是不能够定义方法,全局变量.所有的jsp脚本,都会和html代码混合复制进_jspService方法中.

    3.4静态内容:所有被写在jsp文件中的没有被任何jsp标签包裹的,就是静态内容,即,所有的html代码,都是静态内容

    3.5声明:用来写自定义方法,成员变量的

    3.6表达式:是在html代码中,是为了使用声明中定义的全局变量,或脚本中定义的局部变量而存在的即表达式是没有复杂逻辑,只能取值使用

二.jsp的九大内置对象

  内置对象:在java中,一定是对象.方法()去调用,而在所有jsp页面中,这九个对象不需要new,可以直接使用

  1.out对象:out对象是jspWriter的实例,用来向客户端输出文本信息的,将内容写到out中,会默认写到out的缓冲区,当jsp执行完成后统一输出到客户端,默认页面中的静态内容也是使用out来输出

    1.1,out.flush();//把缓冲区的内容写到浏览器

    1.2,out.clear();//清空缓冲区,缓冲区的内容不会写到页面上;

    注意:不能在flush()之后调用,如果就是要调用可以用clearBuffer()

  2.request对象:request对象封装了http请求的所有信息,不分get还是post,用法和servlet中的request没有什么区别

    2.1,request.setAttribute("key",value);//存值

    2.2,request.getAttribute("key");//取值

  3.response对象:这里面的response就是servlet中的response,在jsp中用处很小

  4.session对象:session是httpSession的对象,是用来进行会话跟踪的,会话跟踪,是服务器来判断是否是同一个用户发起的不同请求

    4.1,session的底层依赖于cookie

    4.2,session是保存在服务器中的

    4.3,session还是4大域对象之一

    4.4,session.setAttribute("key",value);//存值

    4.5,session.getAttribute("key");//取值

  5.page对象:page:page对象代表当前JSP页面,是当前JSP编译后的Servlet类的对象。相当于this。

  6.application对象:application 就是servletContext,只要servletContext中有的方法,application都有

  7.pageContext对象:jsp四大域对象之一,(application,session,request,pageContext)

    7.1可以实现请求包含:pageContext.include("page.jsp");//将一个页面的内容加载到另一个页面

  8.config对象:对象就是在servlet启动的时候init方法中传入进来的ServletConfig对象,基本没啥用

  9.exception对象:是一个异常对象,当一个页面在运行过程中,发生了异常,将产生这个对象,它是Throwable的对象

    9.1,exception这个内置对象,默认是用不了的,编译过不去,想要用,必须把这个页面指定为isErrorPage,即,在page指令中添加isErrorPage= "true" 这条指令,抛异常的页面指令中添加errorPage="跳转的页面".

 

三,EL表达式,可以从域对象中取值

  1.el表达式语法是${要取的值},它不是java代码,所以没有对象.方法

  2.取值的时候,这些值需要从其他内置对象中获得,或者从javabean中获得

  3.从域对象中取值,实际上是获得applicationScope这个map,直接map.key就可以获得这个map对应的value

  4.如下图,在test04中向域对象中传值

   5.在test03中用el表达式取值

  

posted on 2018-05-16 18:57  北冥丶中郎将  阅读(135)  评论(0编辑  收藏  举报