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

jsp总结的更多相关文章

  1. myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)

    1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...

  2. jsp前端实现分页代码

    前端需要订一page类包装,其参数为 private Integer pageSize=10; //每页记录条数=10 private Integer totalCount; //总记录条数 priv ...

  3. jsp中出现onclick函数提示Cannot return from outside a function or method

    在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...

  4. jsp页面无法识别el表达式的解决方案

    今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...

  5. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  6. 浅谈JSP注释

    HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...

  7. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  8. Nginx服务器之Nginx与tomcat结合访问jsp

    本文使用linux centos系统 本文概述: JSP是一种动态网页技术标准.使用的方式是在HTML文件中插入程序段和JSP标记,而形成JSP文件.使用JSP开发WEB应用可以跨平台开发.但jsp需 ...

  9. 基于jsp+servlet图书管理系统之后台万能模板

    前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...

  10. JSP页面跳转的几种实现方法

    使用href超链接标记      客户端跳转 使用JavaScript               客户端跳转 提交表单                        客户端跳转 使用response ...

随机推荐

  1. CAEmitterLayer 粒子发射Layer的相关属性

    emitterCells:CAEmitterCell对象的数组,被用于把粒子投放到layer上 birthRate:可以通俗的理解为发射源的个数,默认1.0.当前每秒产生的真实粒子数为=CAEmitt ...

  2. Leetcode 375. Guess Number Higher or Lower II

    We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...

  3. Slave2: no datanode to stop(权限)

    有些datanode没有启动,要么是id不一致,我删除了还是不行,要么是权限问题,我邮件属性查看权限,发现不是hxsyl组,我删除,重建.

  4. Jenkins 2.x版本的节点配置选项更新

    [Dumb slave]改成了[Permanent Agent],效果一致 参考:http://serverfault.com/questions/793619/jenkins-trying-to-a ...

  5. oracle sqlplus 连接不正常

    场景描述:在开始--运行--输入SQLPLUS 登陆不了报警:“WINDOWS找不到文件‘SQLPLUS’. 原因分析:一般出现这种情况可能的原因: 1.文件名有问题 2.路径有问题 3.安装有问题 ...

  6. hdu5183 hash大法

    维护前缀和sum[i]=a[0]-a[1]+a[2]-a[3]+…+(-1)^i*a[i]枚举结尾i,然后在hash表中查询是否存在sum[i]-K的值.如果当前i为奇数,则将sum[i]插入到has ...

  7. POJ 1273 Drainage Ditches

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 67387   Accepted: 2603 ...

  8. OrCAD Capture使用记录

    1.安装 ①修改host_ID为主机名称(如果填不对,安装过程会提示你再填一次):其后跟的是机子的MAC地址,用ipconfig /all 可以查看. ②下一行的FLEMlm,后面跟的是文件cdslm ...

  9. [Android]加密技术

    对称加密无论是加密还是解密都使用同一个key,而非对称加密需要两个key(public key和private key).使用public key对数据进行加密,必须使用private key对数据进 ...

  10. 创建与合并分支-git入门教程

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...