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)。
jsp总结的更多相关文章
- myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)
1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...
- jsp前端实现分页代码
前端需要订一page类包装,其参数为 private Integer pageSize=10; //每页记录条数=10 private Integer totalCount; //总记录条数 priv ...
- jsp中出现onclick函数提示Cannot return from outside a function or method
在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...
- jsp页面无法识别el表达式的解决方案
今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- 浅谈JSP注释
HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- Nginx服务器之Nginx与tomcat结合访问jsp
本文使用linux centos系统 本文概述: JSP是一种动态网页技术标准.使用的方式是在HTML文件中插入程序段和JSP标记,而形成JSP文件.使用JSP开发WEB应用可以跨平台开发.但jsp需 ...
- 基于jsp+servlet图书管理系统之后台万能模板
前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...
- JSP页面跳转的几种实现方法
使用href超链接标记 客户端跳转 使用JavaScript 客户端跳转 提交表单 客户端跳转 使用response ...
随机推荐
- CAEmitterLayer 粒子发射Layer的相关属性
emitterCells:CAEmitterCell对象的数组,被用于把粒子投放到layer上 birthRate:可以通俗的理解为发射源的个数,默认1.0.当前每秒产生的真实粒子数为=CAEmitt ...
- 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 ...
- Slave2: no datanode to stop(权限)
有些datanode没有启动,要么是id不一致,我删除了还是不行,要么是权限问题,我邮件属性查看权限,发现不是hxsyl组,我删除,重建.
- Jenkins 2.x版本的节点配置选项更新
[Dumb slave]改成了[Permanent Agent],效果一致 参考:http://serverfault.com/questions/793619/jenkins-trying-to-a ...
- oracle sqlplus 连接不正常
场景描述:在开始--运行--输入SQLPLUS 登陆不了报警:“WINDOWS找不到文件‘SQLPLUS’. 原因分析:一般出现这种情况可能的原因: 1.文件名有问题 2.路径有问题 3.安装有问题 ...
- 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 ...
- POJ 1273 Drainage Ditches
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 67387 Accepted: 2603 ...
- OrCAD Capture使用记录
1.安装 ①修改host_ID为主机名称(如果填不对,安装过程会提示你再填一次):其后跟的是机子的MAC地址,用ipconfig /all 可以查看. ②下一行的FLEMlm,后面跟的是文件cdslm ...
- [Android]加密技术
对称加密无论是加密还是解密都使用同一个key,而非对称加密需要两个key(public key和private key).使用public key对数据进行加密,必须使用private key对数据进 ...
- 创建与合并分支-git入门教程
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...