??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99精品久久久久久水蜜桃,久久91精品国产91久久久,在线观看亚洲精品http://www.aygfsteel.com/dreamangel/category/24120.html如果你希望成功,以恒心ؓ良友Q以l验为参谋,以小心ؓ兄弟Q以希望为哨c?/description>zh-cnMon, 02 Sep 2013 13:04:31 GMTMon, 02 Sep 2013 13:04:31 GMT60JSP上传囄q自动生成羃略图http://www.aygfsteel.com/DreamAngel/archive/2013/09/02/403575.html飞翔天飞翔天Mon, 02 Sep 2013 12:43:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2013/09/02/403575.htmlhttp://www.aygfsteel.com/DreamAngel/comments/403575.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2013/09/02/403575.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/403575.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/403575.html<%@ page contentType="text/html;charset=gb2312" language="java" import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*,cn.oof.database.*,cn.oof.house.*"%>
<%
SmartUpload mySmartUpload 
=new SmartUpload();
long file_size_max=4000000;
String fileName2
="",ext="",testvar="";
String url
="uploadfile/images/";      //应保证在根目录中有此目录的存?br />//初始?/span>
mySmartUpload.initialize(pageContext);
//只允怸载此cL?/span>
try {
 mySmartUpload.setAllowedFilesList(
"jpg,gif");
//上蝲文g 
 mySmartUpload.upload();
catch (Exception e){
%>
  
<SCRIPT language=javascript>
  alert(
"只允怸?jpg?gifcd囄文g");
  window.location
='upfile.jsp';
  
</script>
<%
}
try{

    com.jspsmart.upload.File myFile 
= mySmartUpload.getFiles().getFile(0);
    
if (myFile.isMissing()){%>
   
<SCRIPT language=javascript>
   alert(
"请先选择要上传的文g");
   window.location
='upfile.jsp';
   
</script>
    
<%}
    
else{
      
//String myFileName=myFile.getFileName(); //取得上蝲的文件的文g?/span>
   ext= myFile.getFileExt();      //取得后缀?/span>
   int file_size=myFile.getSize();     //取得文g的大?nbsp; 
   String saveurl="";
   
if(file_size<file_size_max){
    
//更改文g名,取得当前上传旉的毫U数?/span>
    Calendar calendar = Calendar.getInstance();
    String filename 
= String.valueOf(calendar.getTimeInMillis()); 
    saveurl
=request.getRealPath("/")+url;
    saveurl
+=filename+"."+ext;          //保存路径
    myFile.saveAs(saveurl,mySmartUpload.SAVE_PHYSICAL);
    
//out.print(filename);
//-----------------------上传完成Q开始生成羃略图-------------------------    
    java.io.File file = new java.io.File(saveurl);        //d刚才上传的文?/span>
    String newurl=request.getRealPath("/")+url+filename+"_min."+ext;  //新的~略图保存地址
    Image src = javax.imageio.ImageIO.read(file);                     //构造Image对象
    float tagsize=200;
    
int old_w=src.getWidth(null);                                     //得到源图?/span>
    int old_h=src.getHeight(null);   
    
int new_w=0;
    
int new_h=0;                            //得到源图?/span>
    int tempsize;
    
float tempdouble; 
    
if(old_w>old_h){
     tempdouble
=old_w/tagsize;
    }
else{
     tempdouble
=old_h/tagsize;
    }
    new_w
=Math.round(old_w/tempdouble);
    new_h
=Math.round(old_h/tempdouble);//计算新图长宽
    BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(src,
0,0,new_w,new_h,null);       //l制~小后的?/span>
    FileOutputStream newimage=new FileOutputStream(newurl);          //输出到文件流
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);       
    encoder.encode(tag);                                               
//qJPEG~码
     newimage.close();    

   }
   
else{
    out.print(
"<SCRIPT language='javascript'>");
    out.print(
"alert('上传文g大小不能过"+(file_size_max/1000)+"K');");
    out.print(
"window.location='upfile.jsp;'");
    out.print(
"</SCRIPT>");
   }
  }
}
catch (Exception e){

e.toString();

}
%> 2、upload.htm
<html>
<head>
<title>请选择上传的图?/span></title>
</head> 
<body>
<table border="0" align="center" cellpadding="0" cellspacing="0">
  
<tr>
    
<td height="45" align="center" valign="middle"><form action="uploadimage.jsp" method="post" enctype="multipart/form-data" name="form1">
请选择上传的图?br />    
<input type="file" name="file">
<input type="submit" name="Submit" value="上传">
    
</form></td>
  
</tr>
</table>
</body>
</html>


