JSP学习总结.docx

上传人:b****2 文档编号:3232546 上传时间:2023-05-05 格式:DOCX 页数:18 大小:23.82KB
下载 相关 举报
JSP学习总结.docx_第1页
第1页 / 共18页
JSP学习总结.docx_第2页
第2页 / 共18页
JSP学习总结.docx_第3页
第3页 / 共18页
JSP学习总结.docx_第4页
第4页 / 共18页
JSP学习总结.docx_第5页
第5页 / 共18页
JSP学习总结.docx_第6页
第6页 / 共18页
JSP学习总结.docx_第7页
第7页 / 共18页
JSP学习总结.docx_第8页
第8页 / 共18页
JSP学习总结.docx_第9页
第9页 / 共18页
JSP学习总结.docx_第10页
第10页 / 共18页
JSP学习总结.docx_第11页
第11页 / 共18页
JSP学习总结.docx_第12页
第12页 / 共18页
JSP学习总结.docx_第13页
第13页 / 共18页
JSP学习总结.docx_第14页
第14页 / 共18页
JSP学习总结.docx_第15页
第15页 / 共18页
JSP学习总结.docx_第16页
第16页 / 共18页
JSP学习总结.docx_第17页
第17页 / 共18页
JSP学习总结.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JSP学习总结.docx

《JSP学习总结.docx》由会员分享,可在线阅读,更多相关《JSP学习总结.docx(18页珍藏版)》请在冰点文库上搜索。

JSP学习总结.docx

JSP学习总结

1、两个JSP之间的信息交互

一个JSP中提交Form,指向另一个JSP,在第二个JSP中用

Stringstr=request.getParameter("表单中的控件名");来获取用户输入或选择项名称

通过用户选择的或输入做为数据库中查找依据来查询数据库,显示相应数据在第二个页面中。

2、JSP中9个内置组件

request用户端请求,此请求会包含来自GET/POST请求的参数

response网页传回用户端的回应

pageContext网页的属性是在这里管理

session与请求有关的会话期

applicationServlet正在执行的内容

out用来传送回应的输出

configServlet的构架部件

pageJSP网页本身

exception针对错误网页,未捕捉的例外

3、JSP语法

指令

<%@指令%>

声明

<%!

声明;%>

表达式

<%=表达式%>

代码段/脚本段

<%代码段;%>

注释

<%--注释--%>

<%@page

language="java"

extends="package.class"

import="{package.class|.*},..."

session="true|false"

buffer="none|8kb|sizekb"

autoFlush="true|false"

isThreadSafe="true|false"

info="text"

errorPage="relativeURL"

contentType="mimeType;charset=characterSet"|"text/html;charset=ISO-8859-1"

isErrorPage="true|false"

%>

<%@pageimport="java.util.*"%>

4、Request对象

  客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。

它是HttpServletRequest类的实例。

API:

JSP:

Request

方法

描述

objectgetAttribute(Stringname)

返回指定属性的属性值。

EnumerationgetAttributeNames()

返回所有可用属性名的枚举。

StringgetCharacterEncoding()

返回字符编码方式。

intgetContentLength()

返回请求体的长度(以字节数)。

StringgetContentType()

得到请求体的MIME类型

ServletInputStreamgetInputStream()

得到请求体中一行的二进制流

StringgetParameter(Stringname)

返回name指定参数的参数值

EnumerationgetParameterNames()

返回可用参数名的枚举

String[]getParameterValues(Stringname)

返回包含参数name的所有值的数组

StringgetProtocol()

返回请求用的协议类型及版本号

StringgetScheme()

返回请求用的计划名,如:

http.https及ftp等

StringgetServerName()

返回接受请求的服务器主机名

intgetServerPort()

返回服务器接受此请求所用的端口号

BufferedReadergetReader()

返回解码过了的请求体

StringgetRemoteAddr()

返回发送此请求的客户端IP地址

StringgetRemoteHost()

返回发送此请求的客户端主机名

voidsetAttribute(Stringkey,Objectobj)

设置属性的属性值

StringgetRealPath(Stringpath)

返回一虚拟路径的真实路径

      例子:

<%@pagecontentType="text/html;charset=gb2312"%>

<%request.setCharacterEncoding("gb2312");%>

request对象_例1

  

  

请求方式:

<%=request.getMethod()%>

请求的资源:

<%=request.getRequestURI()%>

请求用的协议:

<%=request.getProtocol()%>

请求的文件名:

<%=request.getServletPath()%>

