您的位置:首页 > Web前端 > JavaScript

jsp基础知识

2015-03-27 22:59 211 查看
jsp:java server page java服务器页面技术.

jsp包括了 静态部分及动态部分,运行于服务器中.

html中包含了java代码,必须运行在服务器,以完成翻译,编译,运行的过程,最后返回html给客户端.

最后生成 java, class文件都是放在 tomcat的work目录下.

work/Catalina/localhost/项目名/org/apache/jsp/ 页面名_jsp.java 而且这个java文件是一个final类.

2. jsp页面的结构:

静态部分: html, css, javascript (包含注释)

动态部分: jsp元素 ( java相关)

1. 指令

编译指令: 只在编译时起作用,不会有任何输出 ( import ,包含一个小模块, 导入标签库 )

<%@ page 属性名="值" %> 导入的类的说明, 编码集

<%@ include file="文件名.jsp" %> 包含另一个页面( 公用的模块 )

<%@ taglib prefix="前缀名" uri="定义标签地址" %> 导入标签库.

例: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=utf-8"%>

动作指令:

<%jsp:include %>

<%jsp:forward %>

<%jsp:param %>

2. 脚本: 逻辑,业务, 输出

小脚本

<% java代码 %> 逻辑和业务操作

声明

表达式

<%=值 %> 输出.

3. 注释

4. 9大内置对象. (重点) out

内置对象 类型 作用域

request javax.servlet.http.HttpServletRequest request

response javax.servlet.http.HttpServletResponse response

pageContext javax.servlet.jsp.PageContext page

session javax.servlet.http.HtpSession session

application javax.servlet.jsp.ServletContext application

out javax.servlet.jsp.JspWriter page

config javax.servlet.ServletConfig page

page java.lang.Object page

exception java.lang.Throwable page

Request:请求对象

  Respone:响应对象

  Session:会话对象 , 客户端与服务器端之间的多次请求与响应的过程. 一个session只针对一个客户端.

  Application:应用程序对象

  Out:输出对象

  Config:配置对象

  Page:页面对象

  PageContext:页面上下文对象

  Exception:例外对象

我们同样可以根据它们的作用进行分类:

第一类:与Servlet有关:page和config

第二类:与Input/Output有关:out,request和response

第三类:与Context有关:application,session和pageContext

第四类:与Error有关:exception

一、属性保存范围

在JSP中可以通过setAttribute()和getAttribute()这两个方法来设置和取得属性。从而实现数据的共享。JSP提供了四种属性保存范围:response,request,session和application。

request对象

  request 对象是 javax.servlet.httpServletRequest类型的对象。该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。例如我们在FORM表单中填写的信息等,是最常用的对象。常用的方法有:getParameter、getAttribute,getParameterNames 和getParameterValues通过调用这几个方法来获取请求对象中所包含的参数的值。

  getParameter(Strings) : 获取表单提交的信息

String s = request.getParameter("name");

  getAttribute(Strings): 获取指定属性的值,如该属性值不存在返回Null

  String s=request.getAttribute(“name”);

  setAttribute(String key,Object obj):设置指定名字参数值

  Strings=request.setAttribute(“zhuo”,name);

getProtocol() :获取客户使用的协议

  getServletPath() :获取客户提交信息的页面

  getMethod() :获取客户提交信息的方式 get或post

String s = request.getMethod();

getHeader() :获取HTTP头文件中的accept、accept-encoding和host的值

String s = request.getHeader("accept");

  getRemoteAddr() :获取客户的ip地址

getServerHost() :获取客户机的名称

  getServerName() :获取服务器名称

getServerPort() :获取服务器的商口号

getPamameterNames():获取客户端提交的所有参数的名字

Enumeration enum = request.getParameterNames();

