java對cookie的操作其實不是很難的,主要就是對cookie 的建立和cookie的讀取操作吧,還有對cookie的生命周期的設置,和cookie的路徑的設置。。。。
一:首先我們建立一個有生命周期的cookie吧,代碼如下:
int seconds=saveTime*24*60*60;//這里是一天為單位設置其周期
Cookie cookie=new Cookie("cookiename","cookievalue");
cookie.setMaxAge(sendons);
//設置路徑,這個路徑即為該工程下都可以訪問該cookie如果不設置路徑,那么設置該路徑cookie路徑及其路徑可以訪問
cookie.setPath("/");
response.addCookie(cookie);
二:建立一個沒有生命周期的cookie,即隨著瀏覽器的關閉就消失的cookie,代碼如下:
HttpServletRequeset request;
HttpServletResponse response;
Cookie cookie=new Cookie("cookiename","cookievalue");// 相當于一個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
}
}
}
基于數據庫的Java Web
現今所有的 Web都是基于數據庫的,可見數據庫在Web中的開發時如此的重要。然而基本上所有的網站都是要求客戶登陸的時候都必須事先注冊賬號,這樣才能進入網頁,訪問其中的頁面,資源。。開發基于數據庫的Web程序時,涉及到多個用戶同時請求與數據庫建立"連接"的問題,但多用戶并發處理目前還是一個難點。該文在對傳統數據連接模式的分析基礎上,采用了一種基于對象的數據連接池的設計方案。通過連接對象放置預先建立的若干"連接",根據一定的策略管理這些"連接",防止"連接"過多內存開銷過大,及連接排隊過長問題。并用JAVA實現了該方案,在實際應用中提供了一個高效的連接管理策略,提高了Web數據庫應用系統的性能。
一:在此我通過一個實際的例子談談我最近最Web得心得,首先我們建立一個javaWeb項目在Myeclipse下。首先建立好數據庫連接,即建立一個Vo對象User類,如下:
package vo;
/*
用戶名稱:<input type="text" name="username"><br>
用戶密碼:<input type="password" name="password"><br>
用戶愛好:<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>
用戶簡歷:<textarea rows="5" cols="20" name="resume"></textarea>
<input type="submit" value="注冊">
*/
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;
}
}
二:這樣我們建立好了實體對象之后,現在我們來建立UserDAO接口和DAOFactory兩個類如下:
package dao;
import vo.User;
public interface UserDAO {
//建立一個接口
void save(User user);
}
package factory;
import impl.UserDaoImpl;
import dao.UserDAO;
public class DAOFactory {
public static UserDAO getUserDAOInstance(){
return new UserDaoImpl();
}
}
三:現在我們來建立ConnectionUtil類,這里我才用我們最常用的一種方法來連接數據庫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(); //實例化一個配置文件的對象
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加載驅動
Class.forName(driver);
// DriverManager獲得連接
conn = DriverManager.getConnection(url,
user, password);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
四:是實現Java程序與數據庫的鏈接層建立一個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{
//實現接口UerDAO
public void save(User user) {
//實現接口類中的方法
ConnectionUtil cu=new ConnectionUtil();//初始化連接的數據庫
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();//關閉連接數據庫
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
五:是通過網站往數據庫中加載數據,如下:
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]);
}
}
//實現頁面的跳轉
if(username!=null && username.equals("james")){
request.getRequestDispatcher("/success.html").forward(request, response);
}else{
request.getRequestDispatcher("/failure.jsp").forward(request, response);
}
}
現在我們來配置一下register,jsp吧,如下:
<form action="/Servlet_Form_Project/form" method="post">
<!--form 中有兩個最為重要的屬性-->
用戶名稱:<input type="text" name="username"><br>
用戶密碼:<input type="password" name="password"><br>
用戶愛好:<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>
用戶簡歷:<textarea rows="5" cols="20" name="resume"></textarea><br/>
<input type="submit" value="注冊">
</form>
試圖效果如下:
現在我們來配置一下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>
在此我們已經完成了Java Web與數據庫的連接:至此我們可以開始comcat,在瀏覽器中輸入連接的地址即:http://localhost:8080/Servlet_Form_Project/register.jsp
得到頁面為:
這時候我們可以查看數據庫中是否在如了我們輸入的數據即:
一:軟件下載
1.Java
這里我使用的是jdk1.6.0...
2.tomcat
我使用的是tomcat的版本是6.0.29的,安裝版或者是解壓版的都可以使用,只是有一點不同而已。
3.數據庫
推薦使用 MySQL, 因為MySQL使用更加的解潔,明了。。
二:軟件安裝
1.雙擊安裝jdk。
裝完后在我的電腦->屬性->高級->環境變量->系統變量中添加以下環境變量:
(假設你的JDK安裝在c:/jdk)
JDK_HOME=C:\jdk
classpath=.;%JDK_HOME%\lib\dt.jar;%JDK_HOME%\lib\tools.jar
在PATH(原來就已存在)中添加:%JDK_HOME%\bin
這樣jdk環境配置成功。
2.雙擊安裝你的Tomcat。(建議安裝在一個盤的根目錄下入D:/tomcat)
注:apache-tomcat-6.0.29這是免安裝版的。。嘿嘿
這樣已經完整安裝完Tomcat了。
建議:在PATH中再添加:%JDK_HOME%\bin;%TOMCAT_HOME%\bin
這樣做的目的是在虛擬dos中可以使用tomcat的工具
最后順便把第一步下載回來的三個jar文件放到tomcat目錄下的common/lib目錄中
3.測試:
打開開始菜單中的tomcat(小貓圖案)的monitor工具,點擊start server,顯示綠色三角形即為啟動,打開瀏覽器在地址欄輸入:http://localhost:8080/可以看到小貓圖案說明已經配置成功。
4.安裝數據庫(sqlserver)
windows xp下必須安裝個人版或開發版(個人推薦個人版)。
一直next就可以(微軟的東西就是方便),這里注意到域帳戶那里選擇本機帳戶,到驗證那里選擇混合驗證(這點很重要,若選擇系統認證以后在程序中就連接不上數據庫),為你的sa用戶輸入一個密碼(如果練習用就不用考慮安全性啦,選擇“空密碼”就可以)
一切都準備好,我們具體的做一個小程序吧:
1.建立一個繼承于HttpServlet的類TestServlet,在里面寫HttpServlet中的方法,一般常用的方法有doGet(),doPost(),doPut(),doDelete()其中最常用的有doGet(),doPost()兩個方法。。
代碼如下:
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);
//實現頁面的跳轉
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.我們應該配置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"的區別別需要清楚,這是非常重要的-->
<table >
<tr><td>賬號</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>
即為:
這時候你可以在啟動tomcat,然后在internet中輸入http://localhost:8080/Servlet_Basic/demo.html,就啟動了剛才得網頁,如下:
在學習數據庫開發的實例,這里淺談一下用JDBC連接數據庫MySQL(當然也可以連接 SQL Server或者Oracle了,只是我更喜歡開源軟件,同時也簡單些。。。)
首先正確安裝好MySQL,建立好數據庫,下面我們來建立一個數據庫吧。
JDBC連接MySQL
加載節注冊JDBC驅動程序,
Class.forName("com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver").newInstance();
JDBC URL定義驅動程序與數據庫之間的鏈接
標準語法:
<protocol(主要通信協議)>:<subprotocol(次要通訊協議,驅動程序名稱)>:<data source identifier(數據源)>
MySQL JDBC URL的格式:
jdbc:mysql://[hostname][:port]/[dbname][?param1=value1][¶m2=value2]….
例如:
jdbc:mysql://localhost:3306/jdbc_db","root","1234"
常見參數:
user 用戶名
password 密碼
autoReconnect 聯機失敗,是否重新聯機(true/false)
maxReconnect 嘗試重新聯機次數
initialTimeout 嘗試重新聯機間隔
maxRows 傳回最大行數
useUnicode 是否使用Unicode字體編碼(true/false)
characterEncoding 何種編碼(GB2312/UTF-8/…)
relaxAutocommit 是否自動提交(true/false)
capitalizeTypeNames 數據定義的名稱以大寫表示
1.加載數據庫驅動
2.獲得數據庫連接
3.創建SQL語句
4.執行查詢
5.遍歷結果集
6.關閉數據庫連接
數據庫的鏈接一般有三種方法,這里簡單說一種,有小例子如下:
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加載驅動
Class.forName(driver);
// DriverManager獲得連接
conn = DriverManager.getConnection(url,user, password);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
執行的主函數如下:
package com.bx.jdbc;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
ConnectionUtil cu = new ConnectionUtil();
// 第三種方法
System.out.println("這是最常用的一種方法:" + cu.openConnection());
}
}
執行結果:
殺毒軟件是每一臺電腦不可少的應用軟件之一,現在我來研究 一下殺毒軟件的整個工作流程吧。。。首先要明確殺毒軟件的目的是什么,怎么樣才能實現這一目的。。。
殺毒軟件是客戶在通過掃描自己的電腦里的每一個文件,然后與殺毒軟件服務器病毒庫里的病毒相比較,如果你電腦里有和服務器中文件相同的,殺毒軟件就視為是病毒,然后有用戶選擇是否要把掃描出來的文件刪除。。。。下面是我用Java語言來實現這個功能的。。。希望對大家有所感悟。現在說說我的具體實現的步驟吧。
服務器代碼:
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;
//服務器肯定也要接收數據
BufferedReader buf = null;
//實例化一個服務器的監聽端
server = new ServerSocket(8888);
//可以用一種死循環的方式接收內容
System.out.println("---------服務器已經啟動----------");
Socket client = null;
//初始化暗殺名單
//List<Virus> virusList = getVirusList();
while(true){
//不斷接收內容
client = server.accept();
//準備好向客戶端輸入內容
out = new PrintStream(client.getOutputStream());
//而且客戶端要有輸入給服務器端
buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
//接收客戶端發送過來的內容
String str = buf.readLine();
System.out.println("server receive data is:"+str);
String virus = "";
if("getVirusList".equals(str)){//組成暗殺協議,返回客戶端
for(Virus v :virusList){
virus += v.getName()+":";
}
out.println(virus);
}
//進行收尾工作
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;
}
}
(}4FXTD(BB@P3FF4D~[0.jpg)
客戶端代碼
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;
//接收服務器信息的輸入流
BufferedReader buf = null;
//向服務器發送信息的輸出流
PrintStream out = null;
//實例化一個套接字
client = new Socket("localhost",8888);
//從服務器接收信息
buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
//向服務器打印信息
out = new PrintStream(client.getOutputStream());
//打印出去
out.println(this.str);
//接收進來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;
}
}
文件掃描過程代碼類:::
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;
//接收服務器信息的輸入流
BufferedReader buf = null;
//向服務器發送信息的輸出流
PrintStream out = null;
//實例化一個套接字
client = new Socket("localhost",8888);
//從服務器接收信息
buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
//向服務器打印信息
out = new PrintStream(client.getOutputStream());
//打印出去
out.println(this.str);
//接收進來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("殺毒軟件簡單版");
/**
* 設置執行按鈕
*/
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);// 聲明顏色對象
Color color1 = new Color(Display.getCurrent(), 100, 220, 240);// 聲明顏色對象
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);// 設置最大值
progressBar.setMinimum(0);// 設置最小值
/**
* 注冊點擊事件,循環顯示數據
*/
Label labe=new Label(shell,SWT.NULL);
labe.setBounds(800,25, 120,75); // 設置按鈕位置
labe.setFont(new Font(display,"宋體",20,SWT.BOLD));
labe.setBackground( color);
labe.setText(" "+"360"+"\n"+"網絡保鏢");
;
btnOk.addSelectionListener(new SelectionAdapter() {//Button監聽事件
public void widgetSelected(SelectionEvent e) {
FileList f = new FileList();
DirectoryDialog dlg = new DirectoryDialog(shell);
dlg.setText("目錄"); // 設置窗口標題
dlg.setMessage("請選擇一個目錄:"); // 設置提示文字
dlg.setFilterPath("/root"); // 設置初始目錄
String dir = dlg.open(); // 打開對話框并返回一個包含所選目錄路徑的字符串
//File f=new File(dlg.open());
f.setStr(dir);
if (f != null)
System.out.println(f); // 比如選擇“我的文檔”,則會打印“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);//顯示一條數據,滾動條進度加1
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
if(virusFilePath.size()!=0){
text.setText("");
for(String str : virusFilePath){
text1.append("很悲劇:你的電腦里發現病毒:"+str+"\n");
}
}
else{
text1.setText("恭喜你,沒有發現病毒!");
}
t.interrupt();
}
});
btnOk1.addSelectionListener(new SelectionAdapter() {//Button監聽事件
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);//顯示一條數據,滾動條進度加1
try {
Thread.sleep(100);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
if(virusFilePath.size()!=0){
text.setText("");
for(String str : virusFilePath){
//text1.append("發現病毒:"+str+"\n");
File f1=new File("f.filePath");
f1.delete();
text1.append("恭喜你已經成功清理了電腦里的病毒:"+str+"\n");
}
}
else{
text1.setText("祝賀你不用為電腦安危考慮了!");
}
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}

首先要啟動服務器,殺毒軟件才能夠正常的工作。。。。。。。
病毒類:
package com.dr.bean;
public class Virus{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
圖形用戶界面:
在Java 中,頂層窗口成為框架。對應于SWT庫中,其框架主要是Frame,而在Swing庫中,則對應的類是JFrame,JFrame類是Frame的子類,但是他們大多數情況下是等價的,只是在表示形式下多了個"J"而已。。。。Component類是所有GUI對象的祖先,Window類是Frame類的父類,JFrame類直接從Frame繼承而來,下面是他們的關系圖。
{FTRAQDLOHSLDK.jpg)
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); //設置為可視化的。。。
}
}
/////////////////////////////////////////////////
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); //要在內容窗格中加入圖形元素(容器)
}
}
//////////////////////////////////////////////////////////////////
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);
}
}
事件處理:
如果用戶在用戶界面執行了一個動作,這將導致一個事件發生。事件的描述發生了什么的對象,在Java中,定義了各種不同的事件類,來描述各種類型的用戶操作。事件是由事件源產生的,事件的產生者成為事件源。。。
事件處理邏輯(事件。事件源。和處理方法之間的關系)可以用一下四個步驟表示:
面向對象=對象+繼承+類+通信。面向對象是以對象(Object)的概念為核心,專注于對象的操縱。。面向對象最為突出的特點是繼承...封裝....多態。
對象:是一個抽象的是體,eg:蘋果是一個類,有不同口味的,不同種類的蘋果。然而說這里有個蘋果,則是一個實例對象。書:是一個類,說這里有一本《計算機網絡》,則是一個實例對象。。
繼承:所表達的是對象之間的相交關系,是使一個對象可以繼承其他對象類的特征和能力。。。
類:一組客觀對象的抽象,具有相同的數據結構和相同的操作對象集合。。
Eg:
class Demo {
{
// 構造塊
System.out.println("Demo類中的構造塊~~~");
}
Demo() {
System.out.println("Demo類中的構造方法~~~");
}
// 靜態塊
static {
System.out.println("Demo類中的靜態塊~~~");
}
}
public class Demo24 {
// 在主類中寫的靜態塊要優先于main方法執行
static {
System.out.println("##################");
}
public static void main(String args[]) {
new Demo();
new Demo();
new Demo();
new Demo();
new Demo();
}
}
談談Java下的集合吧:
向量(Vecter):用capacity()方法控制其容量,空間是成倍的增長,可加入大量元素的組件。。
線性表(List):有限元素組成的有序序列,表長(length),表頭(head),表尾(tail)....
堆棧(stack):實際上就是只能在一端進行插入和刪除 的線性表。。只能插入和刪除的一端是棧頂(top),另一端是棧底(bottom)...Last-in.First-out。。。。
隊列(Queue):也是只能在一端進行插入和刪除操作,對頭(front)只能進行刪除操作,隊尾(back)只能插入操作。。First In First Out...........
我做了個小例子如下:
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();
}
}
}
執行結果:
MZ4K@M3_KYE)A.jpg)
客服端的程序:
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("客服端連接的數據"+dis.readUTF());
dis.close();
s.close();
}
}
}
執行結果:
小結:一般情況下一臺服務器上可以為很多的電腦提供服務。。。。只要改變端口號就可以 了

下面才用一種最實用的方法實現多線程,即Runnable接口,它用兩個好處可以實現多繼承和資源共享,這正是Java語言的優點之所在。。
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();//每個線程只啟動一次
// t1.start();
t2.start();
t3.start();
}
}
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 1 | 2 | 3 | |||
4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
11 | 12 | 13 | 14 | 15 | 16 | 17 | |||
18 | 19 | 20 | 21 | 22 | 23 | 24 | |||
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
常用鏈接
留言簿
隨筆檔案
搜索
最新評論

- 1.?re: Java Web與數據庫相連接
- dd
- --ss
- 2.?re: JFreeChart項目簡介
- 評論內容較長,點擊標題查看
- --JFreeChart項目簡介
- 3.?re: JFreeChart項目簡介
-
JFreeChart項目簡介
JFreeChart項目簡介
JFreeChart項目簡介
JFreeChart項目簡介 - --JFreeChart項目簡介
- 4.?re: JFreeChart項目簡介
- JFreeChart項目簡介
- --JFreeChart項目簡介
- 5.?re: Hibernate 之getCurrentSession 與 openSession() 的區別
- getCurrentSession有點復雜
- --IE10下載