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壓縮。