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)。

  • 相关阅读:
    归并排序
    数据组合求值
    轨道周期
    类及对象构建
    日期改写
    排列组合去重
    库存更新
    Java性能测试从入门到放弃-详解篇
    Java性能测试从入门到放弃-概述篇
    cocos2d-x安装教程
  • 原文地址:https://www.cnblogs.com/sunli0205/p/6118959.html
Copyright © 2011-2022 走看看