Tuesday, December 23, 2014

简单jsp教程--使用jdbc连接数据库

备注:jdbc是用来连接tomcat和mysql的,需要下载connector

1、首先在MySQL数据库中建立books数据库,再建book表。
然后插入数据。SQL语言如下:

create database books;

use books;
create table book(bookId varchar(50),bookName varchar(50),publisher varchar(100),price float,constraint pk_book primary key(bookId))
         
insert into book values('1001','An inconvenient truth','电子工业出版社',45.00);
insert into book values('1002','The satanic gases','电子工业出版社',49.00);
insert into book values('1003','Global climate change and wildlife','电子工业出版社',59.00);
insert into book values('1004','Environmental resource handbook','电子工业出版社',59.00);
insert into book values('1005','American heritage science dictionary','电子工业出版社',56.00);


2.新建sql.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>
<html>
<body>
以下是从MySQL数据库读取的数据:<hr>
<table border=0>
<tr><td>ID</td><td>书名</td><td>出版社</td><td>价格</td></tr>

<%
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   Connection con=java.sql.DriverManager.getConnection("jdbc:mysql://192.168.1.8/books?

useUnicode=true&characterEncoding=GBK","root","1234");
   Statement stmt=con.createStatement();
    ResultSet rst=stmt.executeQuery("select * from book");
    while(rst.next())
    {
        out.println("<tr>");
        out.println("<td>"+rst.getString("bookId")+"</td>");
        out.println("<td>"+rst.getString("bookName")+"</td>");
        out.println("<td>"+rst.getString("publisher")+"</td>");
        out.println("<td>"+rst.getFloat("price")+"</td>");
        out.println("</tr>");
    }
    //关闭连接、释放资源
    rst.close();
    stmt.close();
    con.close();
    %>
</table>
</body>
</html>

we can get

以下是从MySQL数据库读取的数据:

ID书名出版社价格
1001An inconvenient truthBogdonoff & Rubin45.0
1002The satanic gasesRodale49.0
1003Global climate change and wildlifeCato Institute59.0
1004Environmental resource handbookWildlife Society59.0
1005American heritage science dictionaryHoughton Mifflin Book56.0

Sunday, December 21, 2014

快速排序实现

注:此快速排序取第一个值为pivot,把小于pivot的数放到左边,大于的放到右边

public class QuickSort {

public static void main(String[] args) {
int arr[]=new int[50];
for(int i=0;i<arr.length;i++)
arr[i]=(int)(Math.random()*100);
//int arr[]={ 49, 42, 36};
//..int arr[]={8,7,8,8};
//for(int i=0;i<arr.length;i++){
// System.out.print(arr[i]+" ");
//}
System.out.println();
quickSort(arr,0,arr.length-1);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+", ");
}

}
public static void quickSort(int[] array,int start,int end){
int temp;

if(start>=end){return;}//大于号非常重要,如果没有,会导致index越界
if(start==end-1){        //base condition,两个数的比较,必须有
if(array[start]>array[end]){
temp=array[start];
array[start]=array[end];
array[end]=temp;
return;
}else
return;
}
int pivot=array[start];

int i=start+1;
int j=end;
while(i<j){
while(array[i]<=pivot&i!=end){//注意=很重要,否则无限循环
i++;
if(i==end&array[i]<pivot){
//非常重要,这是极端情况,考虑到如果pivot取的是最大值的情况
array[start]=array[end];
array[end]=pivot;
quickSort(array, start, i-1 );
return;
}
}
while(array[j]>=pivot&j!=start){
j--;
}
temp=array[j];
//i,j交换后需要交换回来,例如8(start),0,3,16(j),5(i),18,12,9    i=4,j=3
array[j]=array[i];
array[i]=temp;

}
temp=array[j];
array[start]=array[i];
array[j]=pivot;
array[i]=temp;
//System.out.println("j="+j+" start="+start);
quickSort(array, start, j-1 );
quickSort(array,j+1,end);

}
}
0, 1, 1, 2, 2, 3, 4, 15, 16, 17, 19, 22, 25, 27, 30, 36, 40, 41, 46, 46, 51, 53, 55, 55, 58, 59, 63, 64, 64, 65, 66, 66, 72, 73, 73, 74, 77, 78, 78, 78, 81, 81, 81, 86, 91, 92, 95, 99, 99, 99, 