请求的服务器的IP:

<%=request.getServerName()%>

请求服务器的端口:

<%=request.getServerPort()%>

客户端IP地址:

<%=request.getRemoteAddr()%>

客户端主机名:

<%=request.getRemoteHost()%>

表单提交来的值:

<%=request.getParameter("qwe")%>

<%@pagecontentType="text/html;charset=gb2312"%>

<%request.setCharacterEncoding("gb2312");%>

<%@pageimport="java.util.Enumeration"%>

  request对象_例2

   用户名:

  

   密码:

  

   

<%

Stringstr="";

if(request.getParameter("username")!

=null&&request.getParameter("userpass")!

=null){

   Enumerationenumt=request.getParameterNames();

   while(enumt.hasMoreElements()){

      str=enumt.nextElement().toString();

      out.println(str+":

"+request.getParameter(str)+"
");

   }

}

%>

<%@pagecontentType="text/html;charset=gb2312"%>

<%request.setCharacterEncoding("gb2312");%>

   request对象_例3

  擅长:

VC++ 

       JAVA 

       DELPHI 

       VB 

       

       

<%

if(request.getParameter("qwe")!

=null){

   for(inti=0;i

      out.println("cb"+i+":

"+request.getParameterValues("cb")[i]+"
");

   }

   out.println(request.getParameter("qwe"));

}

%>

5、Response对象

response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。

它是HttpServletResponse类的实例。

API:

JSP:

Response

方法

描述

StringgetCharacterEncoding()

返回响应用的是何种字符编码。

ServletOutputStreamgetOutputStream()

返回响应的一个二进制输出流。

PrintWritergetWriter()

返回可以向客户端输出字符的一个对象。

voidsetContentLength(intlen)

设置响应头长度。

voidsetContentType(Stringtype)

设置响应的MIME类型

sendRedirect(java.lang.Stringlocation)

重新定向客户端的请求

6、JSP中session的使用

Session处理多页面变量访问的应用

Session对象在第一JPS页面被装载时自动创建,并被关联到request对象上,session对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。

例子:

第一个JPS,做一个提交表单

请输入您的姓名:

第二个页面JSP,用来request来获取提交表单参数

<%@pagecontentType="text/html;charset=gb2312"%>

<%@pagelanguage="java"%>

<%!

Stringname="";%>

<%

name=request.getParameter("thename");

session.putValue("thename",name);//在session中存放一个thename的数据

%>

您的姓名是:

<%=name%>

您喜欢吃什么?

第三个页面JSP,来用Session来获取第二个页面的thename数据

<%@pagecontentType="text/html;charset=gb2312"%>

<%@pagelanguage="java"%>

<%!

Stringfood="";%>

<%

food=request.getParameter("food");

Stringname=(String)session.getValue("thename");//获取thename数据

%>

您的姓名是:

<%=name%>

您喜欢吃:

<%=food%>

Session一般在服务器上设置了一个30分钟的过期时间,当客户停止活动后自动失效。

API:

JPS:

Session

方法

描述

getID()

此方法返回唯一的标识,这些标识为每个session而产生。

GetCreationTime()

返回session被创建的时间。

GetLastAccessedTime()

返回session最后被客户发送的时间。

最小单位为千分之一秒。

GetMaxInactiveInterval()

返回总时间(秒),负值表示session永远不会超时。

getvalue()/getAttribute()

取一个session相联系的信息。

比如

session.setAttribute("str",newString("thisistest"));

putValue()/setAttribute()

提供一个关键词和一个值。

比如

ls_str=(String)session.getAttribute("str");

7、JSP中常遇到的6个错误

下面是:

这是在编写JSP程序过程,常见的问题。

可供读者参考。

 ①.对应String类型的对象使用println()方法时,如果对象为null,将打印null而不是引发NullPointerException,由此引用的问题是容易造成错觉,对于以后对字符串的操作容易引起问题。

 ②.引发NullPointerException异常,主要原因是没有对对象的存在性进行验证,在jsp编程中经常出现:

if(request.getParameter(“username”).equals(“xxx”))、out.println(session.getAttribute(“record”))等。

解决这个问题的方法是在使用前进行判空比较:

  if(request.getParameter(“username”)!

=null)

  {if(request.getParameter(“username”).

  equals(“xxx”))…}

  

  ③.引发NumberFormatException异常:

主要原因是将用户提交的内容转换为整数或者浮点数时用户输入了其它非法字符。

处理的主要方式是在需要进行转换的地方使用try/catch块捕获此异常然后提示用户输入合法数据。

  

  ④.引发StringIndexOutOfBoundsException异常:

主要原因是使用String的substring()、charAt()等方法,而字符串的长度不够,就会引发此异常;在字符串为null时也会引发NullPointerException。

解决的方法是判空,判断长度或者转换为字节数组。

考虑到这些操作很多,可以将之封装到javabean中。

  

  ⑤.引发NoClassDefFoundError错误,主要原因是类路径或者类文件放置错误,类文件的放置要符合服务器的要求。

  

  ⑥.引发java.lang.Error错误,主要原因是对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;所系统访问的外部资源出现异常情况。

  

  解决的方法是:

访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作;访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作;尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率。

3.session对象

    session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。

它是HttpSession类的实例.

序号方法说明

1  longgetCreationTime()返回SESSION创建时间

2  publicStringgetId()返回SESSION创建时JSP引擎为它设的惟一ID号

3  longgetLastAccessedTime()返回此SESSION里客户端最近一次请求时间

4  intgetMaxInactiveInterval()返回两次请求间隔多长时间此SESSION被取消(ms)

5  String[]getValueNames()返回一个包含此SESSION中所有可用属性的数组

6  voidinvalidate()取消SESSION,使SESSION不可用

7  booleanisNew()返回服务器创建的一个SESSION,客户端是否已经加入

8  voidremoveValue(Stringname)删除SESSION中指定的属性

9  voidsetMaxInactiveInterval()设置两次请求间隔多长时间此SESSION被取消(ms)

<%@pagecontentType="text/html;charset=gb2312"%>

<%@pageimport="java.util.*"%>

session对象_例1


   session的创建时间:

<%=session.getCreationTime()%>  <%=newDate(session.getCreationTime())%>

   session的Id号:

<%=session.getId()%>

   客户端最近一次请求时间:

<%=session.getLastAccessedTime()%>  <%=newjava.sql.Time(session.getLastAccessedTime())%>

   两次请求间隔多长时间此SESSION被取消(ms):

<%=session.getMaxInactiveInterval()%>

   是否是新创建的一个SESSION:

<%=session.isNew()?

"是":

"否"%>

<%

  session.putValue("name","霖苑编程");

  session.putValue("nmber","147369");

%>

<%

  for(inti=0;i

  out.println(session.getValueNames()[i]+"="+session.getValue(session.getValueNames()[i]));

%>

--返回的是从格林威治时间(GMT)1970年01月01日0:

00:

00起到计算当时的毫秒数-->

4.out对象

    out对象是JspWriter类的实例,是向客户端输出内容常用的对象

序号方法说明

1  voidclear()清除缓冲区的内容

2  voidclearBuffer()清除缓冲区的当前内容

3  voidflush()清空流

4  intgetBufferSize()返回缓冲区以字节数的大小,如不设缓冲区则为0

5  intgetRemaining()返回缓冲区还剩余多少可用

6  booleanisAutoFlush()返回缓冲区满时,是自动清空还是抛出异常

7  voidclose()关闭输出流

<%@pagecontentType="text/html;charset=gb2312"%>

out对象_例1:</p><p>缓存测试

<%@pagebuffer="1kb"%>

<%

  for(inti=0;i<2000;i++)

  out.println(i+"{"+out.getRemaining()+"}");

%>

缓存大小:

<%=out.getBufferSize()%>

剩余缓存大小:

<%=out.getRemaining()%>

自动刷新:

<%=out.isAutoFlush()%>

<%--out.clearBuffer();--%>

<%--out.clear();--%>

--缺省情况下:

服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上:

1.该JSP网页已完成信息的输出

2.输出缓冲区已满

3.JSP中调用了out.flush()或response.flushbuffer()

-->

5.page对象

    page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例

序号方法说明

1  classgetClass返回此Object的类

2  inthashCode()返回此Object的hash码

3  booleanequals(Objectobj)判断此Object是否与指定的Object对象相等

4  voidcopy(Objectobj)把此Object拷贝到指定的Object对象中

5  Objectclone()克隆此Object对象

6  StringtoString()把此Object对象转换成String类的对象

7  voidnotify()唤醒一个等待的线程

8  voidnotifyAll()唤醒所有等待的线程

9  voidwait(inttimeout)使一个线程处于等待直到timeout结束或被唤醒

10  voidwait()使一个线程处于等待直到被唤醒

11  voidenterMonitor()对Object加锁

12  voidexitMonitor()对Object开锁

6.applicat

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2