java+mysql搭建服务器的步骤如下:
1、在工程项目中导入mysql-connection-java-5.0.16-bin.jar这个jar包;
2、编写一个数据库管理类(MyDBHelper)用来配置数据库的属性:
packagecom.hu.demo;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.SQLException;
publicclassMyDBHelper{
publicstaticfinalStringurl="jdbc:mysql://127.0.0.1/student";
publicstaticfinalStringname="com.mysql.jdbc.Driver";
publicstaticfinalStringuser="root";
="root";
publicConnectionconn=null;
publicPreparedStatementpst=null;
publicDBHelper(Stringsql){
try{
Class.forName(name);//指定连接类型
conn=DriverManager.getConnection(url,user,password);//获取连接
pst=conn.prepareStatement(sql);//准备执行语句
}catch(Exceptione){
e.printStackTrace();
}
}
publicvoidclose(){
try{
this.conn.close();
this.pst.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
3、编写一个测试类(Test)来测试相关数据库操作:
packagecom.hu.demo;
importjava.sql.ResultSet;
importjava.sql.SQLException;
publicclassTest{
staticStringsql=null;
staticDBHelperdb1=null;
staticResultSetret=null;
publicstaticvoidmain(String[]args){
sql="select*fromstuinfo";//SQL语句
db1=newDBHelper(sql);//创建DBHelper对象
try{
ret=db1.pst.executeQuery();//执行语句,得到结果集
while(ret.next()){
Stringuid=ret.getString(1);
Stringufname=ret.getString(2);
Stringulname=ret.getString(3);
Stringudate=ret.getString(4);
System.out.println(uid+" "+ufname+" "+ulname+" "+udate);
}//显示数据
ret.close();
db1.close();//关闭连接
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
4、至此就完全了java+mysql服务器的搭建。
‘贰’ java webservice例子,例子完整,最好有注释,demo也行!但是一定要完整!谢谢!
刚好 我这两天也在学webservice,给你一个我才学的例子
1.解压axis压缩包,然后解压,取出里面的webapps里面的axis项目放到tomcat中的webapps中,然后启动tomcat
项目的发布有两种形式
1.即时发布
直接在axis中放置java源文件,注意后缀名字改为.jws.注意源文件中不要有任何的导包语句
详细步骤如下
1.直接在axis目录下编写java源文件,写好后把后缀名改为jws。如Demo.jws
2.重启动服务器,在浏览器中输入http://127.0.0.1:8080/axis/Demo.jws,点开后得到一个网址http://127.0.0.1:8080/axis/Demo.jws?wsdl
3.在myeclipse中导入网址http://127.0.0.1:8080/axis/Demo.jws?wsdl,可以执行里面的方法就可以了。
2.定制发布
编写要发布为服务器javaBean
编写生成class文件放在tomcat中的axis中的webinf中的classes中
编写deploy.wsdd文件描述服务器的名称入口等信息。
详细步骤
以一个add为例子
1.编写javaBean代码
public class add {
public Integer getAdd(Integer a, Integer b){
return a+b;
}
}
2.将class文件放入axis中的webinf下的classes中
注意,如果该类有包的话,就要建立相应的文件名,如
package com.ssh.webservice
那么classes文件下就要有相应的com文件夹,ssh文件夹,webservice文件夹
3.写上他的描述文件wsdd文件
描述文件直接放到classes中即可,名字为deploy.wsdd,文件为
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="Add" provider="java:RPC">
list中显示的名字
<parameter name="className" value="add"/>
调用的类
<parameter name="allowedMethods" value="*"/>
指定调用的方法
</service>
</deployment>
4.编写批处理文件.bat文件,如下
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\axis.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\axis-ant.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\commons-discovery-0.2.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\commons-logging-1.0.4.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\jaxrpc.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\saaj.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\libwsdl4j-1.5.1.jar
java org.apache.axis.client.AdminClient E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\classes\deploy.wsdd
然后运行该批处理文件
5.启动服务器,在浏览器中输入项目的发布地址,如http://127.0.0.1:8080/axis/就会有已个list,然后点进方法
6.编写客户端代码,如下
package com.ssh.client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class TestClient
{
public static void main(String [] args) {
try {
String endpoint =
"http://127.0.0.1:8080/axis/services/Test01";
这个地址是值xml文件中的最后一行的local地址
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("getMessage") );
指定调用的方法
String ret = (String) call.invoke( new Object[] { } );
如果有参数需要传入的话直接在括号里面写上1,2,2等
System.out.println(ret);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
我这里还有webservice的教学视屏,要的话说一声
‘叁’ 怎么用java开发qq群机器人 服务端 客户端
Server.java
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
importjava.net.ServerSocket;
importjava.net.Socket;
importjava.util.ArrayList;
importjava.util.List;
publicclassServer{
privateList<ServerThread>serverThreads;
;
publicServer()throwsIOException{
serverSocket=newServerSocket(8025);
serverThreads=newArrayList<ServerThread>();
}
publicList<ServerThread>getServerThreads(){
returnserverThreads;
}
publicvoidsetServerThreads(List<ServerThread>serverThreads){
this.serverThreads=serverThreads;
}
(){
returnserverSocket;
}
publicvoidsetServerSocket(ServerSocketserverSocket){
this.serverSocket=serverSocket;
}
publicstaticvoidmain(String[]args){
Serverserver=null;
try{
server=newServer();
}catch(IOExceptione){
e.printStackTrace();
System.exit(-1);
}
try{
Socketsocket;
Threadt;
while(true){
socket=server.getServerSocket().accept();
ServerThreadserverThread=newServerThread(server,socket);
server.getServerThreads().add(serverThread);
t=newThread(serverThread);
t.start();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
publicvoidsendMessage(Stringmessage,Socketsocket){
for(ServerThreadserverThread:serverThreads){
try{
serverThread.getDos().writeUTF(message);
}catch(IOExceptione){
//e.printStackTrace();
System.out.println("推送消息给"+serverThread.getSocket().getRemoteSocketAddress()+"过程中发生了错误.");
}
}
}
}
{
privateServerserver;
privateSocketsocket;
privateDataInputStreamdis;
privateDataOutputStreamdos;
publicServerThread(Serverserver,Socketsocket)throwsIOException{
this.server=server;
this.socket=socket;
dis=newDataInputStream(socket.getInputStream());
dos=newDataOutputStream(socket.getOutputStream());
}
publicServergetServer(){
returnserver;
}
publicvoidsetServer(Serverserver){
this.server=server;
}
publicSocketgetSocket(){
returnsocket;
}
publicvoidsetSocket(Socketsocket){
this.socket=socket;
}
publicDataInputStreamgetDis(){
returndis;
}
publicvoidsetDis(DataInputStreamdis){
this.dis=dis;
}
publicDataOutputStreamgetDos(){
returndos;
}
publicvoidsetDos(DataOutputStreamdos){
this.dos=dos;
}
publicvoidrun(){
Stringmessage="";
while(!message.equals("logout")){
try{
message=socket.getRemoteSocketAddress()+"say:"+dis.readUTF();
//System.out.println(message);
server.sendMessage(message,socket);
}catch(IOExceptione){
//e.printStackTrace();
break;
}
}
server.getServerThreads().remove(this);
try{
dis.close();
dos.close();
socket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
Client.java
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
importjava.net.Socket;
importjava.net.UnknownHostException;
importjava.util.Scanner;
publicclassClient{
privateSocketsocket;
privateDataOutputStreamdos;
privateDataInputStreamdis;
publicClient()throwsUnknownHostException,IOException{
socket=newSocket("127.0.0.1",8025);
dis=newDataInputStream(socket.getInputStream());
dos=newDataOutputStream(socket.getOutputStream());
newThread(newClientThread(this)).start();
}
publicSocketgetSocket(){
returnsocket;
}
publicvoidsetSocket(Socketsocket){
this.socket=socket;
}
publicDataOutputStreamgetDos(){
returndos;
}
publicvoidsetDos(DataOutputStreamdos){
this.dos=dos;
}
publicDataInputStreamgetDis(){
returndis;
}
publicvoidsetDis(DataInputStreamdis){
this.dis=dis;
}
publicvoidclose(){
try{
dis.close();
dos.close();
socket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
privatevoidsendMessage(Stringmessage){
try{
dos.writeUTF(message);
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
Clientclient=null;
try{
client=newClient();
System.out.println(client.getSocket().getLocalPort());
}catch(IOExceptione){
System.out.println("BUG");
e.printStackTrace();
System.exit(-1);
}
Stringmessage="";
Scannerscanner=newScanner(System.in);
while(!message.equals("logout")){
message=scanner.nextLine();
//System.out.println(message);
client.sendMessage(message);
}
scanner.close();
client.close();
}
}
{
privateClientclient;
publicClientThread(Clientclient){
super();
this.client=client;
}
@Override
publicvoidrun(){
try{
while(true){
System.out.println(client.getDis().readUTF());
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
‘肆’ 服务端调用轻量java
项目需求
服务器端项目是用mina写的传统socket,准备升级到支持websocket接入。
为什么采用undertow
1、Undertow 是基于 NIO 的高性能 Web 嵌入式服务器,并且支持websocket(这个很重要,只要把undertow集成到项目中,用undertow启用websokcet,然后把原来的socket切换到websocket。)
2、轻量级web服务器:多么轻量级呢,启动一个支持websocket的服务只需要20M内存,如下图:
上图的代码如下:
public class WebSocketServer {
public static void main(final String[] args) {
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(path()
.addPrefixPath("/myapp", websocket(new WebSocketConnectionCallback() {
@Override
public void onConnect(WebSocketHttpExchange exchange, WebSocketChannel channel) {
channel.getReceiveSetter().set(new AbstractReceiveListener() {
@Override
protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) {
WebSockets.sendText(message.getData(), channel, null);
}
});
channel.resumeReceives();
}
}))
.addPrefixPath("/", resource(new ClassPathResourceManager(WebSocketServer.class.getClassLoader(), WebSocketServer.class.getPackage())).addWelcomeFiles("index.html")))
.build();
server.start();
}
}
3、开源,遵循Apache 2.0。商业软件可使用,并且不要求商业软件开源。
4、支 持permessage-deflate压缩,这个是对通信内容进行压缩的扩展,可以有效的降低服务器和客户端通信使用的带宽。如下图
在request请求头里边客户端表明了自己支持permessage-deflate、然后服务器在response头里边告诉了服务器采用permessage-deflatey压缩。