Saturday, September 20, 2014

List和iterator方法

import java.util.*;
class TestArrayList
{
public static void main(String[] args)
{
LinkedList al=new LinkedList();
al.add("java1");
al.add("java2");
al.add(3);
al.add("java4");
al.remove("java4");
sop(al);

Iterator it=al.iterator();//接口型引用指向的是子类对象(集合中的方法获得)
while (it.hasNext())
{
sop(it.next());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}

Friday, September 19, 2014

 interface PetRestaurant
{
    public void buy();
}


 class DogPet implements PetRestaurant
{
    @Override
    public void buy()
    {
        System.out.println("我是狗,我要买狗粮");
    }
}

 class CatPet implements PetRestaurant
{
    @Override
    public void buy()
    {
        System.out.println("我是猫,我要买猫粮");
    }

}

 class test
{
    public void buy(PetRestaurant pet)
    {
        pet.buy();
    }
}


public class Tests
{
    public static void main(String[] args)
    {
        PetRestaurant dog = new DogPet(); //实例化一个狗,相当于把狗顾客实例化
        PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化
        test t = new test(); //实例化一个店小二
        t.buy(cat); //把猫交给店小二
        t.buy(dog); //把狗交给店小二
    }

}

接口的使用2


1)
public interface Handler{
  public void Hello();


2)
import Handler;
public class OtherParser{
  Handler handler;
......
}

接口是永远不能被实例化的,2只是对接口做引用,并没有被实例化。

接口可以看成是高度抽象的抽象类,它描述的事物们所共有的方法(方法签名),也就是规定除了该接口的方法的调用参数与规则,仅仅而已,它的使用必须依赖于实现类。
例如:
 public class MyHandler implements Handler{
  public void Hellp(){
    System.out.println("my Handler implements");
  }  
 }
而在对接口的引用时,采用的是实例化实现该接口的类
Handler handler = new MyHander();

接口在面向对象中是很重要。需要好好理解。

java接口的使用 zz

接口的作用对于很多新手来说很不容易理解,我给大家举个例子。
接口只是一个规范,所以里面的方法都是空的。
假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口,

public interface PetRestaurant {
public void buy();
}

当一只狗看到了,知道自己是宠物,所以它去实现这个接口
public class DogPet implements PetRestaurant {
@Override
public void buy() {
System.out.println("我是狗,我要买狗粮");
}
}
当一只猫看到了,知道自己也是宠物,所以也去实现这个接口
public class CatPet implements PetRestaurant {
@Override
public void buy() {
System.out.println("我是猫,我要买猫粮");
}

}
当狗和猫来我的店之前,我是不知道他们到底是什么,但是当他们来到我的店,我就知道一个要猫粮食,一个要狗粮食。因为他们都实现了 我这个接口,都可以买。下面这个类相当于一个接待顾客的类,即店小二,他接待所有实现了我这个宠物店接口的动物,传进来一个PetRestaurant 类型的宠物,注意,这个PetRestaurant 是接口
public class test {
public void buy(PetRestaurant pet)
{
pet.buy();
}
}

好了,这个时候我这个老板出现了,我可以给他们卖粮食了,相当于测试类
public class Tests {
public static void main(String[] args) {
PetRestaurant dog = new DogPet(); //实例化一个狗,相当于把狗顾客实例化
PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化

test t = new test(); //实例化一个店小二
t.buy(cat); //把猫交给店小二
t.buy(dog); //把狗交给店小二
}

}
这样运行的结果就是
我是猫,我要买猫粮
我是狗,我要买狗娘

你知道吗,整个过程我这个店主其实根本不知道来的到底是猫是狗还是其他什么,我只要有一个店小二,把这些来的不知什么动物都全部交给店小二,店小二就知道怎么去卖了,因为这些狗啊猫啊都实现了我这个宠物店的接口,而店小二就负责接待所有实现了我这个接口的动物。这就有一个好处,假如明天来了一头小猪,只要它实现了我这个接口,我只管交给店小二处理就OK了,我这个店小二根本不需要变化,我这个店主也只需要实例化一下这个动物就OK
你想,假如没有接口,会怎么办,来一个猫,我要去创造一个猫,还要实例化,来一只狗,我要创建一只狗,同样要实例化,还要配备专门的店小二去接待,就会相当麻烦