<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    chenjinlong

    2011年8月26日 #

    文件加密解密

    /**加密
      *
      */
     public static String doEncrypt(String xmlStr) {
      try {
       return URLEncoder.encode(xmlStr, "GBK");
      } catch (UnsupportedEncodingException e) {
       e.printStackTrace();
      }
      return "加密錯誤";
     }

     /**
      * 解密
      * @param saveFile
      */
     public static void decrypt(File saveFile) {
      try {
       BufferedReader reader = null;
             reader = new BufferedReader(new FileReader(saveFile));
             String tempString = null;
             String str2 =null;
             while ((tempString = reader.readLine()) != null) {
              str2=URLDecoder.decode(tempString);
             }
       FileOutputStream fos = new FileOutputStream(saveFile);
       fos.write(str2.getBytes());
       fos.close();
             reader.close();
     
      } catch (IOException e) {
       e.printStackTrace();
      }
     }
     
     
     public static void main(String[] args) throws UnsupportedEncodingException {
      
      System.out.println(URLDecoder.decode("C:\\Documents and Settings\\chenchangqing\\Desktop\\實物轉移_20110824030821.xml", "GBK"));
     }




    這是把文件內容轉換成字符的方式

    posted @ 2011-08-26 11:49 chenjinlong 閱讀(187) | 評論 (0)編輯 收藏

    2010年11月12日 #

    smartupload.jar 實現(xiàn)文件上傳下載

         摘要: 前臺: <form action="uploadimage.jsp" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="file"> <input type="submit"&n...  閱讀全文

    posted @ 2010-11-12 20:44 chenjinlong 閱讀(1866) | 評論 (0)編輯 收藏

    2010年8月23日 #

    面向對象 —方法重寫、重載……

    區(qū)別方法重寫(覆蓋)和方法重載?
    方法重寫:方法名字、參數(shù)列表和返回類型必須相同。類中只允許出現(xiàn)一次這樣的方法,要接著往子類當中寫入。類中的方法覆蓋,父類和子類都可以相同。
    方法重載:方法名字相同,參數(shù)列表必須要不同,返回類型隨意。構造器就是典型的方法重載。

    this和super關鍵字的用法:this表示的本類的方法和成員;super表示父類的方法和成員。this()和super()都必須放在一個方法的開頭。
    如果子類構造器中沒有顯式地調用父類構造器,也沒有使用this關鍵字調用重載的其他構造器,則系統(tǒng)默認調用父類無參數(shù)的構造器,super()。

    塊執(zhí)行:
    在一個類中有初始化塊要先執(zhí)行,然后再是構造器。
    如:
    public class Test
    {
        String name;
         int age;
         String sex;
         public Test()
         {
              System.out.println("Test1被調用");
              sex ="Male";
              System.out.println("name="+name+" ,age="+age+" ,sex="+sex);
          }
         public Test(String theName)
         {  
              System.out.println("Test2被調用");
              name = theName;
              System.out.println("name="+name+" ,age="+age+" ,sex="+sex);
         }
         {
              name = "Tony Blair";
              age = 50;
              sex = "Female";
              System.out.println("Test初始化塊執(zhí)行后:name="+name
               +" ,age="+age+" ,sex="+sex);
          } 

          public static void main(String args[])
         {  
               Test t=new Test();
          }
    }

    posted @ 2010-08-23 20:10 chenjinlong 閱讀(434) | 評論 (0)編輯 收藏

    static和final關鍵字

    static關鍵字可用在變量、方法和內部類中。
    在類的定義體中,方法的外部可包含static語句塊,在所屬的類被載入時執(zhí)行一次,用于初始化static屬性,但不能初始化非靜態(tài)變量,類變量在整個類中共享。
    如:
    public class Count {
      private int serialNumber;
      public static int counter;

      static {
        System.out.println("static自由塊被執(zhí)行");   //先執(zhí)行靜態(tài)塊
        counter = 1;
      }

      public static int getTotalCount() {
        return counter;
      }
      public Count() {
        counter++;
        serialNumber=counter;
      }
      public static void main(String[] args)
      {
       System.out.println("main() invoked");
       System.out.println("counter = "+Count.counter);
            Count t=new Count();
            System.out.println("counter = "+Count.counter+" "+t.serialNumber);
      }
    }

    java.lang.Math是一個final類,不可被繼承,final變量是引用變量,則不可以改變它的引用對象,但可以改變對象的數(shù)據(jù),final方法不可以被覆蓋,但可以被重載。
    如:
    class Aclass
    {
     int a;
     //構造器
     public Aclass()
     {
      a = 100;
     }
     final public void paint(){
      System.out.println("55555555");
     }
     final public void paint(int i){
      System.out.println(i);
     }
     public void setA(int theA)
     {
      a = theA;
     }
     public int getA()
     {
      return a;
     }
    }

    //定義一個類來測試
    public class TestFinal
    {       
           //如果final變量是引用變量,則不可以改變它的引用對象,但可以改變對象的數(shù)據(jù)
     final Aclass REF_VAR=new Aclass();
     public static void main(String[] args)
     {
      TestFinal tf = new TestFinal();
      tf.REF_VAR.setA(1);
      System.out.println(tf.REF_VAR.getA());
      tf.REF_VAR.paint();
      tf.REF_VAR.paint(1);
     }
    }

    posted @ 2010-08-23 20:09 chenjinlong 閱讀(183) | 評論 (0)編輯 收藏

    abstract和interface關鍵字

    abstract用在方法或類前。抽象類必須繼承,抽象方法必須重寫。什么時候用呢?  當兩個類分別有一個公共方法,然后分別繼承公共類并完善抽象方法,這樣實現(xiàn)一種框架對類起到一個管理的作用。

    interface聲明方法和變量,特殊抽象類,和類不同的是,一個接口可以繼承多個父類接口,多個無關的類可以實現(xiàn)同一個接口,一個類可以實現(xiàn)多個無關的接口。

    posted @ 2010-08-23 20:08 chenjinlong 閱讀(192) | 評論 (0)編輯 收藏

    關于jsp頁面間,通過url傳遞參數(shù),出現(xiàn)亂碼的問題.

    1 . request.setCharacterEncoding("utf-8");
    只適合Post方法提交的數(shù)據(jù),

    2 . 適合用Get方法提交的數(shù)據(jù)
    String name = request.getParameter("name");
    name=new String(name.getBytes(“ISO8859_1”),“UTF-8”);

    3 .
    針對Tomcat服務器,修改server.xml
    <Connector port="8083" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="UTF-8" />
    這個只使用GET方法,不適合Post方法

    posted @ 2010-08-23 20:04 chenjinlong 閱讀(197) | 評論 (0)編輯 收藏

    使用JDBC連接SQL SERVER 2008的方法

    使用JDBC連接SQL SERVER 2008,很多人都在問,我自己也測試幾次,發(fā)現(xiàn)按照以前的方法連接會出現(xiàn)一點小問題。原因在于,SQL SERVER 2008采用了動態(tài)端口的機制,按照以前的方法連接會報告連接不了,其實端口寫對了完全沒有問題。連接方法如下:

    1,微軟目前沒有發(fā)布針對SQL Server 2008專用的JDBC驅動程序,使用SQL Server 2005 的就可以了,但是,需要注意: SQL Server 2008的新功能無法使用,這個必須等專用的JDBC發(fā)布之后才能使用。下載地址:

    Microsoft SQL Server 2005 JDBC Driver 1.2

    http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba

    2,設置端口為固定端口:

    SQL Server 配置管理器,按圖設置即可

     


    注意:動態(tài)端口設為空,即可禁用動態(tài)端口

    連接的寫法:


    jdbc:sqlserver://192.168.3.6:1368;databaseName=數(shù)據(jù)庫名稱;user=用戶名;password=密碼


    posted @ 2010-08-23 20:03 chenjinlong 閱讀(572) | 評論 (0)編輯 收藏

    數(shù)據(jù)庫連接池DBCP

    概念:數(shù)據(jù)庫連接池負責分配、管理和釋放數(shù)據(jù)庫連接,它允許應用程序重復使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不再是重新建立一個連接;釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接,以避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。

    需要注意:
    1. 最小連接數(shù)是連接池一直保持的數(shù)據(jù)庫連接,所以如果應用程序對數(shù)據(jù)庫連接的使用量不大,將會有大量數(shù)據(jù)庫連接資源被浪費。
    2. 最大連接數(shù)是連接池能申請的最大連接數(shù),如果數(shù)據(jù)庫連接請求超過此數(shù),后面的數(shù)據(jù)庫連接請求將被加入到等待隊列中,這會影響之后的數(shù)據(jù)庫操作。

    數(shù)據(jù)庫連接池的兩個任務:
    1. 限制每個應用或系統(tǒng)可以擁有的最大資源,也就是確定連接池的大小(PoolSize)。
    2. 在連接池的大?。≒oolSize)范圍內、最大限度地使用資源,縮短數(shù)據(jù)庫訪問的使用周期。

    例如: 物理連接數(shù)200個,每個連接提供250個Statemet,那么并發(fā)的Statement總數(shù)為200*250=50000個。

    Java開源連接池:
    Jakarta DBCP 可直接在應用程序中使用。(比較常用,集成在Tomcat和Struts中)
    C3P0是Hibernate的默認數(shù)據(jù)庫連接池。(常用,Hibernate)
    其他的還有Proxool、DDConnectionBroker、DBPool、XAPool、Primrose、SmartPool、MiniConnectionPoolManager。


    DBCP代碼實現(xiàn):
    //創(chuàng)建數(shù)據(jù)源
    public static DataSource setupDataSource(String connectURI) {
        BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName(org.gjt.mm.mysql.Driver);
        ds.setUsername("username");
        ds.setPassword("password");
        ds.setUrl(connectURI);
        return ds;   
    }

    //關閉數(shù)據(jù)源
    public static void shutdownDataSource(DataSource ds) throws SQLException {
        BasicDataSource bds = (BasicDataSource)ds;
        bds.close();
    }

    //數(shù)據(jù)源的使用

    DataSource dataSource = getDataSource();
      Connection conn = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;
      
      try {
       conn = dataSource.getConnection();
       pstmt = conn.prepareStatement("select * from users");
       rs = pstmt.executeQuery();
       while(rs.next()) {
        System.out.println(rs.getInt("id"));
       }
      } catch(Exception e) {
       e.printStackTrace();
      } finally {
       try {
        rs.close();
        pstmt.close();
        conn.close();
       } catch(Exception ex) {
        ex.printStackTrace();
       }
      } 




    在Tomcat中配置數(shù)據(jù)庫連接池:

    我們使用Tomcat中l(wèi)ib文件夾下的tomcat-dbcp.jar。
    1. 修改server.xml文件在<Service>中寫入以下代碼:
    <Context path="/WebProject" docBase="WebProject" reloadable="true" crossContext="true">
         
         <Resource auth="Container" name="jdbc/CompanyDB" type="javax.sql.DataSource"
          factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
         driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"     
         url="jdbc:sqlserver://localhost:1433;DataBaseName=Company" 
         username="sa" 
          password="root" 
          maxActive="100" 
          maxIdle="30" 
          maxWait="10000"   
         removeAbandoned=“true”
          removeAbandonedTimeOut="10" 
          logAbandoned="true"/>
        </Context>


    path:工程路徑。
    docBase:工程名字。
    name:JNDI的名字。
    type:數(shù)據(jù)源的類。
    factory:指定生成的DataReource的factory類名;默認DBCP工廠類。
    driverClassName:數(shù)據(jù)庫驅動名。
    url:數(shù)據(jù)庫連接的URL。
    username:數(shù)據(jù)庫用戶名。
    password:數(shù)據(jù)庫密碼。
    maxActive:最大連接數(shù)據(jù)庫數(shù),設為0表示沒有限制。
    maxIdle:最大等待數(shù)量,設為0表示沒有限制。
    maxWait:最大等待秒數(shù),單位為ms。
    removeAbandoned:是否自我中斷,默認為false。
    removeAbandonedTimeOut:幾秒后會自我中斷,removeAbandoned必須為true。
    logAbandoned:是否記錄中斷事件,默認為false。



    2. 修改web.xml文件,增加一個標簽,輸入以下代碼:
    <resource-ref>
         <description>Company Connection</description>
         <res-ref-name>jdbc/CompanyDB</res-ref-name>
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
    </resource-ref>

    res-ref-name:指定JNDI的名字。
    res-type:指定資源類名。
    res-auth:指定資源的Manager。

    3. 代碼中使用JNDI代碼進行獲取:
    Context ctx = new InitalContext();
    DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/CompanyDB");
    Connection conn = ds.getConnection();


    注意:java:comp/env/ 是java中JNDI固定寫法。


    注意:如果該配置出現(xiàn)錯誤,采用另一種方式進行配置

    在tomcat中的server.xml不進行配置,而在context.xml中進行設置
    代碼如下:
    <Resource name="jdbc/CompanyDB" type="javax.sql.DataSource" password="root"
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" maxIdle="2" maxWait="5000" username="sa" url="jdbc:sqlserver://localhost:1433;DataBaseName=Company" maxActive="100"/>


    web.xml的設置同上一個配置一樣。

    posted @ 2010-08-23 20:01 chenjinlong 閱讀(279) | 評論 (0)編輯 收藏

    2010年5月27日 #

    關于JSP幾個內置對象的用法

    JSp的session內置對象取值方法
    //創(chuàng)建session對象
    HttpSession session =requst.getSession();
    //設置session 對象的屬性值
    session.setAttribute("屬性名",值);
    取值
    Object object=session.getAttibute("屬性名")
    設置方法
    //設置響應回去的類型
    response.setContentType("text/html");
    //設置響應的字符編碼格式
    response.setCharacterEncoding("UTF-8");

    request(請求)
    //獲取請求屬性的值
    request.getParameter("屬性名");
    多用于表單提交和URL參數(shù)的傳遞的取值

     JSp內置對象生命周期:
     
    out 只在本jsp頁面使用  無生命周期
    request  生命周期 一次請求
    response 生命周期 一次響應
    session  生命周期  項目瀏覽器關閉時,生全周期結束,默認不操作項目超過30分鐘生命周期結束
    application 生命周期   當開啟Tomcat服務器時創(chuàng)建,關閉Tomcat服務器時結束生命周期  (作用:統(tǒng)計服務器訪問人數(shù)或流量)

     

    頁面跳轉:
    response.sendRedirect("admin/one.jsp")  重定向
    RequestDispatcher 請求跳轉
    兩者實現(xiàn)的效果相同
    二者的區(qū)別:
    1、
    URL 地址的變化用response.sendRedirect時,RequestDi.spatcher不會使URL地址進行變化。
    RepuestDispatcher 是服務器端請求機制的跳轉
    response.sendRedirect 是客戶端請求機制的重定向
    2、
    RequestDispatcher傳值通過JSP-Servlet-JSp形式直接傳入到下一個JSp頁面
    response.sendRedirect 傳值通過JSP-Servlet-JSP形式,只能夠傳遞到請求機制重定向這之前
    3、
    如果項目要跳轉到另外一個服務器的頁面時,用response.sendRedirect進行重定向
    4、
    我們盡量使用RequestDispatcher方式,因為是服務器響應,所以在web容器執(zhí)行效率較高


    RequestDispatcher什么時候使用呢?
    項目中不進行頁面的交互跳轉的時候,例如一個界面的增、刪、改、查,或者相關聯(lián)同類型模塊之間的跳轉

    response.sendRedirect重定向什么時候使用呢?
    無關聯(lián)的不同模塊間跳轉使用,例如,用戶界面模塊跳轉到產品信息界面模塊

    5、
    RequestDispatcher基本上認定使用在Servlet里面
    response.sendRedirect 用在Servlet和JSP頁面較多


    重定向傳值 只影響request,不影響session的傳值

    session何時使用?
    傳值時盡量不要使用session
    購物車的實現(xiàn)必須使用session對象

    session.removeAttribute("name") 全部刪除物品
    如果選擇性刪除?
    傳入要刪除的購物信息主鍵id值,根據(jù)id值支查找集合中的對應信息,然后做集合中的刪除操作
    for(Product product : list){

        if(deleteid==product.getid()){
               list.remove(product);
    }
    }
    session.setAttribute("gouwu",list)



    兩種提交方式的亂碼處理:

    post提交方式亂碼處理
    中文亂碼問題
    request.setcharacterEncoding("UTF-8");

    處理get方式提交的亂碼方式處理
    String names=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")

    posted @ 2010-05-27 20:54 chenjinlong 閱讀(1122) | 評論 (0)編輯 收藏

    2010年5月7日 #

    5月7日收獲(DAO)

                                                                                                         DAO程序設計
             在用DAO設計模式編寫程序時,根據(jù)以下幾個步驟:
                  1、定義接口;
                  2、定義底層JavaBean;
                  3、數(shù)據(jù)庫連接;
                  4、實現(xiàn)接口;
                  5、工廠;
                  6、主函數(shù);
    根據(jù)你的項目,在不同的包里面寫相應的代碼!
              下面是一個簡單的例子:
             
    1、定義接口: 

    package com.qhit.s2.t13.dao;

    import java.util.List;

    import com.qhit.s2.t13.javaben.User;

    public interface IUserDAO {
     
     public List<User> findAll();

    }
    2、JavaBean:

    package com.qhit.s2.t13.javaben;

    public class User {
     
     private Integer id;
     private String username;
     private String password;
     public User() {
      super();
     }
     public User(Integer id, String username, String password) {
      super();
      this.id = id;
      this.username = username;
      this.password = password;
     }
     public Integer getId() {
      return id;
     }
     public void setId(Integer id) {
      this.id = id;
     }
     public String getUsername() {
      return username;
     }
     public void setUsername(String username) {
      this.username = username;
     }
     public String getPassword() {
      return password;
     }
     public void setPassword(String password) {
      this.password = password;
     }

    }

    3、數(shù)據(jù)庫連接:

    package com.qhit.s2.t13.dao.impl;

    import java.sql.DriverManager;
    import java.sql.SQLException;

    public class DBConnection {
     
     private java.sql.Connection conn = null;
     
    // public final static String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    // public final static String URL = "jdbc:sqlserver://localhost:1433;DataBaseName=Company";
    // public final static String DBUSER = "sa";
    // public final static String DBPASS = "root";
     
     public java.sql.Connection getConnection() {
      try {
       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       conn = DriverManager.getConnection(
         "jdbc:sqlserver://localhost:1433;DataBaseName=Company",
         "sa", "root");
       return conn;
      } catch(Exception e) {
       e.printStackTrace();
      }
      return null;
     }
     
     
     public void closeConnection() {
      if(conn != null) {
       try {
        conn.close();
       } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
     }

    }

    4、實現(xiàn)接口:

    package com.qhit.s2.t13.dao.impl;

    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;

    import com.qhit.s2.t13.dao.IUserDAO;
    import com.qhit.s2.t13.javaben.User;

    public class UserDAOImpl implements IUserDAO {

     public List<User> findAll() {
      
      List<User> userList = new ArrayList<User>();
      
      String sql = "select * from users";
      DBConnection db = new DBConnection();
      try {
       
    //   System.out.println(db.getConnection());
       
       PreparedStatement ps = db.getConnection().prepareStatement(sql);
       ResultSet rs = ps.executeQuery();
       if(rs != null) {
        while(rs.next()) {
         User user = new User();
         user.setId(rs.getInt("id"));
         user.setUsername(rs.getString("userName"));
         user.setPassword(rs.getString("password"));
         
         userList.add(user);
        }
       }
       
       
       rs.close();
       ps.close();
       db.closeConnection();
       
       return userList;
       
       
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       
       e.printStackTrace();
       return null;
      }
      
      
     }

    }

    5、工廠

    package com.qhit.s2.t13.dao.impl;

    import com.qhit.s2.t13.dao.IUserDAO;

    public class DAOFactory {
     
     public static IUserDAO getUserDAO() {
      return new UserDAOImpl();
     }

    }

    6、主函數(shù):

    package main;

    import java.util.List;

    import com.qhit.s2.t13.dao.impl.DAOFactory;
    import com.qhit.s2.t13.javaben.User;

    public class TestMain {

     public static void main(String[] args) {
      // TODO Auto-generated method stub
      List<User> list = DAOFactory.getUserDAO().findAll();
      
      if(list != null) {
       System.out.println("chenggong");
      } else {
       System.out.println("shipai");
      }
      
     }

    }


     



     


    posted @ 2010-05-07 17:48 chenjinlong 閱讀(329) | 評論 (1)編輯 收藏

    僅列出標題  下一頁

    My Links

    Blog Stats

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久热免费在线视频| 亚洲国产成人精品无码区二本| 特黄aa级毛片免费视频播放| 免费看片免费播放| 亚洲日产乱码一二三区别| 成人在线视频免费| 亚洲一卡2卡3卡4卡5卡6卡| 成人人观看的免费毛片| 亚洲日韩久久综合中文字幕| 成人免费视频软件网站| 亚洲av无码有乱码在线观看| 最近2019中文免费字幕| 亚洲精品美女久久久久久久| 国产成人aaa在线视频免费观看| 最新亚洲人成网站在线观看| 亚洲男人天堂影院| 亚洲一级毛片免费观看| 中文字幕亚洲码在线| 免费观看国产小粉嫩喷水| 九九九精品视频免费| 日本红怡院亚洲红怡院最新| 18禁止看的免费污网站| 亚洲男人的天堂网站| 国产午夜鲁丝片AV无码免费| 一区二区三区在线免费 | 日韩精品视频免费网址| 免费无码午夜福利片69| 久久精品国产亚洲沈樵| 91免费国产在线观看| jizzjizz亚洲日本少妇| 中文亚洲AV片不卡在线观看| 精品一区二区三区无码免费视频| 亚洲国产精品综合久久20| 国产精品va无码免费麻豆| a在线观看免费网址大全| 亚洲精品伊人久久久久| 亚洲欧洲日产国码高潮αv| 2020天堂在线亚洲精品专区| 免费h黄肉动漫在线观看| 99久久精品免费精品国产| 亚洲精品国产suv一区88 |