飞翔天 2013-09-02 20:43 发表评论
]]>
jspSmartUpload上传下蝲全攻略(2012.8.30最新版Q?/title><link>http://www.aygfsteel.com/DreamAngel/archive/2012/08/30/386613.html</link><dc:creator>飞翔天</dc:creator><author>飞翔天</author><pubDate>Thu, 30 Aug 2012 09:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamAngel/archive/2012/08/30/386613.html</guid><wfw:comment>http://www.aygfsteel.com/DreamAngel/comments/386613.html</wfw:comment><comments>http://www.aygfsteel.com/DreamAngel/archive/2012/08/30/386613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamAngel/comments/commentRss/386613.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamAngel/services/trackbacks/386613.html</trackback:ping><description><![CDATA[     摘要: 安装?jspSmartUpload是由www.jspsmart.com|站开发的一个可免费使用的全功能的文件上传下载组Ӟ适于嵌入执行上传下蝲操作的JSP文g中。该lg有以下几个特点: 1、用简单。在JSP文g中仅仅书写三五行JAVA代码可以搞定文件的上传或下载,方便?2、能全程控制上传。利用jspSmartUploadlg提供的对象及其操作方法,可以获得全部上传文g的信息(包括文g...  <a href='http://www.aygfsteel.com/DreamAngel/archive/2012/08/30/386613.html'>阅读全文</a><img src ="http://www.aygfsteel.com/DreamAngel/aggbug/386613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamAngel/" target="_blank">飞翔天</a> 2012-08-30 17:26 <a href="http://www.aygfsteel.com/DreamAngel/archive/2012/08/30/386613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP获取CPU使用率、系l内存、虚拟机内存{情?不用JNI)http://www.aygfsteel.com/DreamAngel/archive/2012/08/24/386227.html飞翔天飞翔天Fri, 24 Aug 2012 08:48:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2012/08/24/386227.htmlhttp://www.aygfsteel.com/DreamAngel/comments/386227.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2012/08/24/386227.html#Feedback2http://www.aygfsteel.com/DreamAngel/comments/commentRss/386227.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/386227.html阅读全文

飞翔天 2012-08-24 16:48 发表评论
]]>
关于多标{浏览器中session׃n引发的问?/title><link>http://www.aygfsteel.com/DreamAngel/archive/2012/06/08/380306.html</link><dc:creator>飞翔天</dc:creator><author>飞翔天</author><pubDate>Fri, 08 Jun 2012 01:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamAngel/archive/2012/06/08/380306.html</guid><wfw:comment>http://www.aygfsteel.com/DreamAngel/comments/380306.html</wfw:comment><comments>http://www.aygfsteel.com/DreamAngel/archive/2012/06/08/380306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamAngel/comments/commentRss/380306.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamAngel/services/trackbacks/380306.html</trackback:ping><description><![CDATA[问题描述Q?br />当在标签a中用用户Ad后,再打开标签bQ进入登录界面用用户B再次q行d。那么标{a中的d信息变成了用户B的登录信息。这U情冉|CZ是用户希望得到的?br />两个标签共用一个session。后一个把前一个的同名attribute域覆盖了Q致使数据؜乱?<br /> <p>解决办法Q?br />办法一Q?br />目标Q实现多标签中登录多个用戯互不媄响?br />思\Q将用户d信息Q比如用L受登录ip{封装到一个对象,然后以一个唯一|比如d旉Qؓkey攑օHashMapQ再HashMap攑օsession?br />首先action中attribute的名字不能重复?/p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">  避免同一PC多浏览器H口不同账户qsession</span><span style="color: #008000"><br /></span><span style="color: #000000">Random random </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Random();<br />StringBuffer sid </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> StringBuffer();<br />sid </span><span style="color: #000000">=</span><span style="color: #000000"> sid.append(System.currentTimeMillis());   </span><span style="color: #008000">//</span><span style="color: #008000">  取系l时?br /></span><span style="color: #008000">//</span><span style="color: #008000">  加上10?-9随机数确保sid不重?/span><span style="color: #008000"><br /></span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000"><</span><span style="color: #000000"> </span><span style="color: #000000">10</span><span style="color: #000000">; i</span><span style="color: #000000">++</span><span style="color: #000000">) {<br />    sid </span><span style="color: #000000">=</span><span style="color: #000000"> sid.append(random.nextInt(</span><span style="color: #000000">10</span><span style="color: #000000">));<br />}<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">  把所有需要放qsession的attribute放进一个Mapbar<String, Object><br /></span><span style="color: #008000">//</span><span style="color: #008000">  一是便于el中取倹{二是便于统一理</span><span style="color: #008000"><br /></span><span style="color: #000000">Map sessionMap </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap(); <br />sessionMap.put(</span><span style="color: #000000">"</span><span style="color: #000000">session_urname</span><span style="color: #000000">"</span><span style="color: #000000">, urname);<br />session.setAttribute(sid.toString(), sessionMap);<br /><br />String rd </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">detail.jsp?sid=</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> sid.toString();<br />request.getRequestDispatcher(rd).forward(request, response);</span></div>然后在jsp中用EL取|<br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">${sessionScope[param.sid].session_urname}</span></div>lsession_urname加上一层MapQ看似多余,其实不然。有两点考虑Q一是便于EL取|如果有多个变量需要放到session里,如果不用MapQ势必要q样写:<br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">session.setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> sid.toString(), urname);<br />session.setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">pwd</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> sid.toString(), urpassword);</span></div>你也怼想EL中取值时加上前缀呗: <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">${sessionScope[</span><span style="color: #000000">'</span><span style="color: #000000">name</span><span style="color: #000000">'</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> param.sid]}</span></div>很可惜ELq不支持+L字符串连接操作,q样写就不能用EL了;二是把所有需要放入session的变量都攑օMap里便于管理,特别是在字段很多的情况下?br />办法二:<br />目标Q退而求其次Q打开新标{Nq行dQ再切换到旧标签|Q提C页面已失效。如果打开新标{NQ地址栏中直接输入主页面地址Q则以同一用户q行d?个标{N的内定w有效?br />思\Q服务器在创建session时会为每个session分配一个唯一的sessionIdQ因此我们可以根据它来想办法。首先定义一个public static cd的HashMap:checkMap。假设我的登录页面ؓlogin.jspQ主面为main.jsp。后台执行登录检查的Ҏ为checkLogin()。当执行d查的时候: <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">获得sessionId</span><span style="color: #008000"><br /></span><span style="color: #000000">String sessionId </span><span style="color: #000000">=</span><span style="color: #000000"> session.getId;<br /></span><span style="color: #008000">//</span><span style="color: #008000">标示面是否有效的?/span><span style="color: #008000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> checkVal;<br /></span><span style="color: #0000ff">if</span><span style="color: #000000">(checkMap.containsKey(sessionId)) {<br /> checkVal </span><span style="color: #000000">=</span><span style="color: #000000"> (Integer)checkMap.get(sessionId) </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />} </span><span style="color: #0000ff">else</span><span style="color: #000000"> {<br />  checkVal </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />}<br />checkMap.put(sessionId,checkVal);</span></div> <p>当登录成功,q入main.jsp面Ӟ首先ҎsessionId获得checkValq存入一个页面的变量。下面就开始判断了Q每ơ标{N获得焦点Ӟwindow.onfocusQ就页面中的变量与后台ҎsessionId从checkMap中得到的checkValq行比较Q如果不惛_Q说明该面已经失效Q提CZ息ƈ关闭该页面?br />但是仍有一个问题,window.onfocus不知道ؓ什么在面获得焦点时会执行很多?<br /></p><img src ="http://www.aygfsteel.com/DreamAngel/aggbug/380306.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamAngel/" target="_blank">飞翔天</a> 2012-06-08 09:33 <a href="http://www.aygfsteel.com/DreamAngel/archive/2012/06/08/380306.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp导出为office文http://www.aygfsteel.com/DreamAngel/archive/2011/12/23/367050.html飞翔天飞翔天Fri, 23 Dec 2011 01:27:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2011/12/23/367050.htmlhttp://www.aygfsteel.com/DreamAngel/comments/367050.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2011/12/23/367050.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/367050.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/367050.html导出word文

W一步:~辑好word模版Q然后另存ؓ*.htmQ比如:liukun.htm?br />技巧:在需要填写数据的地方最好预填入一些易识别的数据,q样方便后面填写jsp代码?br />W二步:把htm后缀改ؓjspQ比如:liukun.jsp?br />W三步:djsp的头Q比如:
<%@page contentType="application/msword;charset=GBK"%>
如果有importQ也要在q里导入?br />技巧:application/msword;q个参数很重要,有了q个参数Q调用这个页面时Q就会把面内容存ؓword。当Ӟ本地必须安装office?br />

导出Excel文

只需要在jsp的最上面加上一句话

<%
   response.reset(); 
   response.setContentType(
"application/vnd.ms-excel;charset=GBK");
%>

可以将|页的内容导ZؓExcel?br />目前l出的例子ؓ了方便v见,是使用了纯_的静态页面,一个table其中有一行是标题Q一行是内容Q但是实际用中不可能这么简单,都是保持静态的内容Q如果需要保存的内容是从数据库中取出Q则只需要@环遍历取出的内容Q添加行p了,假如从数据库中取出的数据存入UserList中,可以使用struts标签q行遍历如下Q?/p>

<table class="common1" cellpadding="5" cellspacing="1" align="center" >
        
<tr>
          
<td class=formtitle colspan="4"><CENTER> 清单</CENTER> </td>
        
</tr>
        
<tr>
          
<td class=formtitle align="center" nowrap style="width:13%">姓名</td>
          
<td class=formtitle align="center" nowrap style="width:13%">q龄</td>
          
<td class=formtitle align="center" nowrap style="width:13%">性别</td>
          
<td class=formtitle align="center" nowrap style="width:13%">住址</td>
        
</tr>
        
<logic:present name="UserList">
            
<logic:iterate id="user" name="UserList">
              
<tr>
                 
<td align="center" nowrap style="width:13%">
                     
<bean:write name = "user",property="name"/>
                 
</td>
                 
<td align="center" nowrap style="width:13%">
                     
<bean:write name = "user",property="age"/>
                 
</td>
                
<td align="center" nowrap style="width:13%">
                     
<bean:write name = "user",property="sex"/>
                
</td>
                
<td align="center" nowrap style="width:13%">
                     
<bean:write name = "user",property="address"/>
                
</td>
              
</tr>
            
</logic:iterate>
        
</logic:present>
</table>

 下面是完整的例子Q新Z个index.jspQ里面只需要一个超链接<a href = 'DownLoadExcel.jsp'>导出Excel</a>
再新Z个DownLoadExcel.jspQ内容如下:

<%
   response.reset(); 
   response.setContentType(
"application/vnd.ms-excel;charset=GBK");
%>

<html>
    
<head>

        
<title>刷卡消费情况</title>

        
<style type="text/css">
            table.common1 
{
          width
: 100%;
                  font-size
: 9pt;
                  style-align
: center;
                  background-color
: #ffffff;
            
}
            td.formtitle 
{
          font-size
: 9pt;
                    background
:#a480b2;
                    color
:#ffffff;
                    height
:30px;
                    text-align
: center;
        
}
        
</style>

    
</head>

    
<body>

    
<form name="fm" method="post" >
      
<table class="common1" cellpadding="5" cellspacing="1" align="center" >
        
<tr>
          
<td class=formtitle colspan="4"><CENTER> 清单</CENTER> </td>
        
</tr>
        
<tr>
          
<td class=formtitle align="center" nowrap style="width:13%">姓名</td>
          
<td class=formtitle align="center" nowrap style="width:13%">q龄</td>
          
<td class=formtitle align="center" nowrap style="width:13%">性别</td>
          
<td class=formtitle align="center" nowrap style="width:13%">家庭住址</td>
        
</tr>
        
<tr>
          
<td align="center" nowrap style="width:13%">张三</td>
          
<td align="center" nowrap style="width:13%">25</td>
          
<td align="center" nowrap style="width:13%">?/span></td>
          
<td align="center" nowrap style="width:13%">北京中关?/span></td>
        
</tr>
     
</table>
    
</form>

    
</body>

</html>

 

部v好程序,在index.jsp中点击超链接可以完成导ZQ?img src ="http://www.aygfsteel.com/DreamAngel/aggbug/367050.html" width = "1" height = "1" />

飞翔天 2011-12-23 09:27 发表评论
]]>
JSP|站讉K计数?/title><link>http://www.aygfsteel.com/DreamAngel/archive/2011/11/18/364242.html</link><dc:creator>飞翔天</dc:creator><author>飞翔天</author><pubDate>Fri, 18 Nov 2011 07:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamAngel/archive/2011/11/18/364242.html</guid><wfw:comment>http://www.aygfsteel.com/DreamAngel/comments/364242.html</wfw:comment><comments>http://www.aygfsteel.com/DreamAngel/archive/2011/11/18/364242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamAngel/comments/commentRss/364242.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamAngel/services/trackbacks/364242.html</trackback:ping><description><![CDATA[<p>counter.java d文g的一个beanQ用于网站读写txt格式计数?/p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">package</span><span style="color: #000000"> fiombean;<br /><br /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.</span><span style="color: #000000">*</span><span style="color: #000000">;<br /><br /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Counter </span><span style="color: #0000ff">extends</span><span style="color: #000000"> Object {<br />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String currentRecord </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000"> 保存文本的变?/span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">private</span><span style="color: #000000"> BufferedReader file; </span><span style="color: #008000">//</span><span style="color: #008000"> BufferedReader对象Q用于读取文件数?/span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String path;</span><span style="color: #008000">//</span><span style="color: #008000"> 文g完整路径?/span><span style="color: #008000"><br /></span><span style="color: #000000"><br />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Counter() {<br />    }<br /><br />    </span><span style="color: #008000">//</span><span style="color: #008000"> ReadFileҎ用来d文gfilePath中的数据Qƈq回q个数据</span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String ReadFile(String filePath) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> FileNotFoundException {<br />        path </span><span style="color: #000000">=</span><span style="color: #000000"> filePath;<br />        </span><span style="color: #008000">//</span><span style="color: #008000"> 创徏新的BufferedReader对象</span><span style="color: #008000"><br /></span><span style="color: #000000">        file </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BufferedReader(</span><span style="color: #0000ff">new</span><span style="color: #000000"> FileReader(path));<br />        String returnStr </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />        </span><span style="color: #0000ff">try</span><span style="color: #000000"> {<br />            </span><span style="color: #008000">//</span><span style="color: #008000"> d一行数据ƈ保存到currentRecord变量?/span><span style="color: #008000"><br /></span><span style="color: #000000">            currentRecord </span><span style="color: #000000">=</span><span style="color: #000000"> file.readLine();<br />        } </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (IOException e) {</span><span style="color: #008000">//</span><span style="color: #008000"> 错误处理</span><span style="color: #008000"><br /></span><span style="color: #000000">            System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">d数据错误.</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        }<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (currentRecord </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />            </span><span style="color: #008000">//</span><span style="color: #008000"> 如果文g为空</span><span style="color: #008000"><br /></span><span style="color: #000000">            returnStr </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">没有M记录</span><span style="color: #000000">"</span><span style="color: #000000">;<br />        </span><span style="color: #0000ff">else</span><span style="color: #000000"> {</span><span style="color: #008000">//</span><span style="color: #008000"> 文g不ؓI?/span><span style="color: #008000"><br /></span><span style="color: #000000">            returnStr </span><span style="color: #000000">=</span><span style="color: #000000"> currentRecord;<br />        }<br />        </span><span style="color: #008000">//</span><span style="color: #008000"> q回d文g的数?/span><span style="color: #008000"><br /></span><span style="color: #000000">        </span><span style="color: #0000ff">return</span><span style="color: #000000"> returnStr;<br />    }<br /><br />    </span><span style="color: #008000">//</span><span style="color: #008000"> ReadFileҎ用来数据counter+1后写入到文本文gfilePath?br />    </span><span style="color: #008000">//</span><span style="color: #008000"> 以实现计数增长的功能</span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> WriteFile(String filePath, String counter)<br />            </span><span style="color: #0000ff">throws</span><span style="color: #000000"> FileNotFoundException {<br />        path </span><span style="color: #000000">=</span><span style="color: #000000"> filePath;<br />        </span><span style="color: #008000">//</span><span style="color: #008000"> counter转换为intcdq加一</span><span style="color: #008000"><br /></span><span style="color: #000000">        </span><span style="color: #0000ff">int</span><span style="color: #000000"> Writestr </span><span style="color: #000000">=</span><span style="color: #000000"> Integer.parseInt(counter) </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />        </span><span style="color: #0000ff">try</span><span style="color: #000000"> {<br />            </span><span style="color: #008000">//</span><span style="color: #008000"> 创徏PrintWriter对象Q用于写入数据到文g?/span><span style="color: #008000"><br /></span><span style="color: #000000">            PrintWriter pw </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> PrintWriter(</span><span style="color: #0000ff">new</span><span style="color: #000000"> FileOutputStream(filePath));<br />            </span><span style="color: #008000">//</span><span style="color: #008000"> 用文本格式打印整数Writestr</span><span style="color: #008000"><br /></span><span style="color: #000000">            pw.println(Writestr);<br />            </span><span style="color: #008000">//</span><span style="color: #008000"> 清除PrintWriter对象</span><span style="color: #008000"><br /></span><span style="color: #000000">            pw.close();<br />        } </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (IOException e) {<br />            </span><span style="color: #008000">//</span><span style="color: #008000">错误处理</span><span style="color: #008000"><br /></span><span style="color: #000000">            System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">写入文g错误</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> e.getMessage());<br />        }<br />    }<br />}</span></div> <p> Counter.jsp文g </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000"><</span><span style="color: #000000">jsp:useBean id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">counter</span><span style="color: #000000">"</span><span style="color: #000000"> scope</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">session</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">fiombean.Counter</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">/></span><span style="color: #000000"><br /></span><span style="color: #000000"><%</span><span style="color: #000000"><br />    </span><span style="color: #008000">//</span><span style="color: #008000">调用counter对象的ReadFileҎ来读取文件count.txt中的计数</span><span style="color: #008000"><br /></span><span style="color: #000000">    String url </span><span style="color: #000000">=</span><span style="color: #000000"> request.getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">count.txt</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    String count </span><span style="color: #000000">=</span><span style="color: #000000"> counter.ReadFile(url);<br />    </span><span style="color: #008000">//</span><span style="color: #008000">调用counter对象的ReadFileҎ来将计数器加一后写入到文gcount.txt?/span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (session.isNew())<br />        counter.WriteFile(url, count);<br /></span><span style="color: #000000">%></span><span style="color: #000000"><br />您是W?/span><span style="color: #000000"><</span><span style="color: #000000">font color</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">red</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000"><%=</span><span style="color: #000000">count</span><span style="color: #000000">%></span><span style="color: #000000"> </span><span style="color: #000000"></</span><span style="color: #000000">font</span><span style="color: #000000">></span><span style="color: #000000">位访问?br /></span></div> <p> 注意Q在|站根目录下建立一个count.txt文gQ初始数字ؓ0 ?/p><img src ="http://www.aygfsteel.com/DreamAngel/aggbug/364242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamAngel/" target="_blank">飞翔天</a> 2011-11-18 15:07 <a href="http://www.aygfsteel.com/DreamAngel/archive/2011/11/18/364242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp实现数据备䆾q原Q用定时器Q?/title><link>http://www.aygfsteel.com/DreamAngel/archive/2011/11/04/362720.html</link><dc:creator>飞翔天</dc:creator><author>飞翔天</author><pubDate>Fri, 04 Nov 2011 14:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamAngel/archive/2011/11/04/362720.html</guid><wfw:comment>http://www.aygfsteel.com/DreamAngel/comments/362720.html</wfw:comment><comments>http://www.aygfsteel.com/DreamAngel/archive/2011/11/04/362720.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamAngel/comments/commentRss/362720.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamAngel/services/trackbacks/362720.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.aygfsteel.com/DreamAngel/archive/2011/11/04/362720.html'>阅读全文</a><img src ="http://www.aygfsteel.com/DreamAngel/aggbug/362720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamAngel/" target="_blank">飞翔天</a> 2011-11-04 22:32 <a href="http://www.aygfsteel.com/DreamAngel/archive/2011/11/04/362720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp常见问题Qȝ中)http://www.aygfsteel.com/DreamAngel/archive/2011/11/02/362564.html飞翔天飞翔天Wed, 02 Nov 2011 12:12:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2011/11/02/362564.htmlhttp://www.aygfsteel.com/DreamAngel/comments/362564.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2011/11/02/362564.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/362564.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/362564.htmltomcat提示jdbc出现ResultSet can not re-read row data for column错误
解决Ҏ如下Q?br />Q?Q如果采用jdbc-odbc驱动Q那么就必须按照查询序来一ơ读取(不论有没有image或textcdQ?br />Q?Q如果采用微软提供的ms sql server jdbc driverQ如果查询语句中Q不存在image或textcd字段Q那么可以按照无序获取?br />Q?Q如果采用微软提供的ms sql server jdbc driverQ如果查询语句中Q存在image或textcd字段Q那么就必须按照序dQ否则就会报告Driver]ResultSet can not re-read row data for column之类的错误?br />Q?Q如果想不查询语句中有没有image或textcd字段Q都可以不按照顺序获取,或重复获取。那么就必须更换驱动Q改用第三方的?
SQL Server 2000 :Underlying input stream returned zero bytes
解决办法Q?br />1、将Textcd的字D增加默认?"
2、在JavaBean中增加处理,保在Textcd的字D中不会保存Null?