while(enum.hasMoreElements()){

String s = (String)enum.nextElement();

out.println(s);

}

  getRequestURI():获得发出请求字符串的客户端地址。

  getSession(Boolean create):返回和当前客户端请求相关联的HttpSession对象。如果当前客户端请求没有和任何HttpSession对象关联,那么如果create变量为true,则创建一个HttpSession对象并返回,反之返回null。一般与setArribute连用,例如:request.getSession().setAttribute(“zhuo”,name);

  getQuertString():返回查询字符串,该字符串由客户端以get方法向服务器端传送。查询字符串出现在页面请求“ ”的后面,例如: name=Jack。

  getContentType():获取客户端请求的MIME类型。如果无法得到该请求的MIME类型,则返回-1。

  session对象

  在页面的page指令加上session="true" 或缺省 情况下以及在servlet中使用request.getSession();的方式进行创建。超时或服务停止时,session结束。(一个用户对应一个session对象)

什么是session对象? ----- 它是一个jsp内置对象,它在第一个jsp被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离 开这个服务器结束(或者超时),被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要创建session对象。

session对象的ID -----当一个客户首次访问服务器上的一个jsp页面时,jsp引擎会产生一个session对象,同时分配一个String类型的的ID号,jsp引擎同时将这个ID号发送到客户端,存放在cookie中,这样,session对象直到客户关闭浏览器后,服务器端,该客户的session对象才会消失,会并,和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。

  getAttribute(String name):获得指定名字的属性,如果该属性不存在,将会返回null。

  getAttributeNames():返回session对象中存储的每一个属性对象,结果集是一个Enumeration类的实例。

  getCreationTime():返回session对象被创建的时间,单位为毫秒。

  getId():返回session对象在服务器端的编号。每生成一个session对象,服务器都会给它一个编号,而且这个编号不会重复,这样服务器才能根据编号来识别session,并且正确地处理某一特定的session及其提供的服务。

  getLastAccessedTime():返回当前session对象最后一次被操作的时间,单位为毫秒。

  getMaxInactiveInterval ():获取sessionn对象的生存时间,单位为秒。

  setMaxInactiveInterval (int interval):设置session对象的有效时间(超时时间),单位为秒。在网站的实际应用中。

  例如:设置有效时间为200秒。

  <%session.setMaxInactiveInterval(200);%>

  removeAttribute(String name):删除指定属性的属性值和属性名。

  setAttribute(String name,Java.lang.Object value):设定指定名字的属性,并且把它存储在session对象中。

  invalidate():注销当前的session对象。

  respone对象

  对客户的请求做出动态响应,向客户端发送数据。响应客户请求时创建,响应结束时销毁。(一次响应产生一个response对象)

  setRedirect(url):把响应发送到另一个指定的页面(url)进行处理。这是最常用的一个方法

  sendError(int sc):向客户端发送错误信息。例如:“505指示服务器内部错误”, “404指示网页找不到的错误”

  addHeader(String name,String value):添加http头文件,该Header将会传到客户端去,如果有同名的Header存在,那么原来的Header会被覆盖。

  setHeader(String name,String value):设定指定名字的http文件头的值,如果该值存在,那么它将会被新的值覆盖。

  containsHeader(String name):判断指定名字的http文件头是否存在,并返回布尔值。

  flushBuffer():强制将当前缓冲区的内容发送到客户端。

  addCookie(Cookie cookie):添加一个Cookie对象,用来保存客户端的用户信息,可以用request对象的getCookies()方法获得这个Cookie。

  out对象

  Out对象是一个输出流,用来向客户端输出数据,就是现实在浏览器的页面上,out对象用于各种数据的输出

  最常用的为out.print()和out.println()用来输出各种类型的数据

  out.close();关闭流

  out.getBufferSize();获得当前缓存区大小可以用下面的语句

  out.getRemaining();要获得剩余缓存区大小。

  config对象

  config对象是ServletConfig类的一个对象,存放着一些Servlet初始化信息,且只有在JSP页面范围内才有效。当一个servlet初始化时,容器把某些信息通过此对象传递给servlet其常用方法如下:

  getInitParameter(name):取得指定名字的Servlet初始化参数值。

  getInitParameterNames():取得Servlet初始化参数列表,返回一个枚举实例。

  getServletContext():取得Servlet上下文(ServletContext)。

  getServletName():取得生成的Servlet的名字。

  pageContext对象

  pageContext对象提供存取所有关于jsp程序执行时期所要用到的属性方法,她被封装成java.servlet.jsp.pageContext接口,它的创建和初始化都是容器来完成的,jsp页面里可以直接使用pageContext对象的句柄,pageContext对象的getXXX()、setXXX()和findXXX()方法可以用来根据不同的对象范围实现对这些对象的管理

  getAttribute():返回与指定范围内名称有关的变量或null,例如:

  forward(String relativeUrlPath):把页面重定向到另一个页面或者Servlet组件上。

  findAttribute():用来按照页面请求、会话以及应用程序范围的顺序实现对某个已经命名属性的搜索。

  getException():返回当前的exception对象。

  setAttribute():用来设置默认页面的范围或者指定范围之中的已命名对象。

  removeAttribute():用来删除默认页面范围或指定范围之中已命名的对象。

  page对象

  page对象代表JSP页面本身,只是this引用的一个代名词。对JSP页面创建者通常不可访问,所以一般很少用到该对象。

  exception对象

  要使用exception对象,则页面的isErrorPage必须指明为true。在Java中利用明为try/catch的关键字来处理异常情况,如果在JSP页面中没有捕捉到的异常,就会生成exception对象,并把这个exception对象传送到在page指令中设定的错误页面中,然后在错误提示页面中处理相应的exception对象

  getMessage():获取异常消息字符串

getLocalizeMessage():获取本地化语言的异常错误

printStackTrace():显示异常的栈跟踪轨迹

toString():返回关于异常错误的简单消息描述

fillInStackTrace():重写异常错误的栈执行轨迹

  application对象

  Application对象是用力保存java web应用程序中的使用的变量,所有用户不论何时皆可存取使用这些变量。Application对象最大的特点是没有所谓的生命周期的。生命周期是指客户端的浏览器是否被关闭,application对象都存在于主机上。直到服务器关闭后,application对象才失效。

  getAttribute(String name):返回由name指定名字的application对象的属性的值。返回值是一个Object对象,如果没有,则返回null。

  getAttributeNames():返回所有application对象属性的名字,结果集是一Enumeration类型的实例。

  getInitParameter(String name):返回由name指定名字的application对象的某个属性的初始值,如果没有参数,就返回null。

  getServerInfo():返回Servlet编译器当前版本的信息。

  setAttribute(String name, Object obj):将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个属性。

  removeAttribute(String name):删除一个指定的属性。

  request、session对象和application是有区别的,一次请求代表了一个request对象,一个客户端对应一个session对象,就是多个页面之间可以共享;而application对象,为多个应用程序保存信息,就是多个浏览器都是共享这个对象的。

1、包含错误的页面:error.jsp

<%@ page language="java" contentType="text/html;charset=gb2312" errorPage="ExceptionDemo01.jsp"%> <html> <head> <title>错误页面</title> </head> <body> <% int[] arr = {1,2,3}; out.println(arr[3]);
%> </body> </html>

注:error.jsp中arr[3]数组下表越界.需在page指令中指定errorPage的属性值为相应的异常处理程序。

2、异常处理页面:exceptionDo.jsp

<%@ page language="java" contentType="text/html;charset=gb2312" isErrorPage="true"%> <%@page import="java.io.PrintStream"%> <html> <head> <title>处理错误异常</title> </head> <body> <%=exception%><br>
<%=exception.getMessage()%><br> <%=exception.getLocalizedMessage()%><br> <% exception.printStackTrace(new java.io.PrintWriter(out)); %> </body> </html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: