java 中常用的方法总结

时间:2019-05-12 13:05:56下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《java 中常用的方法总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《java 中常用的方法总结》。

第一篇:java 中常用的方法总结

8月1日

练习:

合理覆盖Cat数据类型的,equals()方法

Cat.java 覆盖 hashCode()返回的整型值是唯一的int hashCode()用法:

一般使用String提供hashCode的编码 +基本数据类型

hashCode 生成原则: 当对象内容一致时,生成的hashCode必须是一样的当对象内容不致时,生成的hashCode必须是唯一的HashtableTest1.java

hashtable 中的key如果是自定义数据类型,那么它必须覆盖equals()和hashCode()//考试 hashCode()ArrayList * Hashtable * 其他的存储方式:

LinkedList //特点:可以删除指定位置数据

练习:

向LinkedList添加:

A B C D

打印出时为: DCBA LinkedListTest.java

练习(MyQueueTest.java):

模拟一个队伍(队列),去买票一个动作

思路: 模拟一个队列(add)模拟出列(removeXXXX)

//先买票的人,先出队列——先入先出

队伍是一个特殊数据结构,特点:FIFO(先入先出)

HashSet //不允许重复元素

集合框架类的特点: Collection 接口是一组允许重复的对象 Set接口继承Collection,但不允许重复使用自己内部的一个排列机制 List接口继承Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。Map接口是一组成对的键——值对象,即所持有的是key—value pairs。Map中不能有重复的key。拥有自己内部机制。在集合框架类中有两大类接口: 5.1 Collection 5.2 Map

注意:集合框架类——容器,容器中存储引用数据类型

继承关系:

接口 实现 历史集合类型

Set HashSet TreeSet

List ArrayList Vector LinkedList Stack

Map HashMap Hashtable TreeMap Properties

集合框架类解决的问题?变长数组操作的效率。

集合框架类的特点:Vector 2 ArrayList * 3 Hashtable * 4 HashSet 5 Properties

集合框架类的使用:声明

private Vector vec;2 构造中实例化

vec = new vector();向容器中添加数据:

vec.add();练习:

FILOTest.java

第一个进来,最后一个出去

FILO------栈

练习:

将Student类作为Hashtable的key StudentHash 1 Student StudentHash(主类)StudentHash.java 8月2日

练习:

使用HashMap进行数据的存储,与遍历

.keySet()//返回key的集合(Set)

.values()//返回value的列表(ArrayList)HashMapTest.java

HashMap与Hashtable的区别:

Hashtable是非同步的(效率高)

HashMap是同步的(效率低)

获得系统java的相关的环境变量:

System.getProperties();//可以返回

Properties数据类型(是Map的子类),内容为系统的全部环境变量

练习:

打印输出系统中全部的环境变量:

//2 了解Properties,还可以与文件系统交互

PropertiesTest.java 思路: Properties p = System….2 遍历p 复习:

java.lang:

String特点

常用构造:

String(byte[] bytes)//将byte型数组转换为字符串

String(char[] ch)//将char型数组转换为字符串

String(char[] value, int offset, int count)

//将char[]转换为字符串,offset从那里开始(0)//count(char.length)个数

常用方法: char charAt(int index)String str = “ABC”;Char ch = str.charAt(0);ch ==A;String concat(String str)//连接字符串==”+”号 boolean equalsIgnoreCase(String anotherString)//忽略大小写比较byte[] getBytes()// 将字符串处理为byte[] int indexOf(String str)//判断字符串所在的索引位置,如果描述的字符串不存在,返回值为-1 int lastIndexOf(String str)//字符串所在的最后一个索引位置,如果描述的字符串不存在,返回值为-1 int length()//返回字符串的长度 String replace(char oldChar,char newChar)//字符串替换 boolean startsWith(String prefix)// 判断字符串的开头,是否有匹配的字符串 10 boolean endsWitn(String prerfix)//判断字符串的结尾,是否有匹配的字符串String substring(int beginIndex, int endIndex)//字符串的截取char[] toCharArray()//将字符串处理为char[] 13 String toLowerCase()//将字符串处理为小写String toUpperCase()//将字符串处理为大写String trim()//除去字符串左右两边的空格StringBuffer //初始化的容量16 构造:

StringBuffer()//初始化容量 16 StringBuffer(10)//初始化容量 10 StringBuffer(String str)方法:

StringBuffer append(float f)// 向StirngBuffer添加内容

int capacity()// 返回容量

int length()// 返回StringBufferInt实际存储长度

StringBuilde(效率高)==StringBuffer 基本数据类型的包装包:

