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

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

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

    posts - 26,  comments - 14,  trackbacks - 0
     

           java對(duì)cookie的操作其實(shí)不是很難的,主要就是對(duì)cookie 的建立和cookie的讀取操作吧,還有對(duì)cookie的生命周期的設(shè)置,和cookie的路徑的設(shè)置。。。。
     
    一:首先我們建立一個(gè)有生命周期的cookie吧,代碼如下:

                 int seconds=saveTime*24*60*60;//這里是一天為單位設(shè)置其周期
                 Cookie cookie=new Cookie("cookiename","cookievalue");
                 cookie.setMaxAge(sendons);
                //設(shè)置路徑,這個(gè)路徑即為該工程下都可以訪問(wèn)該cookie如果不設(shè)置路徑,那么設(shè)置該路徑cookie路徑及其路徑可以訪問(wèn)
                  cookie.setPath("/");
                 response.addCookie(cookie);

    二:建立一個(gè)沒(méi)有生命周期的cookie,即隨著瀏覽器的關(guān)閉就消失的cookie,代碼如下: 

               HttpServletRequeset  request;
               HttpServletResponse response;
               Cookie  cookie=new Cookie("cookiename","cookievalue");// 相當(dāng)于一個(gè)Map
               response.addCookie(cookie);

    :下面我介紹如何讀取cookie吧,代碼如下:

                 Cookie[] cookies=request.getCookies();
                  String[]    cooks=null;
                  String username=null; 
                   String password=null;
                  if(cookie!=null){
                     
                      for(Cookie coo:cookies){
                          String aa=coo.getValue();
                           cookie=aa.split("==");
                         if(cooks.length==2){
                            
                               username=cooks[0];//get  the cookie name
                              password=cooks[1];//get the cookie  value

                           }
                        }
                    }
    posted @ 2010-12-11 16:05 龍ぜ?xì)垊?閱讀(1736) | 評(píng)論 (2)編輯 收藏

        基于數(shù)據(jù)庫(kù)的Java Web

    現(xiàn)今所有的 Web都是基于數(shù)據(jù)庫(kù)的,可見(jiàn)數(shù)據(jù)庫(kù)在Web中的開(kāi)發(fā)時(shí)如此的重要。然而基本上所有的網(wǎng)站都是要求客戶登陸的時(shí)候都必須事先注冊(cè)賬號(hào),這樣才能進(jìn)入網(wǎng)頁(yè),訪問(wèn)其中的頁(yè)面,資源。。開(kāi)發(fā)基于數(shù)據(jù)庫(kù)的Web程序時(shí),涉及到多個(gè)用戶同時(shí)請(qǐng)求與數(shù)據(jù)庫(kù)建立"連接"的問(wèn)題,但多用戶并發(fā)處理目前還是一個(gè)難點(diǎn)。該文在對(duì)傳統(tǒng)數(shù)據(jù)連接模式的分析基礎(chǔ)上,采用了一種基于對(duì)象的數(shù)據(jù)連接池的設(shè)計(jì)方案。通過(guò)連接對(duì)象放置預(yù)先建立的若干"連接",根據(jù)一定的策略管理這些"連接",防止"連接"過(guò)多內(nèi)存開(kāi)銷過(guò)大,及連接排隊(duì)過(guò)長(zhǎng)問(wèn)題。并用JAVA實(shí)現(xiàn)了該方案,在實(shí)際應(yīng)用中提供了一個(gè)高效的連接管理策略,提高了Web數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的性能。

      一:在此我通過(guò)一個(gè)實(shí)際的例子談?wù)勎易罱頦eb得心得,首先我們建立一個(gè)javaWeb項(xiàng)目在Myeclipse下。首先建立好數(shù)據(jù)庫(kù)連接,即建立一個(gè)Vo對(duì)象User類,如下:
    package vo;
    /*
     
    用戶名稱:<input type="text" name="username"><br>
    用戶密碼:<input type="password" name="password"><br>
    用戶愛(ài)好:<input type="checkbox" name="hobby" value="1">游泳
      <input type="checkbox" name="hobby" value="2">足球<br>
    用戶性別:<input type="radio" name="gender" value="male">男
      <input type="radio" name="gender" value="female">女
      <input type="radio" name="gender" value="secret">保密<br>
    用戶職位:<select name="position">
      <option value="CEO">CEO</option>
      <option value="CFO">CFO</option>
      <option value="CTO">CTO</option>
      </select><br>
    用戶簡(jiǎn)歷:<textarea rows="5" cols="20" name="resume"></textarea>
           <input type="submit" value="注冊(cè)">
           */
    public class User {
     
     private int id;
     private String userName;
     private String passWord;
     private String hobby;
     private String gender;
     private String position;
     private String resume;
     public int getId() {
      return id;
     }
     public void setId(int 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;
     }
     public String getHobby() {
      return hobby;
     }
     public void setHobby(String hobby) {
      this.hobby = hobby;
     }
     public String getGender() {
      return gender;
     }
     public void setGender(String gender) {
      this.gender = gender;
     }
     public String getPosition() {
      return position;
     }
     public void setPosition(String position) {
      this.position = position;
     }
     public String getResume() {
      return resume;
     }
     public void setResume(String resume) {
      this.resume = resume;
     }
     

    }


    二:這樣我們建立好了實(shí)體對(duì)象之后,現(xiàn)在我們來(lái)建立UserDAO接口和DAOFactory兩個(gè)類如下:

    package dao;

    import vo.User;

    public interface UserDAO {
     
     //建立一個(gè)接口
     
     void save(User user);

    }


     

    package factory;

    import impl.UserDaoImpl;
    import dao.UserDAO;

    public class DAOFactory {
     public static UserDAO getUserDAOInstance(){
      
      
      return new UserDaoImpl();
     }

    }


    三:現(xiàn)在我們來(lái)建立ConnectionUtil類,這里我才用我們最常用的一種方法來(lái)連接數(shù)據(jù)庫(kù)Database即:

    package db;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Properties;

    public class ConnectionUtil {

      public Connection openConnection() {
      
      String driver = "";
      String url = "";
      String user = "";
      String password = "";
      Properties prop = new Properties();   //實(shí)例化一個(gè)配置文件的對(duì)象
      Connection conn = null;
      try {
       // 加載屬性文件
       prop.load(this.getClass().getClassLoader().getResourceAsStream(
         "DBConfig.properties"));
       driver = prop.getProperty("driver");
       url = prop.getProperty("url");
       user = prop.getProperty("user");
       password = prop.getProperty("password");
       // Class.forName加載驅(qū)動(dòng)
       Class.forName(driver);
       // DriverManager獲得連接
       conn = DriverManager.getConnection(url,
         user, password);
       return conn;
      } catch (Exception e) {
       e.printStackTrace();
      }
      return null;
     }
    }

    四:是實(shí)現(xiàn)Java程序與數(shù)據(jù)庫(kù)的鏈接層建立一個(gè)UserDaoImpl類:


    package impl;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;

     

    import vo.User;
    import dao.UserDAO;
    import db.ConnectionUtil;

    public class UserDaoImpl implements UserDAO{
     //實(shí)現(xiàn)接口UerDAO

     public void save(User user) {
      
      
      //實(shí)現(xiàn)接口類中的方法
      ConnectionUtil cu=new ConnectionUtil();//初始化連接的數(shù)據(jù)庫(kù)
      Connection conn=cu.openConnection();
      String sql = "insert into User(username,password,hobby,gender,position,resume) values(?,?,?,?,?,?)";
      try {
       PreparedStatement pstmt = conn.prepareStatement(sql);
       
       pstmt.setString(1, user.getUserName());
       pstmt.setString(2, user.getPassWord());
       pstmt.setString(3, user.getHobby());
       pstmt.setString(4, user.getGender());
       pstmt.setString(5, user.getPosition());
       pstmt.setString(6, user.getResume());
       
       pstmt.executeUpdate();
      } catch (SQLException e) {
       e.printStackTrace();
      }finally{
       try {
        conn.close();//關(guān)閉連接數(shù)據(jù)庫(kù)
       } catch (SQLException e) {
        e.printStackTrace();
       }
      }
     }
     }



    五:是通過(guò)網(wǎng)站往數(shù)據(jù)庫(kù)中加載數(shù)據(jù),如下:


     

    package com.bx.Servletform;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import dao.UserDAO;

    import factory.DAOFactory;

    import vo.User;

    public class RegisterServlet extends HttpServlet {
     
      
     public void doPost(HttpServletRequest request,HttpServletResponse response)
     throws ServletException,IOException{
      String username=request.getParameter("username");
      String password=request.getParameter("password");
      String[] hobby=request.getParameterValues("hobby");
      String gender=request.getParameter("gender");
      String resume=request.getParameter("resume");
      String position=request.getParameter("position");
      User user=new User();
      user.setUserName(username);
      user.setGender(gender);
      user.setPassWord(password);
      user.setPosition(position);
      user.setResume(resume);
      String hobbyStr="";
      if(hobby!=null&&hobby.length>0){
       for(int i=0;i<hobby.length;i++){
        hobbyStr=hobby[i]+":";
       }
      }
      user.setHobby(hobbyStr);
      UserDAO udao=DAOFactory.getUserDAOInstance();
      udao.save(user);
      PrintWriter out=response.getWriter();
      out.println("Hello World Servlet james");
      System.out.println("username |"+username);
      System.out.println("password |"+password);
      System.out.println("gender |"+gender);
      System.out.println("resume |"+resume);
      System.out.println("position |"+position);
      if(hobby!=null&& hobby.length>0){
       for(int i=0;i<hobby.length;i++){
        System.out.println(hobby[i]);
       }
      }
      //實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)
      if(username!=null && username.equals("james")){
       
       request.getRequestDispatcher("/success.html").forward(request, response);
      
         }else{
      request.getRequestDispatcher("/failure.jsp").forward(request, response);
      
     }
     }


    現(xiàn)在我們來(lái)配置一下register,jsp吧,如下:

    <form action="/Servlet_Form_Project/form" method="post">
    <!--form 中有兩個(gè)最為重要的屬性-->
        用戶名稱:<input type="text" name="username"><br>
        用戶密碼:<input type="password" name="password"><br>
        用戶愛(ài)好:<input type="checkbox" name="hobby" value="1">游泳
          <input type="checkbox" name="hobby" value="2">足球<br>
        用戶性別:<input type="radio" name="gender" value="male">男
          <input type="radio" name="gender" value="female">女
          <input type="radio" name="gender" value="secret">保密<br>
        用戶職位:<select name="position">
          <option value="CEO">CEO</option>
          <option value="CFO">CFO</option>
          <option value="CTO">CTO</option>
          </select><br>
        用戶簡(jiǎn)歷:<textarea rows="5" cols="20" name="resume"></textarea><br/>
               <input type="submit" value="注冊(cè)">
       </form>


    試圖效果如下:
     


    現(xiàn)在我們來(lái)配置一下WEB.xml如下所示:
     <servlet>
             <servlet-name>RegisterServlet</servlet-name>
            <servlet-class>com.bx.Servletform.RegisterServlet</servlet-class>
     <!-- this is servlet -->
     </servlet>
     <servlet-mapping>
            <servlet-name>RegisterServlet</servlet-name>
            <url-pattern>/form</url-pattern>
        </servlet-mapping>


    在此我們已經(jīng)完成了Java Web與數(shù)據(jù)庫(kù)的連接:至此我們可以開(kāi)始comcat,在瀏覽器中輸入連接的地址即:http://localhost:8080/Servlet_Form_Project/register.jsp
    得到頁(yè)面為:
       
    這時(shí)候我們可以查看數(shù)據(jù)庫(kù)中是否在如了我們輸入的數(shù)據(jù)即:

     

    posted @ 2010-12-09 20:55 龍ぜ?xì)垊?閱讀(4394) | 評(píng)論 (2)編輯 收藏
     
    一:軟件下載
       1.Java

      這里我使用的是jdk1.6.0...
      
      2.tomcat

       我使用的是tomcat的版本是6.0.29的,安裝版或者是解壓版的都可以使用,只是有一點(diǎn)不同而已。
      
      3.數(shù)據(jù)庫(kù)

       推薦使用 MySQL,    因?yàn)镸ySQL使用更加的解潔,明了。。

    二:軟件安裝

     1.雙擊安裝jdk。
        裝完后在我的電腦->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量:
      
     ?。僭O(shè)你的JDK安裝在c:/jdk)
      JDK_HOME=C:\jdk
      classpath=.;%JDK_HOME%\lib\dt.jar;%JDK_HOME%\lib\tools.jar
      在PATH(原來(lái)就已存在)中添加:%JDK_HOME%\bin
      這樣jdk環(huán)境配置成功。
      
      2.雙擊安裝你的Tomcat。(建議安裝在一個(gè)盤的根目錄下入D:/tomcat)
      
      注:apache-tomcat-6.0.29這是免安裝版的。。嘿嘿
      這樣已經(jīng)完整安裝完Tomcat了。
      建議:在PATH中再添加:%JDK_HOME%\bin;%TOMCAT_HOME%\bin
      這樣做的目的是在虛擬dos中可以使用tomcat的工具
      最后順便把第一步下載回來(lái)的三個(gè)jar文件放到tomcat目錄下的common/lib目錄中
      
      3.測(cè)試:
      
      打開(kāi)開(kāi)始菜單中的tomcat(小貓圖案)的monitor工具,點(diǎn)擊start server,顯示綠色三角形即為啟動(dòng),打開(kāi)瀏覽器在地址欄輸入:http://localhost:8080/可以看到小貓圖案說(shuō)明已經(jīng)配置成功。
      
      4.安裝數(shù)據(jù)庫(kù)(sqlserver)
      
      windows xp下必須安裝個(gè)人版或開(kāi)發(fā)版(個(gè)人推薦個(gè)人版)。
      
      一直next就可以(微軟的東西就是方便),這里注意到域帳戶那里選擇本機(jī)帳戶,到驗(yàn)證那里選擇混合驗(yàn)證(這點(diǎn)很重要,若選擇系統(tǒng)認(rèn)證以后在程序中就連接不上數(shù)據(jù)庫(kù)),為你的sa用戶輸入一個(gè)密碼(如果練習(xí)用就不用考慮安全性啦,選擇“空密碼”就可以)

    一切都準(zhǔn)備好,我們具體的做一個(gè)小程序吧:
               1.建立一個(gè)繼承于HttpServlet的類TestServlet,在里面寫HttpServlet中的方法,一般常用的方法有doGet(),doPost(),doPut(),doDelete()其中最常用的有doGet(),doPost()兩個(gè)方法。。
          代碼如下:
                

    package com.dr.servlet;

    import java.io.IOException;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class TestServlet extends HttpServlet{
     public void init(){
      System.out.println("hello");
     }
     
     public void doGet(HttpServletRequest request,HttpServletResponse response)
     {
      System.out.println("how are you");
     }
     public void doPost(HttpServletRequest request,HttpServletResponse response)
     throws ServletException,IOException{
      String username=request.getParameter("username");
      String pws=request.getParameter("password");
      System.out.println(username);
      System.out.println(pws);
      //實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)
      if(username!=null && username.equals("james")){
       
        request.getRequestDispatcher("/successfull.html").forward(request, response);
       
      }else{
       request.getRequestDispatcher("/failure.html").forward(request, response);
       
      }
      
      
      
      System.out.println("doPost method");
     }
    }


      2.我們應(yīng)該配置web.xml文件:
       代碼如下:

     <servlet>
             <servlet-name>TestServlet</servlet-name>
            <servlet-class>com.dr.servlet.TestServlet</servlet-class>
     <!-- this is servlet -->
     </servlet>
     <servlet-mapping>
            <servlet-name>TestServlet</servlet-name>
            <url-pattern>/test</url-pattern>
        </servlet-mapping> 


       3.下面我們配置demo.html 

          body中的代碼如下:


    <form name="f1" id="f1" action="/Servlet_Basic/test" method="post">
    <!--其中的method="post"與"get"的區(qū)別別需要清楚,這是非常重要的-->
    <table >
        
         <tr><td>賬號(hào)</td> <td><input type="text" name="username" id="username"/></td></tr>
         <tr><td>密碼</td> <td><input type="password" name="password" id="password"/></td></tr>
          <tr> <td colspan="3" align="center"><input type="submit" value="歡迎光臨" /></td></tr>
     
     
      </table>
      
        </form>

    即為:
      
      這時(shí)候你可以在啟動(dòng)tomcat,然后在internet中輸入http://localhost:8080/Servlet_Basic/demo.html,就啟動(dòng)了剛才得網(wǎng)頁(yè),如下:
     


    posted @ 2010-12-08 12:43 龍ぜ?xì)垊?閱讀(1149) | 評(píng)論 (0)編輯 收藏
     淺談?dòng)肑DBC連接MySQL
             在學(xué)習(xí)數(shù)據(jù)庫(kù)開(kāi)發(fā)的實(shí)例,這里淺談一下用JDBC連接數(shù)據(jù)庫(kù)MySQL(當(dāng)然也可以連接 SQL Server或者Oracle了,只是我更喜歡開(kāi)源軟件,同時(shí)也簡(jiǎn)單些。。。)

    首先正確安裝好MySQL,建立好數(shù)據(jù)庫(kù),下面我們來(lái)建立一個(gè)數(shù)據(jù)庫(kù)吧。

               JDBC連接MySQL
                    加載節(jié)注冊(cè)JDBC驅(qū)動(dòng)程序,
                             Class.forName("com.mysql.jdbc.Driver");
                            Class.forName("com.mysql.jdbc.Driver").newInstance();
                JDBC URL定義驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)之間的鏈接
                            標(biāo)準(zhǔn)語(yǔ)法:

                                 <protocol(主要通信協(xié)議)>:<subprotocol(次要通訊協(xié)議,驅(qū)動(dòng)程序名稱)>:<data source identifier(數(shù)據(jù)源)>

                            MySQL JDBC URL的格式:

                                  jdbc:mysql://[hostname][:port]/[dbname][?param1=value1][&param2=value2]….

                            例如:

                                   jdbc:mysql://localhost:3306/jdbc_db","root","1234"
                            

    常見(jiàn)參數(shù):

    user                       用戶名

    password                  密碼

    autoReconnect                  聯(lián)機(jī)失敗,是否重新聯(lián)機(jī)(true/false

    maxReconnect              嘗試重新聯(lián)機(jī)次數(shù)

    initialTimeout               嘗試重新聯(lián)機(jī)間隔

    maxRows                   傳回最大行數(shù)

    useUnicode                 是否使用Unicode字體編碼(true/false

    characterEncoding          何種編碼(GB2312/UTF-8/…

    relaxAutocommit            是否自動(dòng)提交(true/false

    capitalizeTypeNames        數(shù)據(jù)定義的名稱以大寫表示
     

                          JDBC訪問(wèn)數(shù)據(jù)庫(kù)的步驟:

                               1.加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)

                               2.獲得數(shù)據(jù)庫(kù)連接

                               3.創(chuàng)建SQL語(yǔ)句

                               4.執(zhí)行查詢

                               5.遍歷結(jié)果集

                               6.關(guān)閉數(shù)據(jù)庫(kù)連接
      數(shù)據(jù)庫(kù)的鏈接一般有三種方法,這里簡(jiǎn)單說(shuō)一種,有小例子如下:
               

        ckage com.bx.jdbc;

        port java.sql.Connection;
        port java.sql.DriverManager;
        port java.util.Properties;

    public class ConnectionUtil {

     public Connection openConnection() {
      
      String driver = "";
      String url = "";
      String user = "";
      String password = "";
      Properties prop = new Properties();
      Connection conn = null;
      try {
       // 加載屬性文件
       prop.load(this.getClass().getClassLoader().getResourceAsStream(
         "DBConfig.properties"));
       driver = prop.getProperty("driver");
       url = prop.getProperty("url");
       user = prop.getProperty("user");
       password = prop.getProperty("password");

       // Class.forName加載驅(qū)動(dòng)
       Class.forName(driver);

       // DriverManager獲得連接
       conn = DriverManager.getConnection(url,user, password);
       return conn;
      } catch (Exception e) {
       e.printStackTrace();
      }
      return null;
     }
    }
    執(zhí)行的主函數(shù)如下:

    package com.bx.jdbc;

    public class Main {
     /**
      * @param args
      */
     public static void main(String[] args) {
      ConnectionUtil cu = new ConnectionUtil();

      // 第三種方法
      System.out.println("這是最常用的一種方法:" + cu.openConnection());
     }
    }

    執(zhí)行結(jié)果:
     

    謝謝大家分享,但愿能對(duì)您帶來(lái)一點(diǎn)幫助,希望能幫提出寶貴的意見(jiàn)。。。
    posted @ 2010-12-08 09:03 龍ぜ?xì)垊?閱讀(2473) | 評(píng)論 (2)編輯 收藏
    posted @ 2010-12-07 16:49 龍ぜ?xì)垊?閱讀(122) | 評(píng)論 (0)編輯 收藏
    殺毒軟件:
    殺毒軟件是每一臺(tái)電腦不可少的應(yīng)用軟件之一,現(xiàn)在我來(lái)研究 一下殺毒軟件的整個(gè)工作流程吧。。。首先要明確殺毒軟件的目的是什么,怎么樣才能實(shí)現(xiàn)這一目的。。。
    殺毒軟件是客戶在通過(guò)掃描自己的電腦里的每一個(gè)文件,然后與殺毒軟件服務(wù)器病毒庫(kù)里的病毒相比較,如果你電腦里有和服務(wù)器中文件相同的,殺毒軟件就視為是病毒,然后有用戶選擇是否要把掃描出來(lái)的文件刪除。。。。下面是我用Java語(yǔ)言來(lái)實(shí)現(xiàn)這個(gè)功能的。。。希望對(duì)大家有所感悟。現(xiàn)在說(shuō)說(shuō)我的具體實(shí)現(xiàn)的步驟吧。



    服務(wù)器代碼:

    package server;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;

    import com.dr.bean.Virus;

     


    public class Server {
     


     public static List<Virus> virusList = new ArrayList<Virus>();
     public static void main(String[] args) throws IOException {
      ServerSocket server = null;
      //輸出肯定使用打印流
      PrintStream out = null;
      //服務(wù)器肯定也要接收數(shù)據(jù)
      BufferedReader buf = null;
      //實(shí)例化一個(gè)服務(wù)器的監(jiān)聽(tīng)端
      server = new ServerSocket(8888);
      //可以用一種死循環(huán)的方式接收內(nèi)容
      System.out.println("---------服務(wù)器已經(jīng)啟動(dòng)----------");
      Socket client = null;
      //初始化暗殺名單
      //List<Virus> virusList = getVirusList();
      while(true){
       //不斷接收內(nèi)容
       client = server.accept();
       //準(zhǔn)備好向客戶端輸入內(nèi)容
       out = new PrintStream(client.getOutputStream());
       //而且客戶端要有輸入給服務(wù)器端
       buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
       
       
       //接收客戶端發(fā)送過(guò)來(lái)的內(nèi)容
       String str = buf.readLine();
       System.out.println("server receive data is:"+str);
       String virus = "";
       if("getVirusList".equals(str)){//組成暗殺協(xié)議,返回客戶端
        for(Virus v :virusList){
         virus += v.getName()+":";
        }
        out.println(virus);
       }
       
       //進(jìn)行收尾工作
       out.flush();
       out.close();
       buf.close();
       client.close();
      }
      
      
     }
     
     public static List<Virus> getVirusList(){
      
      Virus virus = null;
      
      virus = new Virus();
      virus.setName("QQ.exe");
      virusList.add(virus);
      
      virus = new Virus();
      virus.setName("Niu.exe");
      virusList.add(virus);
      
      virus = new Virus();
      virus.setName("Baidu.exe");
      virusList.add(virus);
      
      virus = new Virus();
      virus.setName("Jinshan.exe");
      virusList.add(virus);
      
      return virusList;
     }

     

    }

    執(zhí)行結(jié)果:
     
    客戶端代碼

    package com.dr.client;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.List;

    import com.dr.bean.Virus;


    public class Client {

     private String str;
     private List<Virus> virusList = null;
        public Client(String str){
         this.str = str;
         virusList = new ArrayList<Virus>();
        }
     
     public List<Virus> send() throws UnknownHostException, IOException{
      Socket client = null;
      //接收服務(wù)器信息的輸入流
      BufferedReader buf = null;
      //向服務(wù)器發(fā)送信息的輸出流
      PrintStream out = null;
      //實(shí)例化一個(gè)套接字
      client = new Socket("localhost",8888);
      //從服務(wù)器接收信息
      buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
      //向服務(wù)器打印信息
      out = new PrintStream(client.getOutputStream());
      
      
      //打印出去
      out.println(this.str);
      //接收進(jìn)來(lái)QQ.exe:baidu.exe:niu.exe
      String msg = buf.readLine();
      System.out.println(msg);
      String[] msgArray = msg.split(":");
      for(int i=0;i<msgArray.length;i++){
       Virus v = new Virus();
       v.setName(msgArray[i]);
       virusList.add(v);
       System.out.println(msgArray[i]);
      }
      

      buf.close();
      out.flush();
      out.close();
      client.close();
      
      return virusList;
     }
    }

     

    文件掃描過(guò)程代碼類:::

    package com.dr.client;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.List;

    import com.dr.bean.Virus;


    public class Client {

     private String str;
     private List<Virus> virusList = null;
        public Client(String str){
         this.str = str;
         virusList = new ArrayList<Virus>();
        }
     
     public List<Virus> send() throws UnknownHostException, IOException{
      Socket client = null;
      //接收服務(wù)器信息的輸入流
      BufferedReader buf = null;
      //向服務(wù)器發(fā)送信息的輸出流
      PrintStream out = null;
      //實(shí)例化一個(gè)套接字
      client = new Socket("localhost",8888);
      //從服務(wù)器接收信息
      buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
      //向服務(wù)器打印信息
      out = new PrintStream(client.getOutputStream());
      
      
      //打印出去
      out.println(this.str);
      //接收進(jìn)來(lái)QQ.exe:baidu.exe:niu.exe
      String msg = buf.readLine();
      System.out.println(msg);
      String[] msgArray = msg.split(":");
      for(int i=0;i<msgArray.length;i++){
       Virus v = new Virus();
       v.setName(msgArray[i]);
       virusList.add(v);
       System.out.println(msgArray[i]);
      }
      

      buf.close();
      out.flush();
      out.close();
      client.close();
      
      return virusList;
     }
    }





    KillVirusUI代碼:


    package com.dr.ui;

    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;

    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.graphics.Color;
    import org.eclipse.swt.graphics.Font;
    import org.eclipse.swt.layout.GridData;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.DirectoryDialog;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.swt.widgets.ProgressBar;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Text;

    import com.dr.file.FileList;

    public class KillVirusUI {

     public static String filePath = "";
     public static List<String> virusFilePath = new ArrayList<String>();
     public static void main(String args[]) {
      Display display = new Display();
      final Shell shell = new Shell(display, SWT.SHELL_TRIM);
      shell.setBounds(2, 2, 1200, 600);
      //shell.setMaximized(true);// 全屏顯示
      shell.setText("殺毒軟件簡(jiǎn)單版");
      /**
       * 設(shè)置執(zhí)行按鈕
       */
      final Button btnOk = new Button(shell, SWT.PUSH);
      btnOk.setBounds(20, 25, 70, 25);
      btnOk.setText("掃描殺毒");
      final Button btnOk1 = new Button(shell, SWT.PUSH);
      btnOk1.setBounds(120, 25, 70, 25);
      btnOk1.setText("刪除病毒");

       Color color = new Color(Display.getCurrent(), 100, 180, 10);// 聲明顏色對(duì)象
       Color color1 = new Color(Display.getCurrent(), 100, 220, 240);// 聲明顏色對(duì)象
      final Text text = new Text(shell, SWT.MULTI | SWT.BORDER);
      text.setBounds(10, 270, 1200, 400);
      text.setBackground(color1);
      final Text text1 = new Text(shell, SWT.MULTI | SWT.BORDER);
      text1.setBounds(10, 150, 1200, 50);
      text1.setBackground(color1);
      
      final ProgressBar progressBar = new ProgressBar(shell, SWT.HORIZONTAL);
      GridData data = new GridData();
      data.horizontalSpan = 2;
      data.grabExcessHorizontalSpace = true;
      progressBar.setLayoutData(data);
      progressBar.setMaximum(100);// 設(shè)置最大值
      progressBar.setMinimum(0);// 設(shè)置最小值
      /**
       * 注冊(cè)點(diǎn)擊事件,循環(huán)顯示數(shù)據(jù)
       */
      
      Label labe=new Label(shell,SWT.NULL);
         labe.setBounds(800,25, 120,75); // 設(shè)置按鈕位置
         labe.setFont(new Font(display,"宋體",20,SWT.BOLD));
       
       
         labe.setBackground( color);
      labe.setText("    "+"360"+"\n"+"網(wǎng)絡(luò)保鏢");
      ;
      btnOk.addSelectionListener(new SelectionAdapter() {//Button監(jiān)聽(tīng)事件
       public void widgetSelected(SelectionEvent e) {
        FileList f = new FileList();
        DirectoryDialog dlg = new DirectoryDialog(shell);
        dlg.setText("目錄"); // 設(shè)置窗口標(biāo)題
        dlg.setMessage("請(qǐng)選擇一個(gè)目錄:"); // 設(shè)置提示文字
        dlg.setFilterPath("/root"); // 設(shè)置初始目錄
        String dir = dlg.open(); // 打開(kāi)對(duì)話框并返回一個(gè)包含所選目錄路徑的字符串
        
        //File f=new File(dlg.open());
           f.setStr(dir);
        
        if (f != null)
         System.out.println(f); // 比如選擇“我的文檔”,則會(huì)打印“D:\My Documents”
        
        
        Thread t = new Thread(f);
        t.setDaemon(true);
        t.start();
        t.yield();
        
        for(int i=0;i<100;i++){
         text.append(filePath+"\n"); 
         progressBar.setBounds(10, 80, 1200, 20);
         progressBar.setSelection(progressBar.getSelection()+1);//顯示一條數(shù)據(jù),滾動(dòng)條進(jìn)度加1
         try {
          Thread.sleep(1000);
         } catch (InterruptedException e1) {
          e1.printStackTrace();
         }
        }
        
        if(virusFilePath.size()!=0){
         text.setText("");
         for(String str : virusFilePath){
          text1.append("很悲?。耗愕碾娔X里發(fā)現(xiàn)病毒:"+str+"\n");
         }
        }
        else{
         text1.setText("恭喜你,沒(méi)有發(fā)現(xiàn)病毒!");
        }
        t.interrupt();
        
       }
      
      });
      
      
      btnOk1.addSelectionListener(new SelectionAdapter() {//Button監(jiān)聽(tīng)事件
       public void widgetSelected(SelectionEvent e) {
        FileList q = new FileList();
        Thread t = new Thread(q);
        t.setDaemon(true);
        t.start();
        for(int i=0;i<100;i++){
         text.append(filePath+"\n");
         progressBar.setBounds(10, 105, 1200, 20);
         progressBar.setSelection(progressBar.getSelection()+1);//顯示一條數(shù)據(jù),滾動(dòng)條進(jìn)度加1
         try {
          Thread.sleep(100);
         } catch (InterruptedException e1) {
          e1.printStackTrace();
         }
        }
        
        if(virusFilePath.size()!=0){
         text.setText("");
         for(String str : virusFilePath){
          //text1.append("發(fā)現(xiàn)病毒:"+str+"\n");
          
             File f1=new File("f.filePath");
          f1.delete();
          text1.append("恭喜你已經(jīng)成功清理了電腦里的病毒:"+str+"\n");
         }
        }
        else{
         text1.setText("祝賀你不用為電腦安危考慮了!");
        }
       }
       });
      
      
      shell.open();
      while (!shell.isDisposed()) {
       if (!display.readAndDispatch())
        display.sleep();
      }
      display.dispose();
     }
    }

    執(zhí)行結(jié)果:

     
    首先要啟動(dòng)服務(wù)器,殺毒軟件才能夠正常的工作。。。。。。。


    病毒類:

    package com.dr.bean;


    public class Virus{

     private String name;
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
    }


    posted @ 2010-11-23 13:43 龍ぜ?xì)垊?閱讀(2107) | 評(píng)論 (2)編輯 收藏
      圖形用戶界面:
    在Java 中,頂層窗口成為框架。對(duì)應(yīng)于SWT庫(kù)中,其框架主要是Frame,而在Swing庫(kù)中,則對(duì)應(yīng)的類是JFrame,JFrame類是Frame的子類,但是他們大多數(shù)情況下是等價(jià)的,只是在表示形式下多了個(gè)"J"而已。。。。Component類是所有GUI對(duì)象的祖先,Window類是Frame類的父類,JFrame類直接從Frame繼承而來(lái),下面是他們的關(guān)系圖。
      
     


    import javax.swing.*;
    import java.awt.*;
    //////////////////////////////////////////////////
    public class HelloWorld
    {
     public static void main(String[] args)
     { 
      TextFrame frame = new TextFrame("MyJava");          //新建圖形建面MyJava
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);                      //設(shè)置為可視化的。。。
     }
    }
    /////////////////////////////////////////////////
    class TextFrame extends JFrame
    {
     public static final int WIDTH = 300;
     public static final int HEIGHT = 200; 
     
     public TextFrame()
     {
      setTitle("HelloWorld");
      setSize(WIDTH, HEIGHT);
      
      //將panel加入到frame
      TextPanel panel = new TextPanel();
      Container contentPane = getContentPane();
      contentPane.add(panel); //要在內(nèi)容窗格中加入圖形元素(容器)
     }
     
     
    }
    //////////////////////////////////////////////////////////////////
    class TextPanel extends JPanel         //組件容器

     public int x = 100;
     public int y = 100;
     
     public void paintComponent(Graphics g)
     { 
      super.paintComponent(g);
      
      //顯示文本
      g.drawString(" Hello, World!", x, y);
     }
     

    }
    事件處理:
    如果用戶在用戶界面執(zhí)行了一個(gè)動(dòng)作,這將導(dǎo)致一個(gè)事件發(fā)生。事件的描述發(fā)生了什么的對(duì)象,在Java中,定義了各種不同的事件類,來(lái)描述各種類型的用戶操作。事件是由事件源產(chǎn)生的,事件的產(chǎn)生者成為事件源。。。
    事件處理邏輯(事件。事件源。和處理方法之間的關(guān)系)可以用一下四個(gè)步驟表示:
     

     

    posted @ 2010-11-11 19:53 龍ぜ?xì)垊?閱讀(135) | 評(píng)論 (0)編輯 收藏

     

    面向?qū)ο?/span>=對(duì)象+繼承+類+通信。面向?qū)ο笫且詫?duì)象(Object)的概念為核心,專注于對(duì)象的操縱。。面向?qū)ο笞顬橥怀龅奶攸c(diǎn)是繼承...封裝....多態(tài)。
    對(duì)象:是一個(gè)抽象的是體,eg:蘋果是一個(gè)類,有不同口味的,不同種類的蘋果。然而說(shuō)這里有個(gè)蘋果,則是一個(gè)實(shí)例對(duì)象。書:是一個(gè)類,說(shuō)這里有一本《計(jì)算機(jī)網(wǎng)絡(luò)》,則是一個(gè)實(shí)例對(duì)象。。
    繼承:所表達(dá)的是對(duì)象之間的相交關(guān)系,是使一個(gè)對(duì)象可以繼承其他對(duì)象類的特征和能力。。。
    一組客觀對(duì)象的抽象,具有相同的數(shù)據(jù)結(jié)構(gòu)和相同的操作對(duì)象集合。。

     
    Eg:

    class Demo {
     {
      // 構(gòu)造塊
      System.out.println("Demo類中的構(gòu)造塊~~~");
     }

     Demo() {
      System.out.println("Demo類中的構(gòu)造方法~~~");
     }

     // 靜態(tài)塊
     static {
      System.out.println("Demo類中的靜態(tài)塊~~~");
     }
    }

    public class Demo24 {
     // 在主類中寫的靜態(tài)塊要優(yōu)先于main方法執(zhí)行
     static {
      System.out.println("##################");
     }

     public static void main(String args[]) {
      new Demo();
      new Demo();
      new Demo();
     new Demo();
      new Demo();
     }
    }
    談?wù)凧ava下的集合吧:

    向量(Vecter):用capacity()方法控制其容量,空間是成倍的增長(zhǎng),可加入大量元素的組件。。
    線性表(List):有限元素組成的有序序列,表長(zhǎng)(length),表頭(head),表尾(tail)....
    堆棧(stack):實(shí)際上就是只能在一端進(jìn)行插入和刪除 的線性表。。只能插入和刪除的一端是棧頂(top),另一端是棧底(bottom)...Last-in.First-out。。。。
     
    隊(duì)列(Queue):也是只能在一端進(jìn)行插入和刪除操作,對(duì)頭(front)只能進(jìn)行刪除操作,隊(duì)尾(back)只能插入操作。。First In First Out...........


    posted @ 2010-11-11 11:06 龍ぜ?xì)垊?閱讀(132) | 評(píng)論 (0)編輯 收藏
    首先 我們說(shuō)說(shuō) 網(wǎng)絡(luò) 吧,網(wǎng)絡(luò)互聯(lián)設(shè)備協(xié)議(OIS)參考模型分成了七層,即應(yīng)用層,表示層,會(huì)話層,傳輸層,網(wǎng)絡(luò)層,數(shù)據(jù)鏈路層,物理層。。。但是在Java中只注重與應(yīng)用層..網(wǎng)絡(luò)層..與傳輸層,在其他方面不能夠更好的服務(wù)與程序的操作和控制。然而在java中式有服務(wù)器(Server)和客服(Cliect)組成的,這兩者之間一般情況 是成對(duì)出現(xiàn)的。。。對(duì)服務(wù)器而言如果客服對(duì)服務(wù)器發(fā)送請(qǐng)求,,則服務(wù)器是InputStream數(shù)據(jù),二客服則是OutputStream數(shù)據(jù)。。。兩者之間也是相對(duì)的。。。。
    我做了個(gè)小例子如下:

    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;


    public class Server03 {
     public static void main(String args[])throws IOException{
      ServerSocket ss=new ServerSocket(9999);
      while(true){
       System.out.println("----server端");
             Socket s=ss.accept();
       
             DataOutputStream dos=new DataOutputStream(s.getOutputStream());
      
             dos.writeUTF("客服端"+s.getInetAddress().getHostAddress()+""+s.getPort()+"已連接"+
               s.getInetAddress().getHostAddress()+s.getLocalPort());
       
      dos.flush();
      dos.close();
      s.close();
      }
      
     }

    }

     

    執(zhí)行結(jié)果:
     
    客服端的程序:

     

    import java.io.DataInputStream;
    import java.io.IOException;
    import java.net.Socket;


    public class Cliecnt02 {
     public static void main(String args[])throws IOException{
      for(int i=0;i<20000;i++){
       Socket s=new Socket("127.0.0.1",9999);
       DataInputStream dis=new DataInputStream(s.getInputStream());
       System.out.println("客服端連接的數(shù)據(jù)"+dis.readUTF());
       dis.close();
       s.close();
      }
      
     }

    }

    執(zhí)行結(jié)果:
     

    小結(jié):一般情況下一臺(tái)服務(wù)器上可以為很多的電腦提供服務(wù)。。。。只要改變端口號(hào)就可以 了

    posted @ 2010-11-10 22:28 龍ぜ?xì)垊?閱讀(877) | 評(píng)論 (0)編輯 收藏
    多線程使用的方法有兩種,即使用繼承和接口。繼承使用的是關(guān)鍵字 Thread,接口使用的是Runnable。。這兩種方法都最終都要使用Thread類中的方法start()啟動(dòng)多線程。。。。每一個(gè)線程都是通過(guò)start()方法開(kāi)始啟動(dòng)的,在未啟動(dòng)之前程序一定是死的。。說(shuō)說(shuō)線程的狀態(tài)有三種吧,即就緒,運(yùn)行,阻塞。。。這三者之間的關(guān)系如下
     
    下面才用一種最實(shí)用的方法實(shí)現(xiàn)多線程,即Runnable接口,它用兩個(gè)好處可以實(shí)現(xiàn)多繼承和資源共享,這正是Java語(yǔ)言的優(yōu)點(diǎn)之所在。。

    package com.bx.course.Demo05;
    class MyThread implements Runnable{
     private int ticket=300;
     public void run(){
      for(int i=0;i<300;i++)
      {
       if(this.ticket>0)
       {
        //表示還有票可以賣
        System.out.println(Thread.currentThread().getName()+"-->賣票:"+(ticket--));
       }
      }
     
     }
    }
    public class ThreadDemo05 {

     public static void main(String[] args) {
      MyThread mt=new MyThread();
      Thread t1=new Thread(mt);
      Thread t2=new Thread(mt);
      Thread t3=new Thread(mt);
      t1.start();//每個(gè)線程只啟動(dòng)一次
     // t1.start();
      t2.start();
      t3.start();

     }

    }

    posted @ 2010-11-07 18:15 龍ぜ?xì)垊?閱讀(160) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共3頁(yè): 上一頁(yè) 1 2 3 下一頁(yè) 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产1024精品视频专区免费 | 中文无码亚洲精品字幕| 国产在线播放免费| 99在线热视频只有精品免费| 黄页网站在线观看免费| 亚洲另类图片另类电影| 亚洲Aⅴ无码专区在线观看q| 免费人妻av无码专区| 在线观看免费人成视频| 97在线线免费观看视频在线观看| 亚洲性线免费观看视频成熟| 久草免费手机视频| 91免费在线视频| 一区二区三区免费电影| 日韩国产精品亚洲а∨天堂免| 亚洲六月丁香六月婷婷蜜芽 | 亚洲国产成人精品91久久久| 久久久久国色AV免费看图片| 精品无码无人网站免费视频| 国产无遮挡裸体免费视频在线观看| 日韩在线视频播放免费视频完整版| 亚洲另类无码一区二区三区| 亚洲成a人片在线不卡| 亚洲网红精品大秀在线观看| 亚洲一区二区高清| 亚洲欧美熟妇综合久久久久| 看成年女人免费午夜视频| 亚洲国产精品精华液| 亚洲中文字幕久久精品无码VA| 亚洲黄色在线观看视频| 亚洲免费一级视频| 真正全免费视频a毛片| 国产一级淫片a免费播放口| 亚洲视频在线免费看| 在线a免费观看最新网站| 好吊妞788免费视频播放 | 人成午夜免费大片在线观看| 日本免费在线观看| 久久这里只有精品国产免费10| 日韩亚洲国产二区| 亚洲精品无码永久在线观看|