首页 > 代码库 > jsp总结
jsp总结
JSP 定义:
1)Java Server Page, Java EE 组件,本质上是 Servlet。
2)运行在 Web Container.接收 Http Request,生成 Http Response(默认协议是 Http 请求和响应)
3)JSP 使得我们能够分离页面的静态 HTML 和动态部分——我们需要的技术。
4)使页面可以混和html代码、Java代码以及JSP标签;允许访问组件。
Servlet的缺陷(JSP出现的原因):
1)写静态页面必须部署后才能看到效果,很难控制页面的外观。
2)从技术角度来说Servlet是Java代码和HTML静态代码的混合代码。
3)从市场竞争角度来说,微软推出了ASP产品。
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="http://www.mamicode.com/maxwell"/>
<jsp:param name="age" value="http://www.mamicode.com/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="http://www.mamicode.com/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大对象,使用该对象可以访问 页面中的共享数据。常用的方法有getServletContextO和getServletConfigO等。
//使用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总结