Byte b = new Byte();Int Integer char Character

int a = Integer.parseInt(“11”);System常用的方法:

System.gc();

System.exit(0);//退出java程序,0代表正常退出,非0代表异常退出

System.arraycopy()//数组的拷贝

System.currentTimeMillis()//系统毫秒(1970)

System.getProperties()//系统环境变量

Math 算术类:

Math.abs()// 绝对值

max min

random //1.0----0.0的随机值

round //四舍五入

Runtime // 获得系统运行环境,通常用于java调用

//第三方应用程序(.exe).exec(“ ”)java.util

Date //获得系统时间,不考虑时区

构造:

Date()//获得系统时间

Date(long date)//根据用户传入的系统毫秒获取时间

方法:

toString()格式化日期: java.text.SimpleDateFormat 构造:

SimpleDateFormat(String str)方法:

String format(date)

Calendar //日期,可以考虑时区

固定用法:

Calendar cal = Calendar.getInstance();//时区

TimeZone tz = TimeZone.getTimeZone(“GMT + 8:00”);Calendar cal = Calendar.getInstance(tz);常用的方法:

Date getTime();//返回当前系统时区

int get(int filed);// Calendar.静态变量

Random 构造:

Random()方法:

int nextInt(xxxx)//返回指定范围的随机数字

需要可以变长的数组,可以提高效率

集合框架类:一组相同元素的集合。Vector 构造:

Vector()//无参构造,初始化容量为10 方法:

Boolean add(E e)//向容器中存储数据

Void addElement(E obj)//向容器中存储数据

elements()//为Enumeration提供容器的地址Enumeration //应用于容器元素的遍历

方法:

boolean hasMoreElements()//判断指针是否还有数据

E nextElement()//返回当前的元素,并且指针下移

ArrayList 构造:

ArrayList()//初始化容量 10 方法:

add()

iterator()//为Iterator()提供容器的地址

Iterator: //遍历容器中的元素

方法:

boolean hasNext()// 判断指针是否还有数据

E next()//返回当前的元素,并且指针下移

Vector 与ArrayList的区别:

Vector效率低,线程同步 ArrayList 效率高,线程非同步

Hashtable //存储数据时,通过key,value的方式成对存储

//只要知道key可以一次性操作value 方法:

put(key,value)//向Hashtable容器存储数据

elements()//返回Enumeration value的地址

key()//返回Enumeration 提供key的地址

E get(key)//根据表述的key一次获得value remove(Object key)//根据表述的key删除value

Hashtable中key是一个自定义的数据类型,那么这个自定义类型,必须合理覆盖Object;public boolean equals(Object obj)public int hashCode()HashMap(同步)

LinkedList //链表——提供了方便的操作方法

方法:

addFirst()removeFirst()addLast()removeLast()继承关系:

Collection Set-------不允许重复数据List---------允许重复数据

Collection list = new ArrayList();//面向接口

Map------成对存储

使用官方类库方法:结合面向对象的思想

1.1 这个类的作用

1.2 这个类的构造

1.3 这个类的常用方法一些特殊类的固定用法

8月3日

java.io //为硬盘文件的读,写提供功能

File //在java中就代表磁盘上的一个文件

//它只可以访问这个文件的属性,并且它可以创建,删除文件,但是,它不可以控制文件中的内容

构造:

File(String pathname)示例:声明

File f;构造中初始化

//f代表当前目录下的new.txt f = new File(“new,txt”);3 方法:

boolean createNewFile()//新建一个空文件

boolean delete()//删除这个文件

练习:

在当前目录下创建一个新的文件判断这个文件是否存在

1.1 不存在,则创建一个新的文件

1.2存在,则输出这个文件的修改时间

新建项目:IO

新建类:FileTest.java 2 输出文件产相关信息

2.1 这个文件的名字

2.2 这个文件的绝对路径

I/O的基本原理:

流(stream):流是指在计算机的输入输出之间运动的数据序列。是用于I/O编程的抽象概念,表示线性的,顺序的输入和输出的数据流。

流分为两类:

输入流:代表从外设流入计算机的数据序列:输入流:源流(source stream)输出流:代表从计算机流向外设的数据序列:输出流:目的流(sink stream)在java中流的分类:

主体是程序 字节流---------代表传输的数据类型为byte类型,1字节

1.1 InputStream //可以从磁盘中读取文件

1.2 OutputStream //可以向磁盘中的文件写入内容 字符流---------代表传输的数据类型为char类型,2字节

2.1 Reader(输入流):可以从磁盘中读取文件

2.2 Writer(输出流):可以向磁盘中的文件写入内容

