热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->java 
站内搜索:
JSP学习心得(2)
作者:徐春金 来源:计算机世界网 整理日期:2007-3-9

代码(2) 
demo.com.testdemo test = (demo.com.testdemo)request.getAttribute("test");  
if (test == null)  
{  
try  
{  
test = (demo.com.testdemo) java.beans.Beans.instantiate(getClass().getClassLoader(),"demo.com.testdemo");  
}  
catch (Exception _beanException)  

throw new weblogic.utils.NestedRuntimeException("cannot instantiate demo.com.testdemo",_beanException);  
}  
request.setAttribute("test", test);  
out.print("\r\n"); 
}  
out.print("\r\n\r\n\r\n"); 
test.print("this is use java bean");  
 
testdemo td= new testdemo(); 
td.print("this is use new"); 
五、JSP的调试  
JSP的调试比较麻烦,特别是当bean是在一个session中存在时,更加困难。得从好几个页面开始往里面走才行。通常是用out.println()或System.out.print()来打一大堆的信息来查问题。如果是用jbuilder做开发,它能直接调试JSP.不过更重要的是知道错误产生的原因及解决方法。下面对一些JSP编程常见错误进行分析。 
(1).java.lang.NullPointerException异常 
一般是对一个为NULL值的变量进行操作引起的.如下面的操作就会抛出java.lang.NullPointerException 
String a = null;  
a.substring(0,1);  
 
为避免这种异常,最好在对变量操作之前检查看它是否为NULL值.如: 
<% 
String ss=Session.getAttribute("NAME") 
if isnull(ss) 

 

else 

 

 
%> 
 
 
(2).JSP是用JAVA写的,所以它是大小写敏感的,用过其他编程语言的人最容易犯这个错误。另外在浏览器的地址栏中输入的访问JSP的地址也 
是区分大小写的.如http://localhost:7001/demo/t.jsp与http://localhost:7001/Demo/t.jsp是不一样的. 
 
(3).在jsp中判断字符串要使用compareTo方法,不要用==,因为在java中String变量不是一个简单的变量而是一个类实例,不同的方法会得到 不同的结果,如下所示:  
  1. 
  String str1="ABCD";  
  String str2="ABCD"; (或 String str2="AB"+"CD"; )  
  if (str1==str2)  
   out.print("yes");  
  else  
   out.print("no");  
  结果是"yes"。  
  
 
2.  
  String str1,str2,str3;  
  str1="ABCD";  
  str2="AB";  
  str3=str2+"CD";  
  if (str1==str3)  
   out.print("yes");  
  else  
   out.print("no");  
  结果是"no"。  
 
3. 
String str1=new String("ABCD");  
  String str2=new String("ABCD");  
  if (str1==str2)  
   out.print("yes");  
  else  
   out.print("no");  
  结果是"no"。  
 
4. 
String str1=new String("ABCD");  
  String str2=new String("ABCD");  
  if (str1.compareTo(str2)==0)  
   out.print("yes");  
  else  
   out.print("no");  
  结果是"yes"。  
 
 
(4)防止JSP或SERVLET中的输出被浏览器保存在缓冲区中: 
浏览器在默认情况下会把浏览过的网页保存在缓冲区中,在调试时,一般不希望这样.把下面的脚本加入程序中,就可 
防止JSP或SERVLET中的输出被浏览器保存在缓冲区中  
<% 
response.setHeader("Cache-Control","no-store"); //HTTP 1.1 
response.setHeader("Pragma","no-cache"); //HTTP 1.0 
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server 
%>  
在IE中也可通过设置实现:把/工具/INTERNET选项/常规/设置/的检察所存页面的较新版本,设为每次访问该页时都检查. 
六、COOKIE 
HTTP COOKIE实质是服务端与在客户端之间传送的普通HTTP头,可保存也可不保存在客户的硬盘上.如果保存,每一个文件大小不超过4K的文本文件.多个COOKIE可保存到同一个文件中. 如果从编程角度来看,在JSP中COOKIE就是JAVA提供的一个类.常用的方法如下所表示,因为客户端可能不接受COOKIE,所以建议不用它,改用SESSION等其他方式。 
public class cookie 
{  
public String getDomain() //返回该COOKIE的有效域 
public int getMaxAge() //返回该COOKIE的有效期,单位为秒 
public String getName() //返回该COOKIE的名称 
public String getPath() //返回该COOKIE的有效路径 
public boolean getSecure() //返回该COOKIE的安全设置 
public String getValue() //返回该COOKIE的值  
public void setDomain(java.lang.String pattern) //设置该COOKIE的有效域  
public void setMaxAge(int expiry) //设置该COOKIE的有效期,单位为秒  
public void setPath(java.lang.String uri) //设置该COOKIE的有效路径  
public void setSecure(boolean flag) //设置该COOKIE的安全设置 
public void setValue(java.lang.String newValue) //设置该COOKIE的值  

一个COOKIE包含以下五部分: 
1. NAME/VALUE对,设置该COOKIE的名字及它保存的值 
2. COOKIE通常和服务器相关,如果将域设为JAVA.SUN.COM,那么该COOKIE就和这个域相关,只对该网址起作用,当浏览该网址时,浏览器将把该 COOKIE的内容发送给服务端,COOKIE是作为HTTP HEADER的一部分被发送的,如果没有设置域,那么COOKIE就只和创建该COOKIE的服务器相关. 
3. 路径用于指定服务器上可以使用该COOKIE的文件所在的路径,它只对该网址下的该路径下的应用起作用."/"表示服务器上所有目录都可以使 用该COOKIE. 
4. COOKIE都有一个有效期,有效期默认值为-1,这表示没有保存该COOKIE,当该浏览器退出时,该COOKIE立即失效. 
5. 安全选项true/false,如果设置为true,那么在服务端与在客户端之间传送该COOKIE的内容时,采用HTTPS协议. 
如何检查一个客户端是否支持COOKIE的方法: 
用下面的方法写一个COOKIE到客户端,并确认成功 
try 

Cookie c = new Cookie("mycookie","COOKIE TEST"); 
response.addCookie(c); 

catch(Exception e) 

System.out.println(e); 

 
[1]  [2]  [3]  
相关文章