如何能够讉KWEB-INF文g夹下的页?br />在WEB-INF下会有一个web.xml文gQ此文g是属于整个web站点的配|文Ӟ只需要在此配|就可以了?br />WEB-INF里面需要访问的文g为login.jspQ打开web.xml ?lt;/web-app>上面加入一下代码: 
<servlet>
        
<servlet-name>xyy</servlet-name>   -->此行的xyy是用于标识的和下面的一?br />        <jsp-file>/WEB-INF/login.jsp</jsp-file>   -->需要访问的面的\?br /></servlet>

<servlet-mapping>
        
<servlet-name>xyy</servlet-name>    -->此行的xyy是用于标识的和上面的一?br />         <url-pattern>/login</url-pattern> ---->此行?login时是需要访问的面的映名U?br /></servlet-mapping>

修改之后重新启动服务器,pd到该文g了?


d数据库完整日期时?/strong>
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(rs.getTimestamp("time")); 


ClientAbortException 异常解决办法
ClientAbortException  Caused by: java.net.SocketException: Connection reset by peer: socket write error 的原因是׃处理httpq接Ӟ正在输出内容Ӟ用户关闭了IEQ会出现一?ClientAbortException"Q属于I/O处理中出现的一个异常,应用服务器应该会捕捉?
Connection reset by peer的原因:
l常出现的Connection reset by peer: 原因可能是多斚w的,不过更常见的原因是:
①Q服务器的ƈ发连接数过了其承蝲量,服务器会其中一些连接Down掉;
②Q客户关掉了览器,而服务器q在l客L发送数据;
③Q浏览器端按了Stop
很多人都说是客户端造成的,没有办法控制Q而且后台会记录这个异常,日志也会疯狂爆满Q时间长?肯定会DOWN掉的?br />如果是原?#9312;Q而且该异常的日志U别为warnQ不影响正常q行Q只要提高服务器的日志别即可?
Character decoding failed. Parameter skipped.java.io.CharConversionException: isHexDigit.
escapse在中文编码时会出现的问题?br />解决ҎQ?br />客户端传?br />
var url = "b.jsp?name=" +u_name;
url
=encodeURI(url);
服务端获?nbsp;
String name=request.getParameter("name");
name 
= java.net.URLDecoder.decode(name,"UTF-8");

 