使用字节流:

练习:ByteStream中实现文件的写入,读取 使用FileOutputStream 向hello.txt中写入内容“MyFirstOutput” 1.1 FileOutputStream 的构造:

FileOutputStream(File file)

FileOutputStream(File file, Boolean append)

//append参数:为true,将会以追加模式进行写操作

false,将会覆盖原有文件

1.2 方法:

void write(byte[] b)

void close()//释放资源使用FileInputStream()2.1 构造

2.2 方法

int read(byte[] b)

//将读出的内容存储到byte[] 中,并且返回数组的长度

操作资源三大步: 打开

操作(读,写)

关闭

ByteStream.java

练习:使用java实现copy指令:

MyCopy

要求:java MyCopy args1 args2

结果:将args1中的内容copy到args2 思路:

1、从args1中读取内容

2、将读取的内容写入到args2 书写:

1、考虑需要的属性

2、构造初始化属性

3、方法实现copy

int read()//无参read方法 返回byte型数据

int read(byte[ ] b)//返回读取内容的长度

8月5日

字符流:char FileReader 构造:

FileReader(String filename)// 以参数中的文件名,创建输入字符流

FileWriter 练习:

FileRW.java

使用字符流实现文件的读写

注:程序结构参考ByteStream 字符流的特点:

由于字符流在write()实现时,使用了缓冲机制,所以在write()完毕后,必须同步缓冲区。

调用:

flush();或者

close();

System.in //可以接收用户在终端的输入

int read()//返回用户在程序运行过程中的键盘输入,为此输入的ascii码

System.in.read();//程序会阻塞状态,只有当用户输入字符,并且按下“回车键”程序,才会继续运行

ReadTest.java 流链:

目的:

在实际开发中,提高基本的字节流或者字符流的读取效率(读写效率)和更方便的操作机制(除了char,byte,String),还可以操作其他数据类型。

注意:一个程序很少只用一个流类来处理数据,通常都有使用一系列流类叫流链来处理。

字节流: BufferedInputStream BufferdeOutputStream

//特点:为基本的I/O操作,提供缓存区域

//提高字节流的操作效率

BufferedTest.java DataInputStream DataOutputStream

//特点:为各种基本,特殊数据类型提供操作方式

DataTest.java 输入流量

DataSource-àFileInputStream-àBufferedInputStream--àDataInputStream-àProgram 输出流量

Program-à DataOutputStream-à BufferedOutputStream-àFileOutputStream àDatasink 练习:

字符流版本的,MyCopy MyCharCopy.java 流链:

字节流的流链

字符流的流链

BufferedReader BufferedWriter

//提高I/O操作效率

BufferedRW.java

Alt + shift + z //自动写出异常

System.in.read();

System.in //java 中的标准输入流

ReadTest.java 8月6日 将对象存入到文件中(序列化存储)* ObjectSave.java 手工实现步骤:

将User数据类型的构造,封装,进行编写

使用DataxxxStream进行读写;

将User对象的数据进行拆分(setxxx,getxxx)序列化存储实现:

ObjectInputStream ObjectOutputStream //对于对象的读和写

方法:

Object readObject()

void writeObject(Object obj)

注意:读或写的对象,必须实现Serializable(序列化)接口

示例:

//这个对象支持了序列化存储 //可以使用readObject()|| writeObject()方法了

class User implements Serializable { }

ObjectSerializable.java

回顾:java.io File //特点:代表磁盘的文件,只可以访问文件的属性流的概念:只要计算机中线性的,顺序的数据输入,输出

输入流:

输出流:

java的角度:

字节流:

InputStream //读取内容

OutputStream //写入内容

特点:基本数据类型byte 字符流:

Writer: Reader:

特点:基本数据类型char 3 字节流和字符流的应用:

字节流:

FileInputStream FileOutputStream 字符流:

FileWriter FileReader 流链(包装流)

特点:

增加I/O的操作效率。(分配了一段内存-----缓冲区)

提供名种基本数据类型和特殊类型的操作机制

字节流: BufferedInputStream

BufferedOutputStream //特点:提高I/O操作效率DataInputStream

DataOutputStream //特点:提供基本,特殊类型操作

字符流: BufferedReader //特点:readLine();BufferedWriter 5 序列化存储:

特点:将对象进行存储,读取ObjectInputStream ObjectOutputStream

注意:要序列化存储对象必须实现:Serializable 接口 大练习:

使用

java.lang java.util java.io

实现一个用户的管理查询系统

功能:添加用户浏览用户删除用户查找用户退出程序

见UserManager文件夹

解决数据的累加问题: 程序一运行的时候,就将文件中的所有数据保存在内存中。

EOFException //文件指针已经到末尾时,还要继续读取

User user

User =(User)is.readObject();While(user!= null){

array.add(user);ois.readObject();}

ArrayList:

int size()//可以返回ArrayList中的元素个数

E get(int index)//根据用户传入的索引值,返回所存储数据

remove(int index)//删除指定位置的元素

第二篇:java中常用关键字总结

Java中的关键字总结

final 关键字

1、用final修饰的类不能被继承,没有子类;

2、用final修饰的方法,方法不能被重写;

3、用final修饰变量,变量的值不能被修改,表示常量,(书写规范:全部字母都要大写;多个单词,可以使用下划线(_)分开;)注意:如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错;如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错;

4、final用于成员变量表示该成员变量为常量,不能被修改,必须在变量定义时赋值。

5、final用于局部变量表示该局部变量为常量,不能被修改,可以在变量定义时赋值,也可以先定义变量后赋值。什么时候用final关键字? 有的时候不想别人重写我的方法就使用final关键字修饰该方法;

static关键字

1、static用于成员变量表示该变量只有一份,也就是说静态成员变量属于类而不属于某个具体的类实例对象,所有的类实例对象共享这个静态成员变量; 静态函数是不需要对象的,直接可以使用类名来调用;

2、非静态函数可以调用静态函数;静态函数不能调用非静态函数(非静态函数都是通过对象调用的);静态函数不能使用非静态成员变量,但可以使用静态成员变量;

3、静态函数调用时不需要对象的,所以不能使用和对象有关的关键字;(this;super;)

4、构造函数不能使用static修饰(构造函数是创建对象,开辟空间,给所有成员变量赋默认值之后,有JVM调用进栈,用来给对象的成员变量赋初始值的)static用于类,这里指的是内部类,那么在别的地方就可以通过外部类名来引用这个静态的内部类。

5、static还可以用于类的代码块,叫做静态代码块,静态代码块在类加载的时候就执行完毕,而类只加载一次;是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。什么时候用static关键字? 不想建立对象时;对于公用的成员变量必须使用static关键字修饰才能保证共享;

private关键字

1、java中的访问权限修饰符(作用是控制被修饰的成员的访问权限);被private修饰的成员,只能在本类中使用;所以被私有的成员需要在外界访问,还需要提供一个公共的方法;

设值:set + 变量名(变量名的首字母大写); 取值:get + 变量名(变量名的首字母大写);

2、构造函数私有化,就只能在被类中使用,别的地方调用不了;单例设计模式时会用到;

在开发中,一般类的成员变量都要私有化,然后提供get和set方法;

interface关键字

1、interface接口不是一个类,使用interface声明;接口没有构造函数;接口是用来描述不属于继承体系的扩展功能的;还可以定义规则;接口和类之间是实现关系,一个实现类可以实现多个接口;接口和接口之间是继承关系,可以多继承和多重继承;

2、接口中可以书写的内容:

成员变量:只能使用一下修饰符:public static final;也就是说,接口中的成员变量,都是常量;

成员函数: 只能使用修饰符:public abstract;也就是说,接口中的方法,都是公共和抽象的;一般函数前面的修饰符,推荐public不要省略;

什么时候用interface关键字? 对于继承体系之外的扩展功能需要使用接口来描述;

implements关键字

implements用于实现接口,需要实现接口中的所有方法,可以同时实现多个接口。extends关键字

extends用于继承父类或父接口,继承父类时只能是单继承。

class关键字

class用于声明类,访问权限可以是public或者默认权限,还可以指定为abstract、final,访问权限对于顶层类和内部类的限制是不同的。

instanceof关键字

1、比较运算符,运算符左边是一个指向一个对象的引用(左边就是一个变量名),右边是一个类名,运算符表示的意思就是:判断左边的对象的类型是不是右边的类;

2、使用instanceof关键字,可以实时判断一个对象的类型,就可以避免强制类型转换中容易出现的类型转换异常。

abstract关键字

1、abstract用于类表示这个类为抽象类,不能实例化。

2、抽象类,必须由子类去继承,继承的子类必须实现父类中所有的抽象方法,否则子类也是抽象的;

3、抽象函数必须放在抽象类中;抽象类中除了抽象函数,还可以定义所有一般类中可以定义的成员;

4、抽象类中可以不书写抽象方法;抽象类中必须有构造方法;抽象类一定是父类;

5、抽象类是父类,用来描述所有子类的共性信息的,只是描述的有些功能是不具体的;

6、abstract用于方法表示这个方法为抽象方法,只需声明,不用实现,由子类实现,抽象方法不能用private和static关键字。什么时候用abstract关键字? 当事物的功能描述不清,只能表示有这个功能时,就应该使用抽象修饰该功能,这个功能就是抽象的功能;如果一个类中有抽象的功能,那么这个类也是抽象的类;不想实例化这个类(包括自己也不行),但是允许别人继承,也可以使用抽象类。

this关键字

1、表示自身所属对象的引用;哪个对象调用this,this就指向哪个对象;

2、Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this.什么时候用this关键字?

1、通过this调用另一个构造方法,用法:this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。如果一个构造函数中有this()语句,就没有隐式三步,隐式三步在this语句调用的那个构造函数中,且this语句必须在第一行的位置;

2、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被私有化,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。(用来区分成员变量和局部变量)

3、在函数中,需要引用该函所属类的当前对象时候,直接用this。

super关键字

1、表示父类;可以在子类中调用父类的非私有成员和构造函数;

2、调用方法:

调用父类构造函数:super(参数);(父类中没有无参构造函数在父类中添

加一个无参构造;在子类中手动调用有参构造函数)调用父类成员变量:super.变量名; 调用父类成员函数:super.函数名(参数);

3、super关键和this作用类似,是被私有的成员变量或者成员方法变为可见,或者说用来引用被私有的成员变量和成员方法,不过super是用在子类中,目的是访问直接父类中被屏蔽的成员.什么时候用super关键字?

如果父类中没有无参构造函数是,需要在子类中用super调用有参构造函数;

第三篇:java 调用webservice的各种方法总结

一、利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务

1.首先建立一个Web services EndPoint:

Java代码

package Hello;

import javax.jws.WebService;

import javax.jws.WebMethod;

import javax.xml.ws.Endpoint;

@WebService

