zoukankan      html  css  js  c++  java
  • jsp基础知识

    为什么会出现jsp技术? 因为Servlet当初的设计目的是用来产生网页的程序,所以所有的页面必须在Servlet中进行构造,这样做的效率在当今来说,真的很低下,所以对于Servlet来说,它是很不利于展现的,不过它很适合于对数据的处理,所以很适合于充当控制器来使用。因为Servlet构建页面实在够差,所以后来SUN推出了JSP来一改Servlet引入的尴尬。 jsp = html+java片段+jsp标签+javascript+css JSP(Java Server Pages):在HTML中嵌入java脚本语言;由引用服务器中的JSP引擎来编译和执行嵌入的java脚本语言命令;然后将生成的整个页面信息返回给客户端。 jsp功能强大是因为可以与javabean结合使用(即jsp作前台,javabean作后台===>Model1) jsp+javabean的基础上再结合servlet(做控制),就会构成MVC的开发模式, MVC模式是目前软件公司通用的开发模式。

    JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

    JSP页面跳转的五种方法

    1. RequestDispatcher.forward()

      是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递. 但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面。

    2. response.sendRedirect()

      是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.

      重定向后在浏览器地址栏上会出现重定向页面的URL

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

        它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。

        如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。

        另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交

    4. 修改HTTP header的Location属性来重定向

        通过设置直接修改地址栏来实现页面的重定向。

        jsp文件代码如下:

      <%

       response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

       String newLocn = "/newpath/jsa.jsp";

       response.setHeader("Location",newLocn);

      %>

    5. JSP中实现在某页面停留若干秒后,自动重定向到另一页面

        在html文件中,下面的代码:

      <meta http-equiv="refresh" content="300; url=target.jsp">

        它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。

        由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。

        关键代码:

      String content=stayTime+";URL="+URL;

      response.setHeader("REFRESH",content);

    jsp的九大内置对象

    JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception

    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文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

  • 相关阅读:
    GridView跨列
    html的积累
    什么是json?
    关于string
    Effective C# Item38:定制和支持数据绑定
    Effective C# Item44:为应用程序创建特定的异常类
    Effective C# Item42:利用特性简化反射
    Effective C# Item47:选择安全代码
    Effective C# Item43 : 避免过度使用反射
    Effective C# Item39 : 使用.NET验证
  • 原文地址:https://www.cnblogs.com/wcf6676/p/4943606.html
Copyright © 2011-2022 走看看