飞翔天 2011-11-02 20:12 发表评论
]]>
jsp中UTF-8q解决Ҏhttp://www.aygfsteel.com/DreamAngel/archive/2011/10/26/362122.html飞翔天飞翔天Wed, 26 Oct 2011 12:46:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2011/10/26/362122.htmlhttp://www.aygfsteel.com/DreamAngel/comments/362122.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2011/10/26/362122.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/362122.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/362122.html一、确保jsp面?lt;%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>?lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8">~码为UTF-8Q?/font>

二、post方式

配置字符qo?/p>

package com.util.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
* 采用Filterl一讄处理字符?nbsp;
@author songfeng
@version 1.0
* Apr 1, 2010
*/

public class CharsetEncodingFilter implements Filter {

private String encoding = "UTF-8";

public void destroy() {
}


public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
    FilterChain filterChain) 
throws IOException, ServletException {
   servletRequest.setCharacterEncoding(
this.encoding);
   filterChain.doFilter(servletRequest, servletResponse);
}


public void init(FilterConfig filterConfig) throws ServletException {
   
this.encoding = filterConfig.getInitParameter("encoding");
}

}

配置web.xml

<filter>
   
<filter-name>CharsetEncodingFilter</filter-name>
   
<filter-class>com.util.filter.CharsetEncodingFilter</filter-class>
   
<init-param>
    
<param-name>encoding</param-name>
    
<param-value>UTF-8</param-value>
   
</init-param>
</filter>

<filter-mapping>
   
<filter-name>CharsetEncodingFilter</filter-name>
   
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

<filter-mapping>
   
<filter-name>CharsetEncodingFilter</filter-name>
   
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>

三、getҎ

1、配|tomcat中server.xml

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" disableUploadTimeout="true" URIEncoding="UTF-8"/>

2、在要传递参数的时候进行{码(如不转码奇数中文字符最后一个字Wؕ码)

Q?QJSP传值方式:
跌{:
<a href=info.jsp?info="<%= java.net.URLEncoder.encode("中文汉字","GBK") %>">跌{</a>
接收?br /><%
     String info_str = new String(request.getParameter("info"),"ISO8859-1");
     out.print(info_str); //输出接收?br />%>
Q?QJS传值方式:
先用encodeURI()q行~码
var p = "你好吗?";
var url = "aaa.jsp?param=" + encodeURI(p);
然后在服务器端要解码
<%
String param = request.getParameter("p");
param = new String(param.getBytes("ISO-8859-1"),"UTF-8");
%>
四、ajaxq

在要传递中文参数的js中{码:encodeURIComponent(“×××”)



飞翔天 2011-10-26 20:46 发表评论
]]>
web.xml不认taglib解决办法http://www.aygfsteel.com/DreamAngel/archive/2011/10/23/361826.html飞翔天飞翔天Sun, 23 Oct 2011 12:49:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2011/10/23/361826.htmlhttp://www.aygfsteel.com/DreamAngel/comments/361826.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2011/10/23/361826.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/361826.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/361826.html<taglib>
  
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
  
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
如果头是q样?lt;web-app xmlns="<jsp-config>
<taglib>
  
<taglib-uri>/WEB-INF/validator-user.tld</taglib-uri>
  
<taglib-location>/WEB-INF/validator-user.tld</taglib-location>
</taglib>
</jsp-config>

飞翔天 2011-10-23 20:49 发表评论
]]>
一些页面自动蟩转的实现http://www.aygfsteel.com/DreamAngel/archive/2009/03/31/263057.html飞翔天飞翔天Tue, 31 Mar 2009 02:41:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2009/03/31/263057.htmlhttp://www.aygfsteel.com/DreamAngel/comments/263057.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2009/03/31/263057.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/263057.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/263057.html功能Q?U后Q自动蟩转到同目录下?2view.html文g
 
1Qhtml的实?br />
<head>
<meta http-equiv="refresh" content="5;url=02view.html">
</head>

优点Q简?br /> ~点QStruts Tiles中无法?/div>
 
2Qjavascript的实?br />
<script language="javascript" type="text/javascript">
   setTimeout(
"javascript:location.href='02view.html'"5000); 
</script>

优点Q灵z,可以l合更多的其他功?br /> ~点Q受C同浏览器的媄?/div>
 
3Q结合了倒数的javascript实现QIEQ?br />
<span id="totalSecond">5</span>

<script language="javascript" type="text/javascript">
var second = totalSecond.innerText;
setInterval(
"redirect()"1000);
function redirect(){ 
totalSecond.innerText
=--second; 
if(second<0) location.href='02view.html';
}
</script>

优点Q更人性化
~点Qfirefox不支持(firefox不支持span、div{的innerText属性)
 
3'Q结合了倒数的javascript实现QfirefoxQ?br />
<script language="javascript" type="text/javascript">
    
var second = document.getElementById('totalSecond').textContent;
    setInterval(
"redirect()"1000);
    
function redirect()
    {
        document.getElementById('totalSecond').textContent 
= --second;
        
if (second < 0) location.href = '02view.html';
    }
</script>

4Q解决Firefox不支持innerText的问?br />
<span id="totalSecond">5</span>

<script language="javascript" type="text/javascript">
if(navigator.appName.indexOf("Explorer"> -1){
    document.getElementById('totalSecond').innerText 
= "my text innerText";
else{
    document.getElementById('totalSecond').textContent 
= "my text textContent";
}
</script>

5Q整?Q和3'Q?br />
<span id="totalSecond">5</span>

<script language="javascript" type="text/javascript">
    
var second = document.getElementById('totalSecond').textContent;

    
if (navigator.appName.indexOf("Explorer"> -1)
    {
        second 
= document.getElementById('totalSecond').innerText;
    } 
else
    {
        second 
= document.getElementById('totalSecond').textContent;
    }


    setInterval(
"redirect()"1000);
    
function redirect()
    {
        
if (second < 0)
        {
            location.href 
= '02view.html';
        } 
else
        {
            
if (navigator.appName.indexOf("Explorer"> -1)
            {
                document.getElementById('totalSecond').innerText 
= second--;
            } 
else
            {
                document.getElementById('totalSecond').textContent 
= second--;
            }
        }
    }
</script>


飞翔天 2009-03-31 10:41 发表评论
]]>JSP内徏对象http://www.aygfsteel.com/DreamAngel/archive/2009/03/26/262033.html飞翔天飞翔天Thu, 26 Mar 2009 02:15:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2009/03/26/262033.htmlhttp://www.aygfsteel.com/DreamAngel/comments/262033.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2009/03/26/262033.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/262033.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/262033.html?out - javax.servlet.jsp.jspWriter
   out对象用于把结果输出到|页上?/font>

ҎQ?br /> 1. void clear() ;
   清除输出~冲区的内容Q但是不输出到客L?/font>

2. void clearBuffer() ;
   清除输出~冲区的内容Qƈ输出到客L?/font>

3. void close() ;
   关闭输出,清除所有内宏V?/font>

4. void flush() ;
   输出~冲区里面的数据?/font>

5. int getBufferSize() ;
   获取以kb为单位的目前~冲区大?/font>

6. int getRemaining() ;
   获取以kb为单位的~冲Z未被占用的空间大?/font>

7. boolean isAutoFlush() ;
   是否自动h~冲区?/font>

8. void newLine() ;
   输出一个换行字W?/font>

9. void print( boolean b ) ;
   void print( char c ) ;
   void print( char[] s ) ;
   void print( double d ) ;
   void print( float f ) ;
   void print( int i ) ;
   void print( long l ) ;
   void print( Object obj ) ;
   void print( String s ) ;
   指定类型的数据输出到Http,不换行?/font>

10. void println( boolean b ) ;
    void println( char c ) ;
    void println( char[] s ) ;
    void println( double d ) ;
    void println( float f ) ;
    void println( int i ) ;
    void println( long l ) ;
    void println( Object obj ) ;
    void println( String s ) ;
    指定类型的数据输出到Http,q输Z个换行符?br />    
11. Appendable append( char c ) ;
    Appendable append( CharSequence cxq, int start, int end ) ;
    Appendable append( CharSequence cxq ) ;
    一个字W或者实CCharSequence接口的对象添加到输出的后面?/font>

成员Q?br /> int DEFAULT_BUFFER = 0    - ~省~冲区大?br /> int NO_BUFFER = -1        - writer是否处于~冲输出状?br /> int UNBOUNDED_BUFFER = -2 - 是否限制~冲区大?/font>


?request - javax.servlet.http.HttpServletRequest
   request对象包含所有请求的信息Q如h的来源、标头、cookies和请求相关的参数值等?/font>

ҎQ?br /> 1. Object getAttribute( String name ) ;
   q回由name指定的属性|该属性不存在时返回null?/font>

2. Enumeration getAttributeNames() ;
   q回request对象的所有属性名U的集合?/font>

3. String getAuthType() ;
   q回用来保护servlet的认证方法的名称Q未受保护时q回null?/font>

4. String getCharacterEncoding() ;
   q回h中的字符~码ҎQ可以在response对象中设|?/font>

5. int getContentLength() ;
   q回h的BODY的长度,不能定长度时返?1。可以在response中设|?/font>

6. String getContentType() ;
   q回在response中定义的内容cd?/font>

7. String getContentPath() ;
   q回h的\径?/font>

8. Cookie[] getCookies() ;
   q回客户端所有的Cookie的数l?/font>

9. Enumeration getHeaderNames() ;
   q回所有HTTP头的名称的集合?/font>

10. Enumeration getHeaders( String name ) ;
    q回指定HTTP头的所有值的集合?/font>

11. String getHeader( String name ) ;
    q回指定名称的HTTP头的信息?/font>

12. long getDateHeader( String name ) ;
    q回指定名称的Datacd的HTTP头的信息?/font>

13. int getIntHeader( String name ) ;
    q回指定名称的Intcd的HTTP头的信息?/font>

14. ServletInputStream getInputStream() ;
    q回h的输入流?/font>

15. Locale getLocale() ;
    q回当前늚Locale对象Q可以在response中设定?/font>

16. Enumeration getLocales() ;
    q回h中所有的Locale对象的集合?/font>

17. String getLocalName() ;
    获取响应h的服务器端主机名?/font>

18. String getLocalAddr() ;
    获取响应h的服务器端地址?/font>

19. int getLocalPort() ;
    获取响应h的服务器端端?/font>

20. String getMethod() ;
    获取客户端向服务器端发送请求的Ҏ(GET、POST)?/font>

21. String getParameter( String name ) ;
    获取客户端发送给服务器端的参数倹{?/font>

22. Map getParameterMap() ;
    该方法返回包含请求中所有参数的一个Map对象?/font>

23. Enumeration getParameterNames() ;
    q回h中所有参数的集合?/font>

24. String[] getParameterValues( String name ) ;
    获得h中指定参数的所有倹{?/font>

25. String getQueryString() ;
    q回getҎ传递的参数字符Ԍ该方法不分解出单独的参数?/font>

26. String getPathInfo() ;
    取出h中处于ServletPath和QueryString之间的额外信息?/font>

27. String getPathTranslated() ;
    q回用getPathInfo()Ҏ取得的\径信息的实际路径?/font>

28. String getProtocol() ;
    q回h使用的协议。可以是HTTP1.1或者HTTP1.0?/font>

29. BufferedReader getReader() ;
    q回h的输入流对应的Reader对象Q该Ҏ和getInputStream()Ҏ在一个页面中只能调用一个?/font>

30. String getRemoteAddr() ;
    获取发出h的客LIP地址?/font>

31. String getRemoteHost() ;
    获取发出h的客LL?/font>

32. String getRemoteUser() ;
    q回l过客户端验证的用户名,未经验证q回null?/font>

33. int getRemotePort() ;
    q回发出h的客LL端口?/font>

34. String getRealPath( String path ) ;
    q回l定虚拟路径的物理\径?/font>

35. RequestDispatcher getRequestDispatcher( String path ) ;
    按给定的路径生成资源转向处理适配器对象?/font>

36. String getRequestedSessionId() ;
    q回h的session的标识?/font>

37. String RequestURI() ;
    q回发出h的客L地址Q但是不包括h的参数字W串?/font>

38. StringBuffer getRequestURI() ;
    q回响应h的服务器端地址

39. String getScheme() ;
    获取协议名称Q缺省gؓHTTP协议?/font>

40. String getServerName() ;
    q回响应h的服务器名称?/font>

41. String getServletPath() ;
    获取客户端所h的脚本文件的文g路径?/font>

42. int getServerPort() ;
    获取响应h的服务器端主机端口号?/font>

43. void removeAttribute( String name ) ;
    在属性列表中删除指定名称的属性?/font>

44. void setAttribute( String name, Object value ) ;
    在属性列表中d/删除指定的属性?/font>

45. void setCharacterEncoding( String name ) ;
    讄h的字W编码格式?/font>

46. HttpSession getSession() ;
    HttpSession getSession( boolean create ) ;
    获取sessionQ如果create为trueQ在无session的情况下创徏一个?br />    
47. boolean isRequestedSessionIdFromCookie() ;
    查请求的会话ID是否为通过Cookie传入?/font>

48. boolean isRequestedSessionIdFromURL() ;
    查请求的会话ID是否为通过URL传入?/font>

49. boolean isRequestedSessionIdValid() ;
    查请求的会话ID是否仍然有效?/font>

50. boolean isSecure() ;
    查请求是否用安全链接,如果HTTPS{?/font>

51. boolean isUserInRole( String role ) ;
    查已l通过验证的用h否在是role所指定的角艌Ӏ?/font>

52. Principal getUserPrincipal() ;
    q回包含用户登陆名的一个java.security.Principal对象?/font>

成员Q?br /> String BASIC_AUTH = "BASIC"             -
String CLIENT_CERT_AUTH = "CLIENT_CERT" -
String DIGEST_AUTH = "DIGEST"           -
String FORM_AUTH = "FORM"               -


?response - javax.servlet.http.HttpServletResponse
   response对象主要JSP容器处理后的l果传回到客L?/font>

ҎQ?br /> 1. void addCookie( Cookie cookie ) ;
   d一个Cookie对象Q保存客L信息?/font>

2. void addDateHeader( String name, long value ) ;
   d一个日期类型的HTTP头信息,覆盖同名的HTTP头信息?/font>

3. void addHeader( String name, String value ) ;
   d一个HTTP_覆盖同名的旧HTTP头?/font>

4. void addIntHeader( String name, int value ) ;
   d一个整型的HTTP_覆盖同名的旧HTTP头?/font>

5. boolean containsHeader( String name ) ;
   判断指定的HTTP头是否存在?/font>

6. String encodeRedirectURL( String url ) ;
   对sendRedirect()Ҏ使用的URLq行~码?/font>

7. String encodeURL( String url ) ;
   URL予以~码Q回传包含session ID的URL?br />   
8. void flushBuffer() ;
   强制把当前缓冲区的内容发送到客户端?/font>

9. int getBufferSize() ;
   取得以kb为单位的~冲区大?/font>

10. String getCharacterEncoding() ;
    获取响应的字W编码格式?/font>

11. String getContentType() ;
    获取响应的类型?/font>

12. Locale getLocale() ;
    获取响应的Locale对象?/font>

13. ServletOutputStream getOutputStream() ;
    q回客户端的输出对象?/font>

14. PrintWriter getWriter() ;
    获取输出对应的writer对象?/font>

15. boolean isCommitted() ;
    判断服务器端是否已经数据输出到客户端?/font>

16. void reset() ;
    清空buffer中的所有内宏V?/font>

17. void resetBuffer() ;
    情况buffer中所有的内容Q但是保留HTTP头和状态信息?/font>

18. void sendError( int xc, String msg ) ;
    void sendError( int xc ) ;
    发送错误,包括状态码和错误信息?/font>

19. void sendRedirect( String locationg ) ;
    把响应发送到另外一个位|进行处理?/font>

20. void setBufferSize( int size ) ;
    讄以kb为单位的~冲区大?/font>

21. void setCharacterEncoding( String charset ) ;
    讄响应使用的字W编码格式?/font>

22. void setContentLength( int length ) ;
    讄响应的BODY长度?/font>

23. void setContentType( String type ) ;
    讄响应的类型?/font>

24. void setDateHeader( String name, long value ) ;
    讄指定名称的Datacd的HTTP头的倹{?/font>

25. void setHeader( String name, String value ) ;
    讄指定名称的HTTP头的倹{?/font>

26. void setIntHeader( String name, int value ) ;
    讄指定名称的intcd的HTTP头的倹{?/font>

27. void setStatus( int xc ) ;
    讄响应状态码Q新g覆盖当前倹{?/font>

成员(HTTP状态码)Q?br /> int SC_CONTINUE = 100                      int SC_SWITCHING_PROTOCOLS = 101
int SC_OK = 200                            int SC_NON_AUTHORITATIVE_INFORMATION = 203
int SC_ACCEPTED = 202                      int SC_CREATED = 201
int SC_NO_CONTENT = 204                    int SC_RESET_CONTENT = 205
int SC_PARTIAL_CONTENT = 206               int SC_MULTIPLE_CHOICES = 300
int SC_MOVED_PERMANENTLY = 301             int SC_MOVED_TEMPORARILY = 302
int SC_FOUND = 302                         int SC_SEE_OTHER = 303
int SC_NOT_MODIFIED = 304                  int SC_USE_PROXY = 305
int SC_TEMPORARY_REDIRECT = 307            int SC_BAD_REQUEST = 400
int SC_UNAUTHORIZED = 401                  int SC_PAYMENT_REQUIRED = 402
int SC_FORBIDDEN = 403                     int SC_NOT_FOUND = 404
int SC_METHOD_NOT_ALLOWED = 405            int SC_NOT_ACCEPTABLE = 406
int SC_PROXY_AUTHENTICATION_REQUIRED = 407 int SC_REQUEST_TIMEOUT = 408
int SC_CONFLICT = 409                      int SC_GONE = 410
int SC_LENGTH_REQUIRED = 411               int SC_PRECONDITION_FAILED = 412
int SC_REQUEST_ENTITY_TOO_LARGE = 413      int SC_REQUEST_URI_TOO_LONG = 414
int SC_UNSUPPORTED_MEDIA_TYPE = 415        int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416
int SC_EXPECTATION_FAILED = 417            int SC_INTERNAL_SERVER_ERROR = 500
int SC_NOT_IMPLEMENTED = 501               int SC_BAD_GATEWAY = 502
int SC_SERVICE_UNAVAILABLE = 503           int SC_GATEWAY_TIMEOUT = 504
int SC_HTTP_VERSION_NOT_SUPPORTED = 505


?session - javax.servlet.http.HttpSession
   session对象表示目前个别用户的会话状态,用来识别每个用户?/font>

ҎQ?br /> 1. Object getAttribute( String name ) ;
   获取与指定名字相兌的session属性倹{?/font>

2. Enumeration getAttributeNames() ;
   取得session内所有属性的集合?/font>

3. long getCreationTime() ;
   q回session的创建时_最单位千分之一U?/font>

4. String getId() ;
   取得session标识?/font>

5. long getLastAccessedTime() ;
   q回与当前session相关的客L最后一ơ访问的旉Q由1970-01-01vQ单位毫U?/font>

6. int getMaxInactiveInterval( int interval ) ;
   q回L_以秒为单位,表示session的有效时?session不活动时??1为永不过期?/font>

7. ServletContext getServletContext() ;
   q回一个该JSP面对应的ServletContext对象实例?/font>

8. HttpSessionContext getSessionContext() ;
  

9. Object getValue( String name ) ;
   取得指定名称的session变量|不推荐用?/font>

10. String[] getValueNames() ;
    取得所有session变量的名U的集合Q不推荐使用?/font>

11. void invalidate() ;
    销毁这个session对象?/font>

12. boolean isNew() ;
    判断一个session是否由服务器产生Q但是客Lq没有用?/font>

13. void pubValue( String name, Object value ) ;
    d一个session变量Q不推荐使用?/font>

14. void removeValue( String name ) ;
    U除一个session变量的|不推荐用?/font>

15. void setAttribute( String name, String value ) ;
    讄指定名称的session属性倹{?/font>

16. void setMaxInactiveInterval( int interval ) ;
    讄session的有效期?/font>

17. void removeAttribute( String name ) ;
    U除指定名称的session属性?/font>


?pageContext - javax.servlet.jsp.PageContext
   pageContext对象存储本JSP面相关信息Q如属性、内建对象等?/font>

ҎQ?br /> 1. void setAttribute( String name, Object value, int scope ) ;
   void setAttribute( String name, Object value ) ;
   在指定的׃n范围内设|属性?/font>

2. Object getAttribute( String name, int scope ) ;
   Object getAttribute( String name ) ;
   取得指定׃n范围内以name为名字的属性倹{?/font>

3. Object findAttribute( String name ) ;
   按页面、请求、会话和应用E序׃n范围搜烦已命名的属性?/font>

4. void removeAttribute( String name, int scope ) ;
   void removeAttribute( String name ) ;
   U除指定名称和共享范围的属性?/font>

5. void forward( String url ) ;
   页面导航到指定的URL?/font>

6. Enumeration getAttributeNamesScope( int scope ) ;
   取得指定׃n范围内的所有属性名U的集合?/font>

7. int getAttributeScope( String name ) ;
   取得指定属性的׃n范围?/font>

8. ErrorData getErrorDate() ;
   取得面的errorData对象?/font>

9. Exception getException() ;
   取得面的exception对象?/font>

10. ExpressionEvaluator getExpressionEvaluator() ;
    取得面的expressionEvaluator对象?/font>

11. JspWriter getOut() ;
    取得面的out对象?/font>

12. Object getPage() ;
    取得面的page对象?/font>

13. ServletRequest getRequest() ;
    取得面的request对象?/font>

14. ServletResponse getResponse() ;
    取得面的response对象?/font>

15. ServletConfig getConfig() ;
    取得面的config对象?/font>

16. ServletContext getServletContext() ;
    取得面的servletContext对象?/font>

17. HttpSession getSession() ;
    取得面的session对象?/font>

18. VariableResolver getVariableResolver() ;
    取得面的variableResolver对象?/font>

19. void include( String url, boolean flush ) ;
    void include( String url ) ;
    包含其他的资源,q指定是否自动刷新?/font>

20. void release() ;
    重置pageContext内部状态,释放所有内部引用?/font>

21. void initialize( Servlet servlet, ServletRequest request, ServletResponse response,
                     String errorPageURL, boolean needSession, int bufferSize, boolean autoFlush ) ;
    初始化未l初始化的pageContext对象?/font>

22. BodyContext pushBody() ;
    BodyContext pushBody( Writer writer ) ;
    保存当前的out对象Qƈ更新pageContext中page范围内的out对象?/font>

23. JspWrite popBody() ;
    取出由pushBody()Ҏ保存的out对象?/font>

24. void handlePageException( Exception e ) ;
    void handlePageException( Thrwoable t ) ;
   

成员Q?br /> int PAGE_SCOPE = 1        - 面׃n范围
int REQUEST_SCOPE = 2     - h׃n范围
int SESSION_SCOPE = 3     - 会话׃n范围
int APPLICATION_SCOPE = 4 - 应用E序׃n范围
String PAGE = "javax.servlet.jsp.jspPage"
String PAGECONTEXT = "javax.servlet.jsp.jspPageContext"
String REQUEST = "javax.servlet.jsp.jspRequest"
String RESPONSE = "javax.servlet.jsp.jspResponse"
String CONFIG = "javax.servlet.jsp.jspConfig"
String SESSION = "javax.servlet.jsp.jspSession"
String OUT = "javax.servlet.jsp.jspOut"
String APPLICATION = "javax.servlet.jsp.jspApplication"
String EXCEPTION = "javax.servlet.jsp.jspException"


?application - javax.servlet.ServletContext
   application主要功用在于取得或更改Servlet的设定?/font>

ҎQ?br /> 1. Object getAttribute( String name ) ;
   q回由name指定的application属性?/font>

2. Enumeration getAttributes() ;
   q回所有的application属性?/font>

3. ServletContext getContext( String uripath ) ;
   取得当前应用的ServletContext对象?/font>

4. String getInitParameter( String name ) ;
   q回由name指定的application属性的初始倹{?/font>

5. Enumeration getInitParameters() ;
   q回所有的application属性的初始值的集合?/font>

6. int getMajorVersion() ;
   q回servlet容器支持的Servlet API的版本号?/font>

7. String getMimeType( String file ) ;
   q回指定文g的类型,未知cdq回null。一般ؓ"text/html"?image/gif"?/font>

8. int getMinorVersion() ;
   q回servlet容器支持的Servlet API的副版本受?/font>

9. String getRealPath( String path ) ;
   q回l定虚拟路径所对应物理路径?/font>

10. RequestDispatcher getNamedDispatcher( String name ) ;
    为指定名字的Servlet对象q回一个RequestDispatcher对象的实例?/font>

11. RequestDispatcher getRequestDispatcher( String path ) ;
    q回一个RequestDispatcher对象的实例?/font>

12. URL getResource( String path ) ;
    q回指定的资源\径对应的一个URL对象实例Q参数要?/"开头?/font>

13. InputStream getResourceAsStream( String path ) ;
    q回一个由path指定位置的资源的InputStream对象实例?/font>

14. Set getResourcePaths( String path ) ;
    q回存储在web-app中所有资源\径的集合?/font>

15. String getServerInfo() ;
    取得应用服务器版本信息?/font>

16. Servlet getServlet( String name ) ;
    在ServletContext中检索指定名U的servlet?/font>

17. Enumeration getServlets() ;
    q回ServletContext中所有servlet的集合?/font>

18. String getServletContextName() ;
    q回本web应用的名U?/font>

19. Enumeration getServletContextNames() ;
    q回ServletContext中所有servlet的名U集合?/font>

20. void log( Exception ex, String msg ) ;
    void log( String msg, Throwable t ) ;
    void log( String msg ) ;
    把指定的信息写入servlet log文g?/font>

21. void removeAttribute( String name ) ;
    U除指定名称的application属性?/font>

22. void setAttribute( String name, Object value ) ;
    讑֮指定的application属性的倹{?/font>


?config - javax.servlet.ServletConfig
   config对象用来存放Servlet初始的数据结构?/font>

ҎQ?br /> 1. String getInitParameter( String name ) ;
   q回名称为name的促使参数的倹{?/font>

2. Enumeration getInitParameters() ;
   q回q个JSP所有的促参数的名U集合?/font>

3. ServletContext getContext() ;
   q回执行者的servlet上下文?/font>

4. String getServletName() ;
   q回servlet的名U?/font>


?exception - java.lang.Throwable
   错误对象Q只有在JSP面的page指o中指定isErrorPage="true"后,才可以在本页面用exception对象?/font>

ҎQ?br /> 1. Throwable fillInStackTrace() ;
   当前stack信息记录到exception对象中?/font>

2. String getLocalizedMessage() ;
   取得本地语系的错误提CZ息?/font>

3. String getMessage()
   取得错误提示信息?/font>

4. StackTrackElement[] getStackTrace() ;
   q回对象中记录的call stack track信息?/font>

5. Throwable initCause( Throwable cause ) ;
   另外一个异常对象嵌套进当前异常对象中?br />   
6. Throwable getCause() ;
   取出嵌套在当前异常对象中的异常?/font>

7. void printStackTrace() ;
   void printStackTrace( printStream s ) ;
   void printStackTrace( printWriter s ) ;
   打印出Throwable及其call stack trace信息?/font>

8. void setStackTrace( StackTraceElement[] stackTrace )
   讄对象的call stack trace信息?/font>


?page - javax.servlet.jsp.HttpJspPage
   page对象代表JSP对象本nQ或者说代表~译后的servlet对象Q?br />    可以? (javax.servlet.jsp.HttpJspPage)page )来取用它的方法和属性?/font>



飞翔天 2009-03-26 10:15 发表评论
]]>
JSP环境ZSession的在U用L计深入分?/title><link>http://www.aygfsteel.com/DreamAngel/archive/2009/03/19/260893.html</link><dc:creator>飞翔天</dc:creator><author>飞翔天</author><pubDate>Thu, 19 Mar 2009 12:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamAngel/archive/2009/03/19/260893.html</guid><wfw:comment>http://www.aygfsteel.com/DreamAngel/comments/260893.html</wfw:comment><comments>http://www.aygfsteel.com/DreamAngel/archive/2009/03/19/260893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamAngel/comments/commentRss/260893.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamAngel/services/trackbacks/260893.html</trackback:ping><description><![CDATA[     摘要: JSP作ؓ后v之秀能够在服务器~程环境中占据一定地位,是和它良好支持一pd业界标准密切相关的。Session是它提供的基础设施之一。作Z个程序员Q你可以不介意具体在客户端是如何实现Q就方便的实现简单的Zsession的用L理。现在对于处理在U用P有几U不同的处理Ҏ。一U是面hqhӞ服务器端控制一个超时时间比?0分钟Q到了时间之后用h有动作就被踢出。这U方法的优点是,如果?..  <a href='http://www.aygfsteel.com/DreamAngel/archive/2009/03/19/260893.html'>阅读全文</a><img src ="http://www.aygfsteel.com/DreamAngel/aggbug/260893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamAngel/" target="_blank">飞翔天</a> 2009-03-19 20:45 <a href="http://www.aygfsteel.com/DreamAngel/archive/2009/03/19/260893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Forward与Redirect区别http://www.aygfsteel.com/DreamAngel/archive/2009/03/12/259278.html飞翔天飞翔天Thu, 12 Mar 2009 02:21:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2009/03/12/259278.htmlhttp://www.aygfsteel.com/DreamAngel/comments/259278.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2009/03/12/259278.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/259278.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/259278.html1.         共同点:

都实CҎ自己的条件实现的面得蟩转?/span>

2.         区别

cd

概念

׃n数据

应用

Redirect

URL重新定向Q可以是L?/span>URL

不能׃nrequest里面的数?/span>

一般用于用h销d时返回主面和蟩转到其它的网站等{?/span>

Forward

面的{发:只能是同一?/span>Web应用E序的其?/span>Weblg

转发面和{发到的页面可以共?/span>request里面的数?/span>

一般用于用L录的时候根据角色{发到相应的模块等{?/span>

3.         例子Q?/span>

譬如Q?/span>client 通过XXX\index.jsp?name=gauss&pwd=123讉Kindex.jsp,?/span>index.jsp中有<jsp:forward page="login.jsp"/>,则在login.jsp中可以通过request.getParameter()得到name?/span>pwdQ?/span><%response.sendRedirect("login.jsp");%>得不到?/span>

4.         注意

一般在index.jsp面之前有个提交数据的页?/span>default.jspQ则defautl.jsp面提交的数据就可以?/span>login.jsp面得到Q而不是得?/span>index.jsp面提交的数据,index.jsp面只是执行的都是一个{发操作当然在里面可以增加也写业务操作Q他可以得到request的数据,?/span>XXX\index.jsp?name=gauss&pwd=123q种方式d是省略?/span>index.jsp前面的一个页面提交数据而已?/span>



飞翔天 2009-03-12 10:21 发表评论
]]>
getOutputStream() has already been called for this response异常的原因和解决Ҏhttp://www.aygfsteel.com/DreamAngel/archive/2009/03/11/259213.html飞翔天飞翔天Wed, 11 Mar 2009 13:07:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2009/03/11/259213.htmlhttp://www.aygfsteel.com/DreamAngel/comments/259213.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2009/03/11/259213.html#Feedback0http://www.aygfsteel.com/DreamAngel/comments/commentRss/259213.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/259213.htmltomcat5?/span>jsp出现getOutputStream() has already been called for this response异常的原因和解决Ҏ?/span>tomcat5?/span>jsp中出现此错误一般都是在jsp中用了输出(如输出图片验证码Q文件下载等Q,没有妥善处理好的原因。具体的原因是?/span>tomcat?/span>jsp~译?/span>servlet之后在函?/span>_jspService(HttpServletRequest request, HttpServletResponse response)的最后有一D这L代码

finally {

      if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);

}

q里是在释放?/span>jsp中用的对象Q会调用response.getWriter(),因ؓq个Ҏ是和response.getOutputStream()相冲H的Q所以会出现以上q个异常。然后当然是要提决的办法Q其实挺单的Qƈ不是和某些朋友说的那?/span>--?/span>jsp内的所有空格和回RW号所有都删除掉)Q在使用完输出流以后调用以下两行代码卛_Q?/span>

out.clear();

out = pageContext.pushBody();

 

附:产生验证码图片的文gimage.jsp

 1<%@ page contentType="image/jpeg"
 2    import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"
 3    pageEncoding="GBK"%>
 4<%!Color getRandColor(int fc, int bc) {//l定范围获得随机颜色
 5        Random random = new Random();
 6        if (fc > 255)
 7            fc = 255;
 8        if (bc > 255)
 9            bc = 255;
10        int r = fc + random.nextInt(bc - fc);
11        int g = fc + random.nextInt(bc - fc);
12        int b = fc + random.nextInt(bc - fc);
13        return new Color(r, g, b);
14    }
%>
15<%
16    //讄面不缓?/span>
17    response.setHeader("Pragma""No-cache");
18    response.setHeader("Cache-Control""no-cache");
19    response.setDateHeader("Expires"0);
20    // 在内存中创徏图象
21    int width = 60, height = 20;
22    BufferedImage image = new BufferedImage(width, height,
23            BufferedImage.TYPE_INT_RGB);
24    // 获取囑Ş上下?/span>
25    Graphics g = image.getGraphics();
26    //生成随机c?/span>
27    Random random = new Random();
28    // 讑֮背景?/span>
29    g.setColor(getRandColor(200250));
30    g.fillRect(00, width, height);
31    //讑֮字体
32    g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
33    //画边?br /> 34    //g.setColor(new Color());
35    //g.drawRect(0,0,width-1,height-1);
36    // 随机产生155条干扰线Q图象中的认证码不易被其它E序探测?/span>
37    g.setColor(getRandColor(160200));
38    for (int i = 0; i < 155; i++{
39        int x = random.nextInt(width);
40        int y = random.nextInt(height);
41        int xl = random.nextInt(12);
42        int yl = random.nextInt(12);
43        g.drawLine(x, y, x + xl, y + yl);
44    }

45    // 取随Z生的认证?4位数?
46    String sRand = "";
47    for (int i = 0; i < 4; i++{
48        String rand = String.valueOf(random.nextInt(10));
49        sRand += rand;
50        // 认证码昄到图象中
51        g.setColor(new Color(20 + random.nextInt(110), 20 + random
52        .nextInt(110), 20 + random.nextInt(110)));
53        //调用函数出来的颜色相同,可能是因为种子太接近Q所以只能直接生?/span>
54        g.drawString(rand, 13 * i + 616);
55    }

56    // 认证码存入SESSION
57    session.setAttribute("rand", sRand);
58    // 图象生效
59    g.dispose();
60    // 输出图象到页?/span>
61    ImageIO.write(image, "JPEG", response.getOutputStream());
62    out.clear();
63    out = pageContext.pushBody();
64%>

?/span>html中用验证码囄Q?/p>

1<img src="image.jsp" id="src" height="18" alt="看不清楚?Ld? onclick="this.src=this.src+'?'+Math.random();" />


飞翔天 2009-03-11 21:07 发表评论
]]>
Jbuilder 2006的一个Bughttp://www.aygfsteel.com/DreamAngel/archive/2009/01/22/252348.html飞翔天飞翔天Thu, 22 Jan 2009 07:02:00 GMThttp://www.aygfsteel.com/DreamAngel/archive/2009/01/22/252348.htmlhttp://www.aygfsteel.com/DreamAngel/comments/252348.htmlhttp://www.aygfsteel.com/DreamAngel/archive/2009/01/22/252348.html#Feedback2http://www.aygfsteel.com/DreamAngel/comments/commentRss/252348.htmlhttp://www.aygfsteel.com/DreamAngel/services/trackbacks/252348.html?/span>3张网:login.jspQ登陆界面)?/span>check.jspQ验证界面)?/span>index.jspQ主)Q在check.jsp中判断登陆的信息如果在数据库中存在,在2U后q入index.jspQ用如下语句:

response.setHeader("Refresh","2;URL=index.jsp");

我们?/span>Jbuilder 2006的内|浏览器q行该程序时Q即使输入的信息正确Q在check.jsp面也不会?/span>2U的延迟效果Q而在IE或其他浏览器中均可实现gq效果?/span>

飞翔天 2009-01-22 15:02 发表评论
]]>
动态生成checkbox的值ƈ获取?/title><link>http://www.aygfsteel.com/DreamAngel/archive/2009/01/10/250825.html</link><dc:creator>飞翔天</dc:creator><author>飞翔天</author><pubDate>Sat, 10 Jan 2009 12:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamAngel/archive/2009/01/10/250825.html</guid><wfw:comment>http://www.aygfsteel.com/DreamAngel/comments/250825.html</wfw:comment><comments>http://www.aygfsteel.com/DreamAngel/archive/2009/01/10/250825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamAngel/comments/commentRss/250825.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamAngel/services/trackbacks/250825.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><strong>W一:</p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000"><%</span><span style="color: #000000"><br /> </span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_26_108_Open_Image" onclick="this.style.display='none'; Codehighlighter1_26_108_Open_Text.style.display='none'; Codehighlighter1_26_108_Closed_Image.style.display='inline'; Codehighlighter1_26_108_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_26_108_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_26_108_Closed_Text.style.display='none'; Codehighlighter1_26_108_Open_Image.style.display='inline'; Codehighlighter1_26_108_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000"> k</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;k</span><span style="color: #000000"><=</span><span style="color: #000000">20</span><span style="color: #000000">;k</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span id="Codehighlighter1_26_108_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_26_108_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />   </span><span style="color: #000000">%></span><span style="color: #000000"><br /> </span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />   </span><span style="color: #000000"><</span><span style="color: #000000">input type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">checkbox</span><span style="color: #000000">"</span><span style="color: #000000"> name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">colname</span><span style="color: #000000">"</span><span style="color: #000000"> value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">?lt;%=k%></span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000">列[</span><span style="color: #000000"><%=</span><span style="color: #000000">k</span><span style="color: #000000">%></span><span style="color: #000000">]<br /> </span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />   </span><span style="color: #000000"><%</span><span style="color: #000000"><br /> </span><span style="color: #008080">6</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">7</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #000000">%></span></div> <p></strong></span><span style="font-size: 10.5pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <hr /> <strong>W二:</p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080"> 1</span><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000"><%</span><span style="color: #000000"><br /> </span><span style="color: #008080"> 2</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />   request.setCharacterEncoding(</span><span style="color: #000000">"</span><span style="color: #000000">gb2312</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #008080"> 3</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />   String[] picked </span><span style="color: #000000">=</span><span style="color: #000000"> request.getParameterValues(</span><span style="color: #000000">"</span><span style="color: #000000">colname</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #008080"> 4</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />   String[] a</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> String[</span><span style="color: #000000">20</span><span style="color: #000000">];<br /> </span><span style="color: #008080"> 5</span><span style="color: #000000"><img id="Codehighlighter1_159_255_Open_Image" onclick="this.style.display='none'; Codehighlighter1_159_255_Open_Text.style.display='none'; Codehighlighter1_159_255_Closed_Image.style.display='inline'; Codehighlighter1_159_255_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_159_255_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_159_255_Closed_Text.style.display='none'; Codehighlighter1_159_255_Open_Image.style.display='inline'; Codehighlighter1_159_255_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" />   </span><span style="color: #0000ff">if</span><span style="color: #000000"> (picked </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) </span><span id="Codehighlighter1_159_255_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_159_255_Open_Text"><span style="color: #000000">{ <br /> </span><span style="color: #008080"> 6</span><span style="color: #000000"><img id="Codehighlighter1_206_250_Open_Image" onclick="this.style.display='none'; Codehighlighter1_206_250_Open_Text.style.display='none'; Codehighlighter1_206_250_Closed_Image.style.display='inline'; Codehighlighter1_206_250_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_206_250_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_206_250_Closed_Text.style.display='none'; Codehighlighter1_206_250_Open_Image.style.display='inline'; Codehighlighter1_206_250_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />     </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;i </span><span style="color: #000000"><</span><span style="color: #000000"> picked.length; i</span><span style="color: #000000">++</span><span style="color: #000000">) </span><span id="Codehighlighter1_206_250_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_206_250_Open_Text"><span style="color: #000000">{ <br /> </span><span style="color: #008080"> 7</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />       out.println(</span><span style="color: #000000">"</span><span style="color: #000000">  </span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">picked[i]);<br /> </span><span style="color: #008080"> 8</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />     }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080"> 9</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />   }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_264_293_Open_Image" onclick="this.style.display='none'; Codehighlighter1_264_293_Open_Text.style.display='none'; Codehighlighter1_264_293_Closed_Image.style.display='inline'; Codehighlighter1_264_293_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_264_293_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_264_293_Closed_Text.style.display='none'; Codehighlighter1_264_293_Open_Image.style.display='inline'; Codehighlighter1_264_293_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" />  </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span id="Codehighlighter1_264_293_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_264_293_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />   out.println (</span><span style="color: #000000">"</span><span style="color: #000000">none</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> </span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />  }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #000000">%></span></div> <p></strong></span> </p> <img src ="http://www.aygfsteel.com/DreamAngel/aggbug/250825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamAngel/" target="_blank">飞翔天</a> 2009-01-10 20:36 <a href="http://www.aygfsteel.com/DreamAngel/archive/2009/01/10/250825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ԫ</a>| <a href="http://" target="_blank">Ӣ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ŷ</a>| <a href="http://" target="_blank">ְ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˼é</a>| <a href="http://" target="_blank">ٹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʱ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">人</a>| <a href="http://" target="_blank">۳</a>| <a href="http://" target="_blank">·</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩˳</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">пǰ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">μ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">ũ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>