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
}
}
}
posted @
2010-12-11 16:05 龍ぜ殘剑 阅读(1730) |
评论 (2) |
编辑 收藏
基于数据库的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
得到页面为:
这时候我们可以查看数据库中是否在如了我们输入的数据即:
posted @
2010-12-09 20:55 龍ぜ殘剑 阅读(4393) |
评论 (2) |
编辑 收藏
一:软件下载
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,就启动了刚才得网页,如下:
posted @
2010-12-08 12:43 龍ぜ殘剑 阅读(1148) |
评论 (0) |
编辑 收藏
浅谈用JDBC连接MySQL
在学习数据库开发的实例,这里浅谈一下用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 数据定义的名称以大写表示
JDBC访问数据库的步骤:
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());
}
}
执行结果:
谢谢大家分享,但愿能对您带来一点帮助,希望能帮提出宝贵的意见。。。
posted @
2010-12-08 09:03 龍ぜ殘剑 阅读(2473) |
评论 (2) |
编辑 收藏
posted @
2010-12-07 16:49 龍ぜ殘剑 阅读(121) |
评论 (0) |
编辑 收藏
杀毒软件:
杀毒软件是每一台电脑不可少的应用软件之一,现在我来研究 一下杀毒软件的整个工作流程吧。。。首先要明确杀毒软件的目的是什么,怎么样才能实现这一目的。。。
杀毒软件是客户在通过扫描自己的电脑里的每一个文件,然后与杀毒软件服务器病毒库里的病毒相比较,如果你电脑里有和服务器中文件相同的,杀毒软件就视为是病毒,然后有用户选择是否要把扫描出来的文件删除。。。。下面是我用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;
}
}
执行结果:
客户端代码
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;
}
}
posted @
2010-11-23 13:43 龍ぜ殘剑 阅读(2106) |
评论 (2) |
编辑 收藏
图形用户界面:
在Java 中,顶层窗口成为框架。对应于SWT库中,其框架主要是Frame,而在Swing库中,则对应的类是JFrame,JFrame类是Frame的子类,但是他们大多数情况下是等价的,只是在表示形式下多了个"J"而已。。。。Component类是所有GUI对象的祖先,Window类是Frame类的父类,JFrame类直接从Frame继承而来,下面是他们的关系图。
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中,定义了各种不同的事件类,来描述各种类型的用户操作。事件是由事件源产生的,事件的产生者成为事件源。。。
事件处理逻辑(事件。事件源。和处理方法之间的关系)可以用一下四个步骤表示:
posted @
2010-11-11 19:53 龍ぜ殘剑 阅读(135) |
评论 (0) |
编辑 收藏
面向对象=对象+继承+类+通信。面向对象是以对象(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...........
posted @
2010-11-11 11:06 龍ぜ殘剑 阅读(132) |
评论 (0) |
编辑 收藏
首先 我们说说 网络 吧,网络互联设备协议(OIS)参考模型分成了七层,即应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。。。但是在Java中只注重与应用层..网络层..与传输层,在其他方面不能够更好的服务与程序的操作和控制。然而在java中式有服务器(Server)和客服(Cliect)组成的,这两者之间一般情况 是成对出现的。。。对服务器而言如果客服对服务器发送请求,,则服务器是InputStream数据,二客服则是OutputStream数据。。。两者之间也是相对的。。。。
我做了个小例子如下:
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();
}
}
}
执行结果:
客服端的程序:
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();
}
}
}
执行结果:
小结:一般情况下一台服务器上可以为很多的电脑提供服务。。。。只要改变端口号就可以 了
posted @
2010-11-10 22:28 龍ぜ殘剑 阅读(877) |
评论 (0) |
编辑 收藏
多线程使用的方法有两种,即使用继承和接口。继承使用的是关键字 Thread,接口使用的是Runnable。。这两种方法都最终都要使用Thread类中的方法start()启动多线程。。。。每一个线程都是通过start()方法开始启动的,在未启动之前程序一定是死的。。说说线程的状态有三种吧,即就绪,运行,阻塞。。。这三者之间的关系如下
下面才用一种最实用的方法实现多线程,即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();
}
}
posted @
2010-11-07 18:15 龍ぜ殘剑 阅读(160) |
评论 (0) |
编辑 收藏