1、JSP学习总结1、 两个JSP之间的信息交互一个JSP中提交Form,指向另一个JSP,在第二个JSP中用 String str = request.getParameter(表单中的控件名);来获取用户输入或选择项名称通过用户选择的或输入做为数据库中查找依据来查询数据库,显示相应数据在第二个页面中。2、 JSP中9个内置组件request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application Servlet正在执行的内容 out 用来传送回应的
2、输出 config Servlet的构架部件 page JSP网页本身 exception 针对错误网页,未捕捉的例外3、 JSP语法指令声明表达式代码段/脚本段注释% pagelanguage=javaextends=package .classimport=package .class | .*, .session=true|falsebuffer=none|8kb|sizekbautoFlush=true|falseisThreadSafe=true|falseinfo=text errorPage=relativeURLcontentType=mimeType ; charset=ch
3、aracterSet |text/html ; charset=ISO-8859-1isErrorPage=true|false% page import=java.util.* %4、 Request 对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。API:JSP:Request方法描述object getAttribute(String name)返回指定属性的属性值。Enumeration getAttributeNames()返回所有可用属性名的枚举。String getCharacterE
4、ncoding()返回字符编码方式。int getContentLength()返回请求体的长度(以字节数)。String getContentType()得到请求体的MIME类型ServletInputStream getInputStream()得到请求体中一行的二进制流String getParameter(String name)返回name指定参数的参数值Enumeration getParameterNames()返回可用参数名的枚举String getParameterValues(String name)返回包含参数name的所有值的数组String getProtocol()
5、返回请求用的协议类型及版本号String getScheme()返回请求用的计划名,如:http.https及ftp等String getServerName()返回接受请求的服务器主机名int getServerPort()返回服务器接受此请求所用的端口号BufferedReader getReader()返回解码过了的请求体String getRemoteAddr()返回发送此请求的客户端IP地址String getRemoteHost()返回发送此请求的客户端主机名void setAttribute(String key,Object obj)设置属性的属性值String getReal
6、Path(String path)返回一虚拟路径的真实路径例子:request对象_例1 请求方式:请求的资源:请求用的协议:请求的文件名:请求的服务器的IP:请求服务器的端口:客户端IP地址:客户端主机名:表单提交来的值: request对象_例2 用户名: 密 码: %String str=;if(request.getParameter(username)!=null & request.getParameter(userpass)!=null) Enumeration enumt = request.getParameterNames()
7、; while(enumt.hasMoreElements() str=enumt.nextElement().toString(); out.println(str+:+request.getParameter(str)+); % request对象_例3 擅长:VC+ JAVA DELPHI VB %if(request.getParameter(qwe)!=null ) for(int i=0;irequest.getParameterValues(cb).length;i+) out.println(cb+i+:+request.getP
8、arameterValues(cb)i+); out.println(request.getParameter(qwe);% 5、 Response对象response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。API:JSP:Response方法描述String getCharacterEncoding()返回响应用的是何种字符编码。ServletOutputStream getOutputStream()返回响应的一个二进制输出流。PrintWriter getWriter()返回可以向客户端输出字符的一个对象。void
9、 setContentLength(int len)设置响应头长度。void setContentType(String type)设置响应的MIME类型sendRedirect(java.lang.String location)重新定向客户端的请求6、 JSP中session的使用Session处理多页面变量访问的应用Session对象在第一JPS页面被装载时自动创建,并被关联到request对象上,session对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。例子:第一个JPS,做一个提交表单 请输入您的姓名: 第二个页面JSP,用来request来获取提交表单参数 您的姓名
10、是: 您喜欢吃什么 ? 第三个页面JSP,来用Session来获取第二个页面的thename数据 您的姓名是: 您喜欢吃: Session一般在服务器上设置了一个30分钟的过期时间,当客户停止活动后自动失效。API: JPS:Session方法描述getID()此方法返回唯一的标识,这些标识为每个session而产生。GetCreationTime()返回session被创建的时间。GetLastAccessedTime()返回session最后被客户发送的时间。最小单位为千分之一秒。GetMaxInactiveInterval()返回总时间(秒),负值表示session永远不会超时。getv
11、alue()/getAttribute()取一个session相联系的信息。比如session.setAttribute(str,new String(this is test);putValue()/setAttribute()提供一个关键词和一个值。比如ls_str=(String)session.getAttribute(str);7、 JSP中常遇到的6个错误下面是:这是在编写JSP程序过程,常见的问题。可供读者参考。.对应String类型的对象使用println()方法时,如果对象为null,将打印null而不是引发NullPointerException,由此引用的问题是容易造成错
12、觉,对于以后对字符串的操作容易引起问题。.引发NullPointerException异常,主要原因是没有对对象的存在性进行验证,在jsp编程中经常出现:if (request.getParameter(“username”).equals(“xxx”)、out.println(session.getAttribute(“record”)等。解决这个问题的方法是在使用前进行判空比较:if (request.getParameter(“username”)!=null) if (request.getParameter(“username”).equals(“xxx”).引发NumberForm
13、atException异常:主要原因是将用户提交的内容转换为整数或者浮点数时用户输入了其它非法字符。处理的主要方式是在需要进行转换的地方使用try/catch块捕获此异常然后提示用户输入合法数据。.引发StringIndexOutOfBoundsException异常:主要原因是使用String的substring()、charAt()等方法,而字符串的长度不够,就会引发此异常;在字符串为null时也会引发NullPointerException。解决的方法是判空,判断长度或者转换为字节数组。考虑到这些操作很多,可以将之封装到javabean中。.引发NoClassDefFoundError错
14、误,主要原因是类路径或者类文件放置错误,类文件的放置要符合服务器的要求。.引发java.lang.Error错误,主要原因是对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;所系统访问的外部资源出现异常情况。解决的方法是:访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作;访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作;尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率。 3.session对象 session对象指的是客户端与服务器的一
15、次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.序号 方 法 说 明 1 long getCreationTime() 返回SESSION创建时间 2 public String getId() 返回SESSION创建时JSP引擎为它设的惟一ID号 3 long getLastAccessedTime() 返回此SESSION里客户端最近一次请求时间 4 int getMaxInactiveInterval() 返回两次请求间隔多长时间此SESSION被取消(ms) 5 String getValueNames
16、() 返回一个包含此SESSION中所有可用属性的数组 6 void invalidate() 取消SESSION,使SESSION不可用 7 boolean isNew() 返回服务器创建的一个SESSION,客户端是否已经加入 8 void removeValue(String name) 删除SESSION中指定的属性 9 void setMaxInactiveInterval() 设置两次请求间隔多长时间此SESSION被取消(ms) session对象_例1 session的创建时间: session的Id号: 客户端最近一次请求时间:
17、 两次请求间隔多长时间此SESSION被取消(ms): 是否是新创建的一个SESSION:% for(int i=0;i 4.out对象 out对象是JspWriter类的实例,是向客户端输出内容常用的对象序号 方 法 说 明 1 void clear() 清除缓冲区的内容 2 void clearBuffer() 清除缓冲区的当前内容 3 void flush() 清空流 4 int getBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0 5 int getRemaining() 返回缓冲区还剩余多少可用 6 boolean isAutoFlush() 返回缓冲区满时,
18、是自动清空还是抛出异常 7 void close() 关闭输出流 out对象_例1:缓存测试% for(int i=0;i缓存大小:剩余缓存大小:自动刷新: 5.page对象 page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例序号 方 法 说 明 1 class getClass 返回此Object的类 2 int hashCode() 返回此Object的hash码 3 boolean equals(Object obj) 判断此Object是否与指定的Object对象相等 4 void copy(Object obj) 把此Obj
19、ect拷贝到指定的Object对象中 5 Object clone() 克隆此Object对象 6 String toString() 把此Object对象转换成String类的对象 7 void notify() 唤醒一个等待的线程 8 void notifyAll() 唤醒所有等待的线程 9 void wait(int timeout) 使一个线程处于等待直到timeout结束或被唤醒 10 void wait() 使一个线程处于等待直到被唤醒 11 void enterMonitor() 对Object加锁 12 void exitMonitor() 对Object开锁 6.applicat
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2