zoukankan      html  css  js  c++  java
  • jsp总结

    JSP 定义:
        1)Java Server Page, Java EE 组件,本质上是 Servlet。
        2)运行在 Web Container.接收 Http Request,生成 Http Response(默认协议是 Http 请求和响应) 
        3)JSP 使得我们能够分离页面的静态 HTML 和动态部分——我们需要的技术。
        4)使页面可以混和html代码、Java代码以及JSP标签;允许访问组件。

        5)开发者把编好的jsp页面部署在web容器中,web容器会将jsp编异成对应的servlet

    Servlet的缺陷(JSP出现的原因):

        1)写静态页面必须部署后才能看到效果,很难控制页面的外观。
        2)从技术角度来说Servlet是Java代码和HTML静态代码的混合代码。
        3)从市场竞争角度来说,微软推出了ASP产品。

        4)servlet的开发效率低,特别是当使用servlet生成表现层负面时,页面的所有的html标签,都需要采用servlet的输出流来输出。

    1.JSP指令(direction)

       指令用于从JSP发送信息到容器上。用来设置全局变量,声明类,要实现的方法和输出内容等。
       指令在JSP整个文件内有效。它为翻译阶段提供了全局信息。

          <%@......%>  // "@"符号
       指令包括:page、include、taglib

    (1).page指令

          import:导入其他的包和类; 其中,JSP默认导入的包是java.lang.* 

          Session:指示当前的jsp是否参与会话 (默认为true; 参与会话) 
                       通过指令使当前页面与session不可会话:    <%@page session="false"%> 
                           session="true"时,可用内建对象session直接访问会话,例如:
                             <%  session.setAttribute("username","maxwell");
                                      String name = (String)session.getAttribute("username"); %>
                             <%=name%>

         errorPage:指定错误处理页面,如果本页面产生了异常或者错误,而jsp页面没有处理代码,则会调用该属性指定的jsp页面

         isErrorPage:Jsp页面中出现异常的处理方式
                          对于有可能出现异常的页面: 
                               <%@page errorPage="error.jsp"%> //异常时会跳转到处理异常的页面;这页面自己写
                          在有可能异常的地方打印原因:  throw new Exception("数据库连接出错");
                          对于处理异常的页面(error.jsp)里:
                               <%@page isErrorPage="true"%>,其中使用<%=exception.getMessage() %>把异常信息打印出来 

         language:java唯一值,表示脚本中使用的编程语言

         contentType:设置了内容的类型和静态页面的编码 (告诉浏览器以什么编码显示) 
         pageEncoding:页面本身的编码格式 (写页面时用的编码格式) 

    (2).include指令

         把目标页面的内容包含到当前页面,产生页面叠加以后的输出效果 //相当于将两个页面合并;编译时就包含进来
            <%@include file="foot.jsp"%> //可插入任意位置

         可以包含静态的文本,也可以是动态的JSP页面

    (3).taglib指令

         用于定义和访问自定义标签

    JSP的七大动作指令

    1.forword指令

      将页面响应转发到另外的页面,既可以转发到静态的HTML页面,也可以转发到动态的jsp,或者转发容器的servlet中

      形式:<jsp:forward page="another.jsp"/>
              等价于 Servlet中通过RequestDispatcher.forward();
         可以传参数
              <jsp:forward  page="another.jsp">
                 <jsp:param name="name" value="maxwell"/>
                 <jsp:param name="age" value="20" />
              </jsp:forward>

    2.include指令

       指令是一个动态的include指令,也用于包含某个页面,它不会导入被include页面的编译指令,仅仅被导入页面的body内容插入本页面。

       形式:<jsp:include page="another.jsp"/>
              等价于 Servlet中通过RequestDispatcher.include();
          Include动作也可以传参数
              <jsp:include  page="b.jsp" flush="true">
                 <jsp:param name="name" value="narci"/>
              </jsp:include> 
          与<%@include file=""%>比较:
             include动作在运行期处理(include指令编译期),jsp:include包含的是所包含URI的响应,而不是URI本身。
             这意味着:jsp:include 对所指出的 URI 进行解释,因而包含的是生成的响应。
             对于页面是静态内容,这没有太大的关系。但如果是动态内容,include动作可传参数。

    3.useBean、setProperty、getProperty指令

        这三个指令与Javabean相关

        useBean指令用于在JSP页面中初始化一个Java实例;

        setBean指令用于为JavaBean实例额的属性设置;

        getBean指令用于输出JavaBean实例的属性

    4.plugin指令

        plugin指令主要用于下载服务器的JavaBean或者Applet到客户端执行

    5.param指令

        param指令用于设置参数值;常与一下三个指令结合

        include ,forward,plugin指令结合

    九大内置对象四个作用域

    九大内置对象都是Servlet API接口的实例,可以直接使用。

    http://www.cnblogs.com/sunli0205/p/5896980.html

    一  aplication对象   应用程序对象          类型 javax.servlet.ServletContext        作用域 Application

     1.什么是application: 
         服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所       有客户的application对象都是同一个,即所有客户共享这个内置的application对象。
     2.application对象常用方法: 
         (1)public void setAttribute(String key,Object obj): 将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。
         (2)public Object getAttribute(String key): 获取application对象中含有关键字的对象。 

    二  request对象     请求对象             类型 javax.servlet.ServletRequest        作用域 Request  一次请求

        该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息, 即使用该对象可以获取用户提交信息。 客户端的请求参数都被封装到这个对象里面

       Request常用的方法:getParameter(String strTextName) 获取表单提交的信息.

       getProtocol() 获取客户使用的协议。

       String strProtocol=request.getProtocol();

       getServletPath() 获取客户提交信息的页面。String strServlet=request.getServletPath();

       getMethod() 获取客户提交信息的方式 String strMethod=request.getMethod();

       getHeader() 获取HTTP头文件中的accept,accept-encoding和Host的值,String strHeader=request.getHeader();

       getRermoteAddr() 获取客户的IP地址。String strIP=request.getRemoteAddr();

       getRemoteHost() 获取客户机的名称。String clientName=request.getRemoteHost();

       getServerName() 获取服务器名称。 String serverName=request.getServerName();

       getServerPort() 获取服务器的端口号。 int serverPort=request.getServerPort();

       getParameterNames() 获取客户端提交的所有参数的名字。

    三  response          响应对象              类型 javax.servlet.SrvletResponse        作用域 Page

        通常很少使用该对象直接响应,而是直接使用out对象。response对象常用于重定向,常用的方法有getOutStream()、sendRedirect(java.lang.Stringlocation)等

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

        在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用Response的sendRedirect(URL)方法实现客户的重定向。

        例如response.sendRedirect(index.jsp);

    四 session           会话对象              类型 javax.servlet.http.HttpSession      作用域 Session

        1.什么是session:session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。 
          从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反       复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。
        2.session对象的ID:当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户       端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏         览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。

    五 pageContext       页面上下文对象        类型 javax.servlet.jsp.PageContext       作用域 Page

        javax.servlet.jsp.PageContext 的实例,对象直译时可以称作“页面上下文”对象,代表的是当前页面运行的一些属性,通过此对象可以拿到其他8大对象,使用该对象可以访问     页面中的共享数据。常用的方法有getServletContext()和getServletConfig()等。

        使用pageContext对象可以访问page、request、session、application范围的变量。

       //使用pageContext 设置属性,该属性默认在page 范围内 
        pageContext. setAttribute ("page" , "hello") ; 

    六 out               输出对象              类型 javax.servlet.jsp.JspWriter         作用域 Page

        Javax.servlet.jsp.JspWriter 的实例  out 对象是一个输出流,用来向客户端输出数据。out对象用于各种数据的输出。

        out.print():输出各种类型数据。

        out.newLine():输出一个换行符。

        out.close():关闭流。

    七 config            配置对象              类型 javax.servlet.ServletConfig         作用域 Page

        javax.servlet. ServletConfig 的实例,该实例代表该JSP 的配置信息。常用的方法有getInitPararneter(String paramNarne) 及getInitPararneternarnes() 等方法。事       实上, JSP 页面通常无须配置,也就不存在配置信息。因此,该对象更多地在Servlet 中有效。

    八 page              页面对象              类型 javax.lang.Object                   作用域 Page

        代表页面本身,很少使用page对象,Servlet中的this,其类型的作用是生成Servlet类,能用到page的地方可用this  

    九 exception         例外对象              类型 javax.lang.Throwable                作用域 page

        该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为true 时,该对象才可以使用。常用的方法有getMessage()和             printStackTrace()等。

    四个作用域:request域  session域  application域  page域

    application:
    全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。

    变量一直在累加,除非你重启tomcat,否则它会一直变大。

    session:
    会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。

    量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。

    request:
    请求作用域,就是客户端的一次请求。变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。

    page:
    一个JSP页面。变量没法从index.jsp传递到test.jsp。只要页面跳转了,它们就不见了。

    以上作用范围使越来越小, request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filter)。

  • 相关阅读:
    [置顶] windows player,wzplayerV2 for windows
    wzplayer 近期将会支持BlackBerry和WinPhone8
    wzplayerEx for android(真正硬解接口,支持加密的 player)
    ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持
    ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持
    编译cegcc 0.59.1
    wzplayer 近期将会支持BlackBerry和WinPhone8
    wzplayerEx for android(真正硬解接口,支持加密的 player)
    windows player,wzplayerV2 for windows(20140416)更新
    编译cegcc 0.59.1
  • 原文地址:https://www.cnblogs.com/sunli0205/p/6118959.html
Copyright © 2011-2022 走看看