zoukankan      html  css  js  c++  java
  • jsp

    一.什么动态代理

    JSP 服务器端页面技术

    二.什么是jsp

     JSP:java server pages

     注意:JSP本质上就是一个servlet  

     jsp的组成: html代码+java代码+jsp特有的代码

    一句话: jsp就是能写java代码的html页面

    三.JSP的作用?(重点)

    servlet要展示页面信息的时候会特别麻烦

    jsp能更好的替代Servlet去展示信息

    一句话: 用来接收servlet产生的数据(list,bean,数组),并且展示数据的(记住)

    注意:jsp需要放在webcontent下面

    四.如何使用JSP?

    HttpJspBase--->httpServlet

    jsp的执行原理(理解):

    1.服务器收到请求,找到指定servlet执行(JspServlet)

    2.servlet找到对应的jsp文件.将jsp文件变成java文件.并调用编译器编译成class文件,然后放到work目录下

    3.编译后的class文件会被服务器当做Servlet执行,生成动态的内容,将动态的内容返回给服务器

    4.服务器拿到生成的内容,组装成响应信息,返回给浏览器

    5.浏览器收到响应,展示内容  

    1.jsp特有的

        1 jsp的脚本(了解) <% %>  <%= %>  <%! %>---el,jstl

        2 jsp的注释  

        3 jsp的指令(重点)

        4 jsp的内置对象(面试题)

        5 jsp的域对象(4个域对象重点中的重点)

        6 jsp的动作标签(了解)

    2.jsp的脚本(了解)

    <%....%> java程序片段

      生成的servlet内容,在service方法里面有一份

    <%=...%> 输出表达式

     生成的servlet内容,在service方法里面是响应输出 out.print();

    <%!...%> 声明成员

     生成的servlet内容,在成员位置上

    3.jsp的注释

           html的注释: <!-- -->

    在源码和生成的servlet里都显示   

          

           java的注释: //  /* */  /** */

    在源码不显示,在servlet里显示      

           

           jsp的注释:  <%--  --%>

    在源码和生成的servlet里都不显示

    4.jsp的指令

    作用:声明jsp页面的一些属性

    格式:<%@指令名 属性1="值1" 属性2="值2"  ....%>

    指令的分类:

    page:声明jsp页面的属性

    include:包含(静态包含)

    taglib:导入标签库(明天讲)   

    注意:

    jsp页面中可以使用多个指令,

    指令可以出现多次,

    位置任意,一般都在页面的上面

    5.page指令

    重要属性

    import:导入jar包的   /alt+/  做导包和提示

    contentType:设置响应流的编码(通知浏览器用什么编码打开),设置文件的mime类型

    pageEncoding:设置页面的编码

    contentType和pageEncoding的联系:

    两者都出现的时候:各自使用各自的编码

    两者只出现一个的时候:两个使用出现的编码

    两者都不出现的时候:使用默认的编码 (iso-8859-1)

    了解属性

    language:声明当前jsp支持的脚本语言 目前只有 java

    errorPage:当页面出现错误之后 跳转到指定的页面上(地址)

    isErrorPage:当前是否是个错误页面(默认值是false)

    当声明这是一个错误页面的时候,在页面中可以使用 exception这个内置对象

    session:当前页面是否可以使用session内置对象             

    6.include指令:静态包含

     格式:

    <%@include file="文件地址" %>  多个共同的内容,可以抽取出来,在使用的时候

           使用静态包含就行了

    注意:将被包含页面的内容复制到当前的jsp页面中,一起编译运行了,只生成一个java文件

    7.taglib指令:导入标签库

      格式:

    <%@taglib prefix="起别名" uri="名称空间" %>  

    五.jsp的内置对象(9个)

    jsp页面上可以直接使用的对象称之为内置对象

       

    序号 内置对象  类型
    1 exception Throwable异常信息的封装对象,一般不会有,isErrorPage="true"
    2 request HttpServletRequest
    3 session HTTPsession
    4 response HttpServletResponse
    5 config ServletConfig不用
    6 application ServletContext
    7 out

    JspWriter            jsp的字符输出流 做响应体内容输出

    PrintWriter          servlet的字符输出流 做响应体内容输出

    8 page Object(代表的是当前页面对象)
    9 pageContext

    JSP最小的作用域,一般不使用这个作用域存储数据

    六.pageContext对象

    可以获取其他八大内置对象

    举例子:当定义一个工具类的时候,这个工具类如果用到了很多内置对象

    直接使用pageContext

     public void utils(pageContext con)

     {

    exception

    request

    ...

    实现了功能

     }

    可以从别的作用域中查找数据

    pageContext.findAttribute(String name);   //获取对应的值

    作用域的大小排列:

    servletContext: 1

    session:  2

    request:  3

    pagecontext: 4

    先从最小的pageContext作用域中寻找,如果能找到,直接使用

    找不到,继续找request,如果能找到,直接使用

    找不到,继续找session,如果能找到,直接使用

    找不到,继续找application,如果能找到,直接使用

    最后都没找到,返回null

    findAttribute

    底层:

    if(pageContext.getAttribute(name)!=null)

    {

    return pageContext.getAttribute(name)

    }else if(request.getAttribute(name)!null)

    {

    return request.getAttribute(name)

    }...

    else

    {

    return null;

    }

    pageContext可以操作其他作用域(了解)

    setAttribute()

    getAttribute()

    removeAttribute();

    实例:

    上下两句效果完全等价

    session.setAttribute("msg2", "33333333333");

    pageContext.setAttribute("msg2", "33333333333",pageContext.SESSION_SCOPE);

    七.域对象总结

    作用: 存储数据,在多个servlet/jsp中做数据的交互

    Servlet中:  3个域对象

    1.ServletContext对象:

        创建: 服务器启动的时候,就为放在它下面每一个项目各创建一个对应的servletContext对象

        销毁: 服务器正常关闭获取项目从服务器中移除的时候,servletContext对象销毁

        作用域: 整个项目中的所有serlvet/jsp都可以共享它里面的数据

    2.HTTPServletRequest对象:

        创建: 浏览器请求服务器的时候,创建request对象

        销毁: 服务器给浏览器响应回去的时候,request对象销毁

        作用域: 一次请求,不管这个请求转发了多少次,只要没有响应,所有的servlet/jsp

                都可以获取request里面的数据

    3.HTTPSession对象:

        创建: java认为第一次调用request.getSession()的时候,创建session对象

        销毁: 3种方式

      1: 手动销毁  void invalidate()

      2: 自动销毁  默认是离开电脑30分钟  可以去tomcat的web.xml下设置

      3: 服务器非正常关闭 (断电,terminate..)

       扩展: 服务器正常关闭,session不会销毁,只会带着它的数据序列化到磁盘上(钝化)

     当服务器启动的时候,session和session中的数据会从磁盘上序列化回内存(活化)     

        作用域:

         一次会话,只要浏览器不关闭,在servlet/jsp中获取到的session

         都是同一个session

    4.jsp中:  4个域对象

    ServletContext对象        同上

    HTTPServletRequest对象    同上

    HTTPSession对象           同上

    jsp特有的域对象:

    pageContext对象:

            作用域:当前页面

    5 jsp的动作标签(了解)

    <jsp:forward> 在jsp页面使用请求转发  

    <jsp:forward page="...">

    相当于<%request.getRequestDispatcher(..).forward(..)%>

    <jsp:include> 动态包含

    将被包含页面运行后的结果包含了进来

     

  • 相关阅读:
    @ExceptionHandler
    使用Vue.extend实现iview Upload在单文件上传时,拖拽多个文件给出错误提示
    spring 常用的注入方式
    SpringMVC框架
    Redis
    事务的隔离性以及隔离级别
    Qt的获取和安装
    C++ 指针delete 及 指针delete后赋值为NULL
    图形流水线
    freeglut的安装步骤
  • 原文地址:https://www.cnblogs.com/xwb583312435/p/8709823.html
Copyright © 2011-2022 走看看