`
seawavenews
  • 浏览: 230309 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

JSP下通过socket访问数据库

阅读更多

摘要
实例代码(2002-08-28 18:38:46)

--------------------------------------------------------------------------------
By Wing, 出处:Linuxaid


Client.java

import java.awt.*;
import java.io.*;
import java.net.*;
import java.applet.*;

public class Client extends Applet
{
public TextArea chat_txt;
private TextField sql_txt;
private Button connect,execute;
private Socket soc= null;
private PrintStream ps= null;
Listen listen;

public void init()
{
chat_txt= new TextArea();
sql_txt= new TextField(20);
connect= new Button("Connect");
execute= new Button("Execute");
execute.disable();

Panel pp= new Panel();
pp.setLayout(new FlowLayout());
pp.add(sql_txt);
pp.add(connect);
pp.add(execute);

add("North",pp);
add("Center",chat_txt);
}

public boolean action(Event evt,Object obj)
{
if(evt.target instanceof Button)
{
String label= (String)obj;
if(label.equals("Connect"))
{

try{
soc= new Socket(InetAddress.getLocalHost(),4700);
ps= new PrintStream(soc.getOutputStream());
ps.println("HELLO");
ps.flush();
listen= new Listen(this,soc);
listen.start();
}catch(Exception e)
{
chat_txt.setText(e.toString());
disconnect();
}
connect.setLabel("Disconnect");
execute.enable();
}else if(label.equals("Disconnect"))
disconnect();
else if(label.equals("Execute"))
{
if(sql_txt.getText()!= null)
{
ps.println("FIND");
ps.flush();
ps.println(sql_txt.getText());
ps.flush();
}
}
}
return false;
}

public void disconnect()
{
if(soc!= null)
{
try{
listen.stop();
ps.println("QUIT");
ps.flush();
soc.close();
}catch(Exception e){}
finally{
listen.stop();
listen= null;
soc= null;
}
execute.disable();
connect.setLabel("Disconnect");
}
}
}

class Listen extends Thread
{
Socket socket= null;
DataInputStream dis= null;
Client parent= null;

public Listen(Client p,Socket s)
{
parent= p;
socket= s;
try{
dis= new DataInputStream(socket.getInputStream());
}catch(Exception e){}
}

public void run()
{
String line= null;

while(true)
{
try{
line= dis.readLine();
}catch(Exception e){}
if(line!= null)
parent.chat_txt.appendText(line);
}
}
}


Display.java

/********************************************
格式化输出数据库记录,出自<<使用java进行SQL数据库程序设计>>
返回值为格式化的字符串
********************************************/
import java.sql.*;

class Display extends Object
{
ResultSet theResultSet;
String theResult;

public void display()
{}

public void setResult(ResultSet result)
{
theResultSet= result;
}

public String getString()
throws SQLException,NoClassDefFoundError
{
theResult= "";
ResultSetMetaData metaData= theResultSet.getMetaData();
int colcount = metaData.getColumnCount();
int colSize[]= new int[colcount];
String colLabel[]= new String[colcount];
int colType[]= new int[colcount];
String colTName[]= new String[colcount];
int colPrec[]= new int[colcount];
int colScale[]= new int[colcount];

theResult +="
";
for(int i= 1;i<= colcount;i++)
{
colSize[i-1] = metaData.getColumnDisplaySize(i);
colLabel[i-1]= metaData.getColumnLabel(i);
colType[i-1] = metaData.getColumnType(i);
colTName[i-1]= metaData.getColumnTypeName(i);
colPrec[i-1] = metaData.getPrecision(i);
colScale[i-1]= metaData.getScale(i);

if(colSize[i-1]<1+ colLabel[i-1].length())
colSize[i-1]= 1+colLabel[i-1].length();
theResult+= rightPad(colLabel[i-1],colSize[i-1]);
}

theResult +="

";
int row= 0;

while(theResultSet.next())
{
row++;
for(int i=1;i<= colcount;i++)
{
String colvalue= theResultSet.getString(i);
if(colvalue== null)
colvalue="";
theResult+= rightPad(colvalue,colSize[i-1]);
}
theResult+="
";
}
theResult+="
(" +row+ "rows included)
";
return theResult;
}

private String rightPad(String s,int len)
{
int curlen= s.length();
if(curlen>len)
return repString("*",len);
return (s+repString(" ",(len-curlen)));
}

private String repString(String s,int times)
{
String result="";
for(int i=0;i<times;i++)
result+= s;
return result;
}
}


sqlServer.java

import java.awt.*;
import java.sql.*;
import java.io.*;
import java.net.*;
import Display;

public class sqlServer
{
public static void main(String[] args)
{
System.out.println("Waiting for connection");

try{
ServerSocket session= new ServerSocket(4700);
handleRequests handler= null;
System.out.println("Waiting for connection");
while(true)
{
Socket socket= null;
socket= session.accept();
if(socket== null)
continue;
System.out.println("Connection made");
handler= new handleRequests(socket);
handler.start();
}
}catch(Exception e)
{
System.out.println("客户连接失败"+e);
}
}
}

class handleRequests extends Thread
{
private DataInputStream in= null;
private PrintStream out= null;
private Socket socket= null;

Connection theConnection= null;
Statement theStatement= null;
ResultSet theResultSet= null;
Display display= null;

public handleRequests(Socket s)
throws IOException
{
socket= s;
in= new DataInputStream(socket.getInputStream());
out= new PrintStream(socket.getOutputStream());
}

public void openConnection()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
if(theConnection!= null)
theConnection.close();
theConnection= DriverManager.getConnection("jdbc:odbc:test","admin","1234");
theStatement= theConnection.createStatement();
display= new Display();
}catch(Exception e)
{
System.out.println(e);
}
}

public void run()
{
openConnection();
try{
String line= null;
while(true)
{
line = in.readLine();
if(line!= null)
line= line.trim();
if(line.equals("FIND"))
{
line = in.readLine();
line= line.trim();
theResultSet= theStatement.executeQuery(line);
display.setResult(theResultSet);
out.print(display.getString());
out.flush();
}
if(line.equals("QUIT"))
break;
if(line.equals("HELLO"))
{
out.println("Welcome to join us");
out.flush();
}
}
in.close();
out.close();
socket.close();
}catch(Exception e)
{
System.out.println(e)
 
 

分享到:
评论

相关推荐

    Java网络和数据库编程.ppt

    JDBC是Java中访问数据库的标准接口,由Oracle公司提供。它允许Java开发者连接到各种类型的数据库,执行SQL语句,处理结果集。使用JDBC,开发者需要加载数据库驱动,建立连接,创建Statement或PreparedStatement对象...

    java做的短信平台 含JSP

    JDBC是Java中用于访问数据库的标准API,它提供了连接、查询、更新和事务管理等功能。开发者可以使用PreparedStatement和Statement对象执行SQL语句,处理数据的增删改查操作。 为了实现高效的数据处理,平台可能还...

    jsp聊天系统<jsp:plugin>

    1. 客户端:由用户通过浏览器访问的界面,这里使用`&lt;jsp:plugin&gt;`嵌入Java小应用程序,提供实时的聊天输入和显示功能。 2. 服务器端:处理客户端的请求,存储和分发消息,可以使用Servlet或JavaServer Faces (JSF) ...

    基于jsp+ssh的图书管理系统源码数据库.doc

    - Java语言在网络编程方面具有强大的功能,支持TCP/IP协议,可以通过Socket编程实现客户端与服务器之间的通信。 - Java提供了丰富的API来处理HTTP请求,使得开发者能够轻松构建Web应用。 3. **SQL Server技术简介...

    JSP高级编程(全)

    12.5 使用Java Mail API 访问Mail 服务器 12.6 本章小结 附录1 支持EJB1.0 技术规范的EJB 平台开发工具一览表 附录2 JDBC Driver 一览表 附录3 WebLogic 服务器的配置方法 附录4 本书中所用数据库的数据库结构 参考...

    JAVAJSP的聊天室Java源码

    用户通过浏览器访问JSP页面,输入消息并发送。这些消息会被发送到服务器端,通过Servlet处理,然后广播给所有在线的用户。服务器端的Servlet也可能负责处理用户登录、管理会话以及存储聊天记录等任务。 **关键组件...

    局域网聊天jsp

    【局域网聊天jsp】项目概述 局域网聊天jsp是一个基于Java服务器页面...通过深入学习和实践,开发者不仅可以掌握JSP的基础知识,还能了解到网络通信、多线程、数据库操作等相关技术,对提升全栈开发能力有很大帮助。

    jsp 论坛源码 + jsp flash留言板

    2. **Servlet-JSP模型**:论坛通常基于MVC(Model-View-Controller)设计模式构建,其中JSP作为视图层,处理用户界面展示,而Servlet作为控制器,处理业务逻辑和数据访问。 3. **数据库交互**:论坛需要存储用户...

    jsp小小体会.doc

    总之,本文档提供了关于JSP开发中可能遇到的问题及解决方法,特别是与数据库连接相关的错误,以及如何在Windows操作系统中设置远程访问和端口开放的步骤,对于初学者和开发者来说是一份很有价值的参考材料。通过这些...

    JSP和Struts解决方案

    通过深入探讨JSP和Struts在构建Web应用中的角色,我们可以看到这两种技术各自的优势和适用场景。JSP提供了灵活的页面生成机制,而Struts框架则带来了结构化的开发流程和强大的组件支持。结合使用JSP和Struts,可以...

    jsp书店系统设计(论文)_jsp_java源程序代码.rar

    1. **声明式编程**:开发者可以通过JSP标签在页面上声明动态内容,如`&lt;jsp:include&gt;`用于包含其他页面,`&lt;jsp:useBean&gt;`用于实例化Java对象。 2. **脚本元素**:JSP支持在页面中嵌入Java表达式(`&lt;%= expression %&gt;...

    精选_基于jsp和mysql实现的产品后台管理系统_源码打包

    【标题】"精选_基于jsp和mysql实现的产品后台管理系统_源码打包"揭示了一个实际的IT项目,它是一个产品后台管理系统,使用了Java Server Pages(JSP)技术和MySQL数据库进行开发。这个系统可能是用于企业管理其产品...

    JSP版Flash小游戏小偷 -源码.zip

    3. **理解交互**:JSP与Flash之间的通信通常通过URL变量、FlashVars或Socket进行。在这个“小偷”游戏中,可能是通过传递参数来更新游戏状态或者获取服务器数据。 4. **调试运行**:在本地环境中部署源码,使用调试...

    网络管理系统

    通过Web服务器,如Tomcat,Java Servlets和JSP(Java Server Pages)处理客户端请求,将数据库操作转化为动态网页内容,返回给用户。 三、数据库操作功能详解 1. 查询:系统提供灵活的查询功能,支持按关键词、日期...

    基于JSP的在线购物网站的设计

    描述中提到了安全策略设计的实现,这可能包括加密技术,如SSL(Secure Socket Layer)用于保护用户数据,以及使用Session来管理用户会话,防止未授权访问。此外,系统还可能应用了一些防止SQL注入和XSS攻击的防护...

    TCP&JSP课程设计考核

    2. JSP应用系统设计:构建一个基于JSP的动态网站,可能包括用户登录、注册、数据展示等功能,涉及到数据库操作和会话管理。 《网络软件开发实践》教学方案和课程表将为学生提供课程的总体安排和学习目标。课程考核...

    基于JSP的网上超市购物系统设计及实现.doc

    通过合理的数据库设计,可以确保用户信息、商品信息、订单信息等数据的快速访问和更新。 在功能实现上,系统涵盖了用户浏览商品、搜索商品、添加到购物车、下单支付等一系列购物流程。后台管理功能包括商品上架、...

Global site tag (gtag.js) - Google Analytics