public class Hello {

@WebMethod

public String hello(String name){

return “Hello, ” + name + “n”;}

public static void main(String[] args){

// create and publish an endpoint

Hello hello = new Hello();

Endpoint endpoint Endpoint.publish(“http://localhost:8080/hello”, hello);

} }

=

2.使用 apt 编译 Hello.java(例:apt-d [存放编译后的文件目录] Hello.java),会生成 jaws目录

3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示

4.使用wsimport 生成客户端

使用如下:wsimport-p.-keep http://localhost:8080/hello?wsdl

5.客户端程序:

Java代码

1.class HelloClient{ 2.3.public static void main(String args[]){ 4.5.HelloService service = new HelloService();6.7.Hello helloProxy = service.getHelloPort();8.9.String hello = helloProxy.hello(“你好”);10.11.System.out.println(hello);12.13.} 14.15.} 16.二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的

利用xfire开发WebService,可以有三种方法:

1一种是从javabean 中生成;

一种是从wsdl文件中生成;

还有一种是自己建立webservice

步骤如下:

用myeclipse建立webservice工程,目录结构如下:

首先建立webservice接口,代码如下:

Java代码

1.package com.myeclipse.wsExample;2.3.//Generated by MyEclipse 4.5.6.7.public interface IHelloWorldService { 8.9.10.11.public String example(String message);12.13.14.15.} 16.Java代码

1.package com.myeclipse.wsExample;2.3.//Generated by MyEclipse 4.5.6.7.public class HelloWorldServiceImpl implements IHelloWorldService { 8.9.10.11.public String example(String message){ 12.13.return message;14.15.} 16.17.18.19.} 20.修改service.xml 文件,加入以下代码:

Xml代码

1.2.3. 4.5.HelloWorldService 6.7. 8.9.com.myeclipse.wsExample.IHelloWorldService 10.11. 12.13. 14.15.com.myeclipse.wsExample.HelloWorldServiceImpl 16.17. 18.19. 20.21.literal 22.23.application 24.25. 26.把整个项目部署到tomcat服务器中,打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl

客户端实现如下:

Java代码

1.package com.myeclipse.wsExample.client;2.3.import java.net.MalformedURLException;4.5.import java.net.URL;6.7.8.9.import org.codehaus.xfire.XFireFactory;10.11.import org.codehaus.xfire.client.Client;12.13.import org.codehaus.xfire.client.XFireProxyFactory;14.15.import org.codehaus.xfire.service.Service;16.17.import org.codehaus.xfire.service.binding.ObjectServiceFactory;18.19.20.21.import com.myeclipse.wsExample.IHelloWorldService;22.23.24.25.public class HelloWorldClient { 26.27.public static void main(String[] args)throws MalformedURLException, Exception { 28.29.// TODO Auto-generated method stub 30.31.Service s=new ObjectServiceFactory().create(IHelloWorldService.class);32.33.XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());34.35.String url=“http://localhost:8989/HelloWorld/services/HelloWorldService”;36.37.38.39.try 40.41.{ 42.43.44.45.IHelloWorldService hs=(IHelloWorldService)xf.create(s,url);46.47.String st=hs.example(“zhangjin”);48.49.System.out.print(st);50.51.} 52.53.catch(Exception e)54.55.{ 56.57.e.printStackTrace();58.59.} 60.61.} 62.63.64.65.} 66.这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net 做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:

Java代码

1.public static void main(String[] args)throws MalformedURLException, Exception { 2.3.// TODO Auto-generated method stub 4.5.Service s=new ObjectServiceFactory().create(IHelloWorldService.class);6.7.XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());8.9.10.11.//远程调用.net开发的webservice 12.13.Client c=new Client(new URL(“http://www.xiexiebang.com/axis2/

同理,也需要将axis2复制到webapp目录中

在axis2中部署webservice有两种方法,第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名

第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明

下面分别说明使用方法:

1.pojo方式:在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。其中POJO中所有的public方法将被发布成WebService方法。先实现一个pojo类:

Java代码

1.public class HelloWorld{ 2.3.public String getName(String name)4.5.{ 6.7.return ”你好 “ + name;8.9.} 10.11.public int add(int a,int b)12.13.{ 14.15.return a+b;16.17.} 18.19.} 20.由于这两个方法都是public类型,所以都会发布成webservice。编译HelloWorld类后,将HelloWorld.class文件放到%tomcat%webappsaxis2WEB-INFpojo目录中(如果没有pojo目录,则建立该目录),然后打开浏览器进行测试:

输入一下url:

http://localhost:8080/axis2/services/listServices

会列出所有webservice

这是其中的两个webservice列表,接着,在客户端进行测试:

首先可以写一个封装类,减少编码,代码如下:

Java代码

1.package MZ.GetWebService;2.3.import javax.xml.namespace.QName;4.5.6.7.import org.apache.axis2.AxisFault;8.9.import org.apache.axis2.addressing.EndpointReference;10.11.import org.apache.axis2.client.Options;12.13.import org.apache.axis2.rpc.client.RPCServiceClient;14.15.16.17.18.19.public class GetWSByAxis2 { 20.21.private static String EndPointUrl;22.23.private static String QUrl=”http://ws.apache.org/axis2“;

24.25.private QName opAddEntry;26.27.public String WSUrl;28.29.public RPCServiceClient setOption()throws AxisFault 30.31.{ 32.33.RPCServiceClient serviceClient = new RPCServiceClient();34.35.Options options = serviceClient.getOptions();36.37.EndpointReference targetEPR = new EndpointReference(WSUrl);38.39.options.setTo(targetEPR);40.41.return serviceClient;42.43.} 44.45.46.47.public QName getQname(String Option){ 48.49.50.51.return new QName(QUrl,Option);52.53.} 54.55.//返回String 56.57.public String getStr(String Option)throws AxisFault 58.59.{ 60.61.RPCServiceClient serviceClient =this.setOption();62.63.64.65.opAddEntry =this.getQname(Option);66.67.68.69.String str =(String)serviceClient.invokeBlocking(opAddEntry, 70.71.new Object[]{}, new Class[]{String.class })[0];72.73.return str;74.75.} 76.77.// 返回一维String数组 78.79.public String[] getArray(String Option)throws AxisFault

80.81.{ 82.83.RPCServiceClient serviceClient =this.setOption();84.85.86.87.opAddEntry =this.getQname(Option);88.89.90.91.String[] strArray =(String[])serviceClient.invokeBlocking(opAddEntry, 92.93.new Object[]{}, new Class[]{String[].class })[0];94.95.return strArray;96.97.} 98.99.//从WebService中返回一个对象的实例

100.101.public Object getObject(String Option,Object o)throws AxisFault 102.103.{ 104.105.RPCServiceClient serviceClient =this.setOption();106.107.QName qname=this.getQname(Option);108.109.Object object = serviceClient.invokeBlocking(qname, new Object[]{},new Class[]{o.getClass()})[0];110.111.return object;112.113.} 114.115.116.117.///////////////////////////////////////// 读者可以自己封装数据类型,如int,byte,float等数据类型

118.119.} 120.客户端调用方法:

Java代码

1.MZ.GetWebService.GetWSByAxis2 ws=new MZ.GetWebService.GetWSByAxis2();2.3.ws.WSUrl=”http://localhost:8989/axis2/services/HelloWorld“;4.5.HelloWorld hello=(HelloWorld)ws.getObject(”getName“, HelloWorld.class);6.7.8.9.10.11.System.out.println(hello.getName(”zhangjin“));12.2.使用service.xml发布webservice,这种方式和直接放在pojo目录中的POJO类不同。要想将MyService类发布成Web Service,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:

Xml代码

1. 2.3. 4.5.HelloWorld webservice 6.7. 8.9.10.11.service.HelloWorld 12.13. 14.15. 16.17. 20.21. 24.25. 26.27. 28.其中元素用于发布Web Service,一个元素只能发布一个WebService类,name属性表示WebService名,如下面的URL可以获得这个WebService的WSDL内容:

http://localhost:8080/axis2/services/myService?wsdl

除此之外,还有直接可以在其中制定webservice操作方法:可以这样些service.xml文件

Java代码

1. 2.3. 4.5.HelloWorld service 6.7. 8.9.

10.11.service.HelloWorld 12.13. 14.15. 16.17. 18.19. 20.21. 22.23. 26.27. 28.29. 30.如果要发布多个webservice,可以在文件两段加上...发布

第四篇:Java开发笔记 — HttpServletRequest方法总结

Java开发笔记 — HttpServletRequest方法总结

HttpServletRequest方法总结

getScheme()方法返回请求的计划,比如http,https或者ftp.getServerName()方法返回被发送请求的服务器的主机名 getServerPort()方法返回被发送请求的端口号。

getContextPath()返回请求地址的根目录,以“/”开关,但不是以“/”结尾。

一个常用的获得服务器地址的连接字符串是: String path = request.getContextPath();String basePath = request.getScheme()+“://”+request.getServerName()+“:”+request.getServerPort()+path+“/”;getCookies()取得cookie

getMethod()取得请求方法,如get,post或put getRequestURL()取得请求URL(统一资源定位符)getRequestURI()取得请求URI(统一资源标识符)getSession()取得对应session getHeaderNames()返回请求包含的所有头名称的一个enumeration(遍历器)使用方法如下:

Enumeration en = request.getHeaderNames();while(en.hasMoreElements()){

out.print(en.nextElement());

} 输出如下结果:

accept accept-language accept-encoding user-agent host connection cookie 具体含义是:

Accept:浏览器可接受的MIME类型。

Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。

User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。Host:初始URL中的主机和端口。

Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入 ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。

Cookie:这是最重要的请求头信息之一

getHeader(name)返回指定名称的特定请求的值。使用方法如下:

out.print(“cookie:===”+request.getHeader(“cookie”)+“
”);完整举例: accept:===*/* accept-language:===zh-cn accept-encoding:===gzip, deflate user-agent:===Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1;TheWorld)host:===localhost:8080 connection:===Keep-Alive cookie:===JSESSIONID=BF00F7FD72F5DF83DF8F62E3D5EFF960

第五篇:学习Java的方法

学习Java的方法

就我个人而言,是不太喜欢java的,更倾向于C++。

很多网友朋友问我学习Java有没有什么捷径,我说“没有,绝对没有!”。但是我却很愿意将自己学习的一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛!

要想学好Java,首先要知道Java的大致分类。我们知道,自从Sun推出Java以来,就 力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和 J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要 用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程; J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。J2SE开发桌面应用软件比起VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。所以现在应用最广泛又最好学的就是J2EE了。J2EE又包括许多组件,如 Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。

那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有 点象ASP。然后你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还

是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管 JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?还好,SUN提供了Javabean可以把你的JSP中的Java代码封装起来,便于调用也便于重用。接着就是 EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代 码已由中间件(也就是我们常听到的Weblogic,Websphere这些J2EE服务器)完成了,所

以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用 Java编发送电子邮件的程序,你就得看看Javamail了。

好了,对Java和J2EE有了一些基本概念之后,你就应该编一些程序了,千万不要纸 上谈兵哦。最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接Ctrl+C 再Ctrl+V,也不用劳您老大架再亲自把它 再输一遍吧,再说直接复制还不用怕出错,何乐而不为呢!还有就是要经常上一些好的Java编程文章,有好的文章要Cut下来,有问题尽管问,只要问题不是太傻,一般高手都会回答你的。下面介绍几个好的Java方面的编程网站:CSDN论坛 http:/// 那里Java资料比较全;

java.com.cn http://.cn/ 看这域名就知道有多牛,注册用户快接近一 万了,同时 1

在线人数也在一千左右,人气很旺的;

IBM的开发者网络 http://

IBM永远的蓝色巨人!!

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手 了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。所以你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈

祷在公司里碰到一个高手,而且他还愿意不厌其烦地教你,这样好象有点难哦!

还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设 计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有 力(对不起,偶最近《金装四大才子》看多了)。学Java必读的两个开源程序就是Jive 和Pet Store.。Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用 了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive 从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名鼎鼎的banq在Jive 2.1版本基础上 改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站http:/// 去下载,或到同济技术论坛的服务器上ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要错过了。

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体“技术”, 它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你

能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。关于设计模式的资料,还是向大家推荐banq的网站http:///,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring(重整)和极限XP编程,相信你 又会上一个台阶。做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧,你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的 来了。。。当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

下面介绍两个好的开源项目网站:

湖北省软件公共开发平台http://gro.clinux.org/

共创联盟http://cosoft.org.cn/

哇,好高兴哦,我终于成为高手了!非也,非也。古人云:“山外有山、人外有人”。

你知道计算机界现在的发展形势吗?你知道微软的.NET蓝图和SUN ONE计划之间的明争暗斗吗?你知道计算机技术将向何处发展吗?其实从各大计算机厂商最近的动作,都可以看出来“Web服务将是下一代互联网应用的制高点”,而微软的.NET蓝图和SUN ONE计划的斗争焦点,也就是Web服务。Web服务就是一个崭新的分布式计算模型,它是一系列标准的综合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同语言编写的软件能够轻易的集成起来,使网络资源和Web站点变成一种服务而不是混乱的垃圾场。不远的将来,我们就可以在家里点击一下鼠标,就可以完成出门旅游的全部准备工作,包括定飞机票,定旅游线路,定好房间等。请注意,这所有的一切都是Web站点间自动完成的,再也不用象现在一样,表面上是电子商务,实际上很多环节都是人工操作。也许你会觉得这是天方夜谈,不过就近的说,你也很有可能承接一个项目,要集成两个企业的ERP系统。很有可能上游企业的系统是用Dephi编的,而下游企业的系统是用Java编的。你说你是Java高手,大家都看者你怎么做呢。所以啊,你还得学习新技术,如Web服务,而且你Dephi也要懂一点吧(Dephi6现在已经提供Web服务的控件了)。你编的Java系统,可能要和.NET集成,所以你.NET要懂一点吧?到最后,你可能发现你已经成为Java高手了,但很多时间却在搞别的技术。太极张三丰里说,最厉害的招式就是没有招式,可能就是这个道理吧!

因为刚刚兴起,所以网上Web服务的资料不是很多,我还是给大家推荐几个网站吧:中国UDDI技术联盟http:///developerWorks/cn/xml/index.shtml?csdn IBM可是Web服务的力推者

下载java 中常用的方法总结word格式文档
下载java 中常用的方法总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    浅谈学习JAVA的方法

    岗前培训 创业培训 包就业 保底薪 大学生实训领导品牌 NIEH北京总部实训基地 1 浅谈怎么学习JAVA 其实初学者学习JAVA不要急,刚开始一定很慢,大家都知道万事开头难,但细节一定......

    JAVA总结专题

    在这忙忙碌碌的这段时间里,经过老师的辅导,迅速的将一点没有学的JAVA基础搞定了!有了基础学习还是好,万事开头难这句话说的太对了,学计算机语言我觉得记忆好的方法就是多打代码,课......

    Java总结

    Java实验 1. 调试HelloWorld程序 2. this,super,get ,set,把课本90页程序4.7中的name改成私有变量 3. 继承,重写,父类引用指向子类对象 4. 验证数组Arrays类和Collection类 5.......

    java总结

    调用父类构造方法  在子类的构造方法中可使用super(argument_list)语句调用父类的构造方法  如果子类的构造方法中没有显示地调用父类构造方法,也没有使用this关键字调用重载......

    java中final和static的总结

    Java关键字final、static使用总结 Java关键字final、static使用总结 一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非......

    【黑马程序员】Java中方法的参数传递问题

    【黑马程序员】Java中方法的参数传递问题 最近有很多同学,就算是就业班毕业之后,还依然在问 java方法的调用中值的传递问题,实际参数究竟什么时候才会改变?接下来我们先由一个例......

    个人对Java构造方法调用的总结(精选)

    个人对Java构造方法调用的总结 1.构造方法必须与定义它的类有完全相同的名字。构造方法没有返回类型,也没有void。 2.类可以不声明构造方法,这时类中隐含声明了一个方法体为......

    java(Web)中相对路径,绝对路径问题总结

    1.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:xyztest.txt 代表了test.txt文件的绝对路径。http:///index.htm......