隨筆-26  評論-13  文章-46  trackbacks-0
           
          <href="delete.jsp?Id=${row.Id}" onclick="if(confirm('確認刪除?')){this.click();}else{return false;}">刪除</a>
          posted @ 2005-06-07 16:10 似水流年 閱讀(400) | 評論 (0)編輯 收藏

          1.驗證用戶登錄
          <sql:query var="query" dataSource="${bookdev}">
            select * from user where userName='${param.userName}' and userPwd='${param.userPwd}'
          </sql:query>

          <c:if test="${empty query.rows}"> 
          <!--驗證沒有通過,返回登錄界面-->
            <font color="red">用戶名或密碼錯誤</font>
            <a href="index.jsp">重新登錄</a>
          </c:if>
          <c:if test="${!empty query.rows}"> 
          <!--驗證通過,保存用戶信息到session中-->
          <c:forEach var="row" items="${query.rows}">
              <c:set var="userName" value="${row.userName}" scope="session" />
              <c:set var="userLevel" value="${row.userLevel}" scope="session" /> 
           </c:forEach>
              <c:set var="isLog" value="1" scope="session" /> 
          <!--頁面發送到主頁面-->
              <c:redirect url="main.jsp" />
          </c:if>

          2.session控制

          <c:if test="${empty sessionScope.isLog}">
           你沒有登錄或登錄超時
           <a href="index.jsp">重新登錄</a>
          </c:if>

          posted @ 2005-06-07 16:07 似水流年 閱讀(3651) | 評論 (3)編輯 收藏
          以mysql為例

          <sql:setDataSource 
            var
          ="bookdev"  //數據庫名 
            driver="org.gjt.mm.mysql.Driver" //驅動程序 
            url="jdbc:mysql://localhost:3306/bookdev?useUnicode=true&characterEncoding=gb2312" //URL
            user="root" //用戶名
            password="" //密碼 
           scope="session" 
          /> 

          其他數據庫和URL列表如下(摘自jsp應用開發詳解(第二版))

          數據庫驅動程序和URL

          數據庫名

          驅動程序

          URL

          MS SQL Server2000

          com.microsoft.jdbc.sqlserver.SQLServerDriver

          jdbc:microsoft:sqlserver://[ip]:[port];user=[user];passwoerd=[password]

          JDBC-ODBC

          sun.jdbc.odbc.JdbcOdbcDriver

          jdbc:odbc:[odbcsource]

          Oracle oci8

          oracle.jdbc.driver.OracleDriver

          jdbc:oracle:oci8:@[sid]

          Oracle thin Driver

          oracle.jdbc.driver.OracleDriver

          jdbc:oracle:thin:@[ip]:[port]:[sid]

          Cloudscape

          COM.cloudscape.core.JDBCDriver

          Jdbc:cloudscape:database

          MySQL

          org.git.mm.mysql.Driver

          jdbc:mysql://ip/database?user=?&password=?


          相關鏈接:java連接數據庫方法http://blog.java-cn.com/more.asp?name=johnnyhg&id=341 

          posted @ 2005-06-07 16:06 似水流年 閱讀(399) | 評論 (0)編輯 收藏
          由于mysql把\當作轉義字符用,所以要把路徑中的\處理成\\才可以正確保存,無奈之下copy了一段java代碼實現字符替換,后來才發現原來JSTL的新增函數庫就有函數已經可以實現此功能,且使用起來代碼簡潔,這樣好的東西自然要用用。
          <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
          ${fn:replace(param.sourceUrl,'\','\\')}
          結果出現錯誤:Unterminated ${ tag。
          修改代碼為:
          <c:set var="before" value="\\"/> 
          <c:set var="after" value="\\\\"/> 
          $
          {fn:replace(param.sourceUrl,before,after)} 
          問題解決
          posted @ 2005-06-07 16:01 似水流年 閱讀(1448) | 評論 (1)編輯 收藏
          加密
          <sql:update var="user" dataSource="${bookdev}"> 
            insert into user values(
          "","${param.userName}",password("${param.userPwd}"),"${param.userLevel}"
          </sql:update> 

          解密
          <sql:query var="query" dataSource="${bookdev}"> 
            select 
          * from user where userName='${param.userName}' and 
            userPwd
          =password('${param.userPwd}'
          </sql:query>
          posted @ 2005-06-07 16:00 似水流年 閱讀(606) | 評論 (0)編輯 收藏

          JSP文件操作

              文件的建立與刪除
              顯示目錄中的文件
              讀取文件中的字符
              將數據寫入文件


          文件的建立與刪除

          首先取得當前的磁盤路徑,指定要建立的文件的路徑,再進行檢查,如果文件不存在,如果文件不存在,則建立這個文件,如果文件存在,則刪除這個文件。

          CreateDelete.jsp
          <%@ page contentType="text/html; charset=GB2312"%>
          <%@ page import="java.io.*" %>
          <%@ page language="java" %>
          <HTML>
          <HEAD>
          <TITLE>文件的建立與刪除</TITLE>
          </HEAD>
          <BODY>
          <CENTER>
          <FONT SIZE = 5 COLOR = blue>文件的建立與刪除</FONT>
          </CENTER>
          <BR>
          <HR>
          <BR>
          <%
          //建立代表目前目錄位置中File.txt檔的File變量, 并由fileName變量變數引用
          String path = request.getRealPath("/jsphosting/wenjian");
          File fileName = new File(path, "File.txt");
          //檢查File.txt是否存在
          if(fileName.exists())
          {
          //刪除File.txt檔
          fileName.delete();
          //輸出目前所在的目錄路徑
          out.println(path + "\\File.txt");
          %>
          <FONT SIZE = 4 COLOR = red>存在</FONT>, 已完成
          <FONT SIZE = 4 COLOR = red>刪除</FONT>
          <%
          }
          else
          {
          //在目前的目錄下建立一個名為File.txt的文字檔 
          fileName.createNewFile();
          //輸出目前所在的目錄路徑
          out.println(path + "\\File.txt");
          %>
          <FONT SIZE = 4 COLOR = red>不存在</FONT>, 已完成
          <FONT SIZE = 4 COLOR = red>建立</FONT>
          <%
          }
          %>
          </BODY>
          </HTML> 


          顯示目錄中的文件


          首先建立要顯示的目錄的FILE對象,然后調用LISTFILES方法,該方法返回一個FILE對象數組,顯示數組中的所有元素即可。

          ListFile.jsp
          <%@ page contentType="text/html; charset=GB2312"%>
          <%@ page language="java" %>
          <%@ page import="java.io.*" %>
          <HTML>
          <HEAD>
          <TITLE>取得目錄中的文件</TITLE>
          </HEAD>
          <BODY>
          <CENTER>
          <FONT SIZE = 5 COLOR = blue>取得目錄中的文件</FONT>
          </CENTER>
          <BR>
          <HR>
          <BR>
          <%
          //取得目前目錄的磁盤目錄
          String path = request.getRealPath("/jsphosting/wenjian");
          //建立代表目前目錄位置的d變量
          File d = new File(path);
          //取得代表目錄中所有文件
          File list[] = d.listFiles();
          %>
          在<Font color = red><%= path%></Font>目錄下的文件有(每個文件有其相應的功能)<BR>
          <Font color = blue>
          <ul>
          <%
          for(int i=0; i < list.length; i++)
          {
          %>
          <li><%= list[i].getName() %><BR> 
          <%
          }
          %>
          </ul>
          </Font>
          </BODY>
          </HTML> 

          讀取文件中的字符

          直接調用FILEREADER對象的READ()方法讀取所要顯示的字符

          ReadAll.jsp
          <%@ page contentType="text/html; charset=GB2312" %>
          <%@ page language="java" %>
          <%@ page import="java.io.*" %>
          <HTML>
          <HEAD>
          <TITLE>讀取文件內容</TITLE>
          </HEAD>
          <BODY>
          <CENTER>
          <FONT SIZE = 5 COLOR = blue>讀取文件內容</FONT>
          </CENTER>
          <BR>
          <HR>
          <BR>
          <%
          String path = request.getRealPath("/jsphosting/wenjian"); //取得目前目錄在伺服端的實際位置
          FileReader fr = new FileReader(path + "\\File.txt"); //建立FileReader變量,并設定由fr變量變數引用
          int c = fr.read(); //從文件中讀取一個字節
          while(c != -1) //判斷是否已讀到文件的結尾
          {
          out.print((char)c); //輸出讀取到的數據 
          c = fr.read(); //從文件中讀取數據
          if(c == 13) //判斷是否為斷行字節
          {
          out.print("<BR>"); //輸出分行標簽
          fr.skip(1); //略過一個字節
          c = fr.read(); //讀取一個字節
          }
          }
          //關閉文件
          fr.close();
          %>
          </BODY>
          </HTML> 

          將數據寫入文件

          通過調用FILEWRITER對象的WRITE()方法向文件中寫入數據

          Write.jsp
          <%@ page contentType="text/html; charset=GB2312"%>
          <%@ page language="java" %>
          <%@ page import="java.io.*" %>
          <HTML>
          <HEAD>
          <TITLE>將數據寫入文件</TITLE>
          </HEAD>
          <BODY>
          <CENTER>
          <FONT SIZE = 5 COLOR = blue>將數據寫入文件</FONT>
          </CENTER>
          <BR>
          <HR>
          <BR>
          <%
          String path = request.getRealPath("/jsphosting/wenjian"); //取得目前目錄在伺服端的實際位置
          FileWriter fw = new FileWriter(path + "\\File.txt"); //建立FileWrite對象,并設定由fw對象變量引用
          //將字串寫入文件
          fw.write("大家好!");
          fw.write("祝大家學習jsp愉快!");
          fw.write("希望大家能夠深入了解jsp技術!");
          fw.close(); //關閉文件
          %>
          <P>寫入文件內容為</P>
          <FONT SIZE = 4 COLOR = red>
          <%
          FileReader fr = new FileReader(path + "\\File.txt"); //建立FileReader對象,并設定由fr對象變量引用
          BufferedReader br = new BufferedReader(fr); //建立BufferedReader對象,并設定由br對象變量引用
          String Line = br.readLine(); //讀取一行數據
          out.println(Line + "<BR>"); //輸出讀取得的數據
          br.close(); //關閉BufferedReader對象
          fr.close(); //關閉文件
          %>
          </FONT>
          </BODY>
          </HTML> 

          posted @ 2005-06-07 15:58 似水流年 閱讀(301) | 評論 (0)編輯 收藏

          打開tomcat/conf/servel.xml
          修改(黑體字為修改部分)
          <Connector port="8080"
                         maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                         enableLookups="false" redirectPort="8443" acceptCount="100"
                         debug="0" connectionTimeout="20000"
                         disableUploadTimeout="true" URIEncoding="GBK"/>
          在web頁上把含有中文的url用java.net.URLEncoder.encode("中文")處理
          例子:

          <c:set var="test"> 
            
          /<%=java.net.URLEncoder.encode("用jsp實現文件上傳.pdf")%> 
          </c:set> 
          <c:redirect context="/ebooks" url="${test}"/> 


          鏈接傳遞中文參數例子

          <a href=hello.jsp?send=<%=java.net.URLEncoder.encode("中文")%>> 點擊</a> 

           jspsmartupload組件下載中文例子:
           

          <%@ page contentType="text/html;charset=gb2312" 
          import
          ="com.jspsmart.upload.*" %><% 

          SmartUpload mySmartUpload  
          = new SmartUpload(); 

          //String path=request.getParameter("中文");修改server.xml后 
          String path = new String(request.getParameter("中文").getBytes("ISO-8859-1")); //修改server.xml前 
          // Initialization 
          mySmartUpload.initialize(pageContext); 
          // Download file 
          //mySmartUpload.downloadFile("/upload/sample.zip"); 
          // With a physical path 

          mySmartUpload.downloadFile(path); 
          response.getOutputStream().close(); 
          // With options 
          // mySmartUpload.downloadFile("/upload/sample.zip","application/x-zip-compressed","downloaded.zip") 
          %> 
          posted @ 2005-06-07 15:57 似水流年 閱讀(4653) | 評論 (2)編輯 收藏

          數據庫需求分析:
          class(一級欄目信息):classId(自動編號),className(欄目名稱)
          Nclass(二級欄目信息):NclassId(自動編號),NclassName(欄目名稱),parentId(一級欄目id,與class表中的classId關聯)

          <%@ page contentType="text/html; charset=GB2312" language="java" errorPage="../error.jsp" %>
          <%@ include file="../conn.jsp"%>
          <%@ include file="../ds.jsp"%>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
          <%request.setCharacterEncoding("gb2312"); %>
          <HTML><HEAD>
          <META http-equiv="Content-Type" content="text/html; charset=gb2312">

          <TITLE>級聯菜單</TITLE>
          <LINK rel="stylesheet" type="text/css" href="style.css">
          </HEAD>
          <!--從數據庫中得到二級欄目信息-->
          <%String sql="select * from Nclass order by NclassId asc";
          ResultSet rs=stmt.executeQuery(sql);
          %>
          <!--將二級欄目信息保存到數組subcat中-->
          <script type="text/javascript">
          var onecount;
          onecount=0;
          subcat = new Array();
                  <%
                  int count = 0;
                  while(rs.next()){
                  %>
          subcat[<%=count%>] = new Array("<%=rs.getString("NclassName")%>","<%=rs.getString("NclassId")%>","<%=rs.getString("parentId")%>");
                  <%
                  count++;
                  }
                  rs.close();
                  %>
          onecount=<%=count%>;
          <!--決定select顯示的函數-->
          function changelocation(locationid)
              {
              document.myform.NclassId.length = 0;

              var locationid=locationid;
              var i;
              for (i=0;i < onecount; i++)
                  {
                      if (subcat[i][2] == locationid)
                      {
                          document.myform.NclassId.options[document.myform.NclassId.length] = new Option(subcat[i][0], subcat[i][1]);
                      }       
                  }
                 
              }   
          </script>

          <FORM method="POST" name="myform" action="adminsave.jsp?action=add">
            <TABLE>
            
              <TR>
                <TD>一級分類</TD>
                <TD> 
                  <SELECT name="classId" onChange="changelocation(document.myform.classId.options[document.myform.classId.selectedIndex].value)" size="1">
                    <OPTION selected value>==請選一級分類==</OPTION>
                  <sql:query var="query" dataSource="${bookdev}">
                    SELECT * FROM class
                 </sql:query>
          <c:forEach var="row" items="${query.rows}">
           <option value="${row.classId}">${row.className}</option>
          </c:forEach>
          </select>
                </TD>
                <TD>選擇二級分類</TD>
                <TD>
                  <SELECT name="NclassId">
                    <OPTION selected value>==請選二級分類==</OPTION>
                  </SELECT>
                </TD>
              </TR>
          </TABLE>
           
          </FORM>
          </BODY>
          </HTML>

           

          posted @ 2005-06-07 15:53 似水流年 閱讀(660) | 評論 (0)編輯 收藏
          <html> 
          <head> 
          <title>Untitled Document</title> 
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
          </head><LINK href="../hellking.css" type=text/css rel=stylesheet> 
          <body> 
          <%request.setCharacterEncoding("gb2312"); %> 

          <script type="text/javascript"> 
             
          function setid() 
             

             str
          ='<br>'; 
             
          if(!window.form1.upcount.value) 
              window.form1.upcount.value
          =1
             
          if(window.form1.upcount.value>100)
             alert(
          "您最多只能同時上傳100個文件0"); 
             window.form1.upcount.value 
          = 100
             setid(); 
             }
           
             
          else
              
          for(i=1;i<=window.form1.upcount.value;i++
                str
          +='<div>文件'+i+':<input type="file" name="file'+i+'"></div><br><br>'; 
             window.upid.innerHTML
          =str+'<br>';}
           
             }
           
           
          </script> 



          <form name="form1" method="post" action="BookAction_do.jsp?action=${param.action}" >

           

            
          <div> 
            
          <table border="1" cellspacing="0" cellpadding="5" bordercolordark="#CCCCCC" bordercolorlight="#000000" bordercolor="#FFFFFF" style="border-collapse: collapse" height="169"> 
              
          <tr bgcolor="#CC0CCC"> 
                
          <td height="28" align="left" valign="middle" bgcolor="#C0CCCC">&nbsp; 
                  
          <div><font size="3"><b>文件上傳</b></font></div> 
                
          </td> 
              
          </tr> 
              
          <tr align="left" valign="middle" bgcolor="#eeeeee"> 
                
          <td bgcolor="#eeeeee" height="92" valign="top"> <br> 
                  
          <table border="0" cellspacing="1" cellpadding="2"> 

                    
          <tr> 
                      
          <td><font color="#FF0000"><b>*</b></font>上傳的文件大小不能超過<font color="#FF0000">999999999</font>個字節</td> 
                    
          </tr> 
                    
          <tr> 
                      
          <td> 

                        
          <b><font color="#FF0000">*</font></b>每次可以設置同時上傳<font color="#FF0000">100</font>個文件。<br>

                        設置上傳的個數 
                        
          <input type="text" value="1" name="upcount" size="20"> 
                        
          <input type="button" name="Button"  onClick="setid();" value="設定"> 

                      
          </td> 
                    
          </tr> 

                  
          </table> 
                
          </td> 
              
          </tr> 
              
          <tr> 
                
          <td id="upid"> 
                  
          <div>文件1: 
                    
          <input type="file" name="file1"> 
                  
          </div> 
                
          </td> 
              
          </tr> 


            
          </table> 
          </div> 
          <br> 
            
          <tr align="center" valign="middle" bgcolor="#eeeeee"> 
                
          <td bgcolor="#ccc000" height="33"> 
                  
          <input type="submit" name="Submit" value="確定"> 
                  
          <input type="reset" name="Submit2" value="重執"> 
                
          </td> 
              
          </tr> 
          </table></form> 
          </body> 
          </html> 

          posted @ 2005-06-07 15:51 似水流年 閱讀(561) | 評論 (0)編輯 收藏

          5.1 停用目錄檢視 (Directory Listing)

          在新的 Tomcat 安裝,預設目錄檢視是啟用的,這可以是一個很有用的測試工具,如果像我一樣,您有時會忘記在某個網頁應用程式使用了甚麼 servlets,可以簡單地輸入網頁應用程式的 URL ,就能取得完整的列表。

          但在生產的用途上,您可能想將它關掉。如果沒有其他東西,它不鼓勵使用者在他們不應該逗留的地方閒逛。要關掉這個選項基本上兩個方法:

          • 建立一個 index.html 檔案,將它放在網頁應用程式的目錄內。
          • 修改整體的 web.xml 檔案將選項關掉。

          第一個選項頗為簡單,因此我們只研究第二個選項。

          開啟 web.xml 檔案,這檔案在 $CATALINA_HOME/conf/ 內,是整體的web.xml檔案,即是這裡有任何改變都會影響該 Tomcat 所有網頁應用程式。如果您想要更精細的控制,例如某些應用程式關掉,但某些則開啟,就需要以第一個選項來做,建立 index.html檔案。

          找出以下部分:

              <servlet>
                  <servlet-name>default</servlet-name>
                  <servlet-class>
                    org.apache.catalina.servlets.DefaultServlet
                  </servlet-class>
                  <init-param>
                      <param-name>debug</param-name>
                      <param-value>0</param-value>
                  </init-param>
                  <init-param>
                      <param-name>listings</param-name>
                      <param-value>true</param-value>
                  </init-param>
                  <load-on-startup>1</load-on-startup>
              </servlet>
              

          這是 web.xml 的第一部分,我們關注的選項是:

                  <init-param>
                      <param-name>listings</param-name>
                      <param-value>true</param-value>
                  </init-param>
              

          將  <param-value> 改為 false,便可關掉目錄檢視,就是那麼簡單。

           

          5.2 自訂預設頁面

          Tomcat使用的慣例與Apache網頁伺服器相同,index.html 是任何目錄的預設或首頁。有時您可能想改變為 page1.html 或是 JSP 頁面,如以下一樣  now_see_this.jsp:

          要做到這樣,只需開啟網頁程式的 web.xml ,加上以下這些:

              <welcome-file-list>
                  <welcome-file>now_see_this.jsp</welcome-file>
                  <welcome-file>page1.html</welcome-file>
                  <welcome-file>index.htm</welcome-file>
              </welcome-file-list>
              

          要令整個系統改變,可在 $CATALINA_HOME/conf 下修改整體的 web.xml,並將 <welcome-file> 改變指向您所選的檔案。

          posted @ 2005-06-07 15:47 似水流年 閱讀(331) | 評論 (0)編輯 收藏
          僅列出標題
          共3頁: 上一頁 1 2 3 下一頁 
          主站蜘蛛池模板: 台北县| 湖南省| 梨树县| 宝兴县| 平远县| 大厂| 县级市| 鲁山县| 朝阳县| 大宁县| 双江| 合水县| 平昌县| 赣榆县| 库车县| 垦利县| 汾西县| 正阳县| 辽源市| 渝北区| 历史| 闵行区| 渝中区| 岗巴县| 乌拉特后旗| 朔州市| 蚌埠市| 阳春市| 湘阴县| 贵南县| 文山县| 新竹县| 和政县| 察隅县| 黎平县| 壤塘县| 仙居县| 永和县| 宁蒗| 天等县| 华安县|