Java熟练学习的8项技能学生必看

Java熟练学习的8项技能学生必看,第1张

Java8种值得学习优秀技能

1 Git

Git 是 Java 开发人员需要掌握的基础工具之一,每一位 Java 从业者都应该学会用它。Git 使用一套版本控制系统来管理各种项目集合。这是一个完全免费的开源系统,专注干非线性工作流、完整性和速度。分布式扩展:存储库可用来创建开发历史的副本。链接方法: Git 具有基于工具箱的设计,可提供定义明确的模型。

基干工具箱的设计:基于工具箱的设计可减少复合组件。

分布式扩展: 存储库可用来创建开发历史的副本。链接方法:Git 具有基于工具箱的设计,可提供定义明确的模型。

基干工具箱的设计:基于工具箱的设计可减少复合组件。

2Selenium

Java 中的 Selenium Web 驱动程序是 Java 开发人员在 2021 年应该了解的重要技术之一。

Selenium 提供了使用测试框架测试 Web 应用程序的一组工具; Selenium Web 驱动提供了一个开源API。它包括了用于 Web 应用程序的一些自动化特性。Selenium 的关键元素包括:

IDE(集成开发环境)

远程控制 /Selenium10

Web 控制器 /Selenium20/30

Selenium网格

3Jenkins

Jenkins 是源自 JAVA 编程的技术,其开源自动化的持续交付和集成可以自动化软件开发流程,支持多种版本控制工具。

Jenkins的插件可与另一种语言编写的代码集成。以下是你应该选择 Jenkins 的三大原因: 它提供了比其他软件更好的质量;其自动化系统可以管理集成;Jenkins的开发速度要快得多。

4用户友好的 Web 服务

REST 的全称是Representative Translation ofState(表述性状态转移),它代表了一种架构风格,是Java 开发人员必须掌握的知识。它提升了 Web 服务性能,还定义了可伸缩性和性能约束。这是 2022年Java 开发人员最理想的选项之一。

它的可重建 API用于 Web 服务开发中的通信需求。如果你了解 HTML、CSS 等,那么你将从RESTfulWeb 服务中获益匪浅。以下是 RESTful 服务的特性:

基干客户端 - 服务器的架构提供了服务器的管理、部署和托管等特性,还可以帮助用户使用服务和资源。它本质上是一种共享资源的共享计算模型。

5 Spring security

它的主要功能是应用程序身份验证。其 J2EE servlet规范和 EJB规范是JAVA 开发人员常用的两个关键安全特性。

Spring Security 支持多种身份验证模型,并与HTTP、Kerberos、JOSSO、CAS、LDAP 等技术集成。Spring Security 与 Java 深度关联,强烈建议Java 开发人员学习它。

6SpringBoot2

Spring Boot 发布了一个名为 Spring Boot 2的新版本。其中 Spring 框架负责控制,Spring Boot 负责生成具有常规配置的独立解决方案。

它主要依赖JAVA Baseline、BOM 材质和 cradle插件,其自动配置可提供安全性和响应性。它还提供了技术支持并改善了开发体验。它是 JAVA 程序员应了解的基本工具之一,其关键特性包括:

直接部署 Undertow、Jetty 或 Tomcat

减少构建配置,提供依赖项

在 Spring 中创建独立的应用程序

7Angular 或响应式 JS

ReactJS 是一个专门用于 UI开发的 JavaScript库,而 Angular 是一个框架。JAVA 开发人员应该很熟悉这两大关键技术了。微信搜索readdot,关注后回复编程资源,领取各种经典学习资料

Angular 2是开源 We 应用程序框架,Angular 的主要特性包括指令、范围、模板、注解、高级依赖项注入和子路由器: ReactJS 用于开发移动应用程序。ReactJS的主要特性包括与服务器的免费开源侧通信功能等。

8ApacheSpark 和 Kafka

Apache Spark 和 Kafka 是2021年Java开发人员一定要掌握的两项技术;它们在 2018 年底已发布稳定版本。Apache Spark 是用于集群计算的框架已开源。

Spark 提供了用于执行基本 1/0、调度和分派等任务的应用程序接口,并提供了同样开源的流处理平台。特别要提的是 Apache Kafka 代码是 Java 和 Scala 编写的。

Kafka 可以使用一些基本 API,例如 Producer APIConsumer APl、Connector API 和 Stream APl。

import javaio;

import javanet;

import javautil;

public class ChatServer {

boolean started = false;

ServerSocket ss = null;

List<Client> clients = new ArrayList<Client>();//创建一个线程数组,这样每连接一个客户端就开启一个线程管理

public static void main(String[] args) {

new ChatServer()start();

}

public void start() {

try {

ss = new ServerSocket(8888);//服务器端监听8888号端口,如果有客户端向这个端口发起请求就可以被服务器端监听到

started = true;

} catch (BindException e) {

Systemoutprintln("端口使用中");

Systemoutprintln("请关掉相关程序并重新运行服务器!");

Systemexit(0);

} catch (IOException e) {

eprintStackTrace();

}

try {

while(started) {

Socket s = ssaccept();//服务器等待客户端的连接

Client c = new Client(s);//如果有客户端发出请求,把s传给Client

Systemoutprintln("a client connected!");

new Thread(c)start();//启动一个新进程,客户端与服务端建立通信

clientsadd(c);//

}

} catch (IOException e) {

eprintStackTrace();

} finally {

try {

ssclose();

} catch (IOException e) {

eprintStackTrace();

}

}

}

}

class Client implements Runnable {

private Socket s;

private DataInputStream dis = null;

private DataOutputStream dos = null;

private boolean bConnected = false;

public Client(Socket s) {

thiss = s;

try {

dis = new DataInputStream(sgetInputStream());//建立通信后,获得输入流

dos = new DataOutputStream(sgetOutputStream());//获得输出流

bConnected = true;

} catch (IOException e) {

eprintStackTrace();

}

}

public void send(String str) {

try {

doswriteUTF(str);//向流里面写入数据str

} catch (IOException e) {

eprintStackTrace();

}

}

public void run() {

try {

while(bConnected) {

String str = disreadUTF();//从流里面读取数据赋给str

Systemoutprintln(str);

for(int i=0; i<new ChatServer()clientssize(); i++) {

Client c = new ChatServer()clientsget(i);

csend(str);

}

}

} catch (EOFException e) {

Systemoutprintln("Client closed!");

} catch (IOException e) {

eprintStackTrace();

} finally {

try {

if(dis != null) disclose();

if(dos != null) dosclose();

if(s != null) {

sclose();

//s = null;

}

} catch (IOException e1) {

e1printStackTrace();

}

}

}

}

主要就是这些,客户端的程序不完整,而且跟服务端差不多,你对照着书看 应该能看懂

//服务端程序:

import javaio;

import javanet;

public class TCPServer {

public static void main(String[] args) throws IOException {

new TCPServer()init();

}

@SuppressWarnings("static-access")

private void init() throws IOException{

@SuppressWarnings("resource")

ServerSocket server = new ServerSocket(1000);

Socket client = null;

while(true){

try {

client = serveraccept();

BufferedInputStream bis = new BufferedInputStream(clientgetInputStream());

byte[] b = new byte[1024];

int len = 0;

String message = "";

while((len=bisread(b))!=-1){

message = new String(b,0,len);

Systemoutprint("客户端:"+clientgetInetAddress()getLocalHost()getHostAddress()+"发来消息:" + message);

if("byte"equals(messagetrim()))

clientclose();

PrintWriter pw = new PrintWriter(clientgetOutputStream(),true);

pwprintln(message);

}

} catch (Exception e) {

Systemerrprintln("客户端:"+clientgetInetAddress()getLocalHost()getHostAddress()+" 已断开连接!");

}

}

}

}//客户端程序:

import javaio;

import javanetSocket;

public class TCPClient implements Runnable{

public static void main(String[] args) throws IOException {

new TCPClient()init();

}

private void init() throws IOException{

@SuppressWarnings("resource")

final Socket client = new Socket("127001",1000);

BufferedReader in = new BufferedReader(new InputStreamReader(Systemin));

String send = "";

while(true){

send = inreadLine();

PrintWriter out = new PrintWriter(clientgetOutputStream(),true);

if(!"byte"equals(sendtrim()))

outprintln(send);

else{

outprintln(send);

Systemexit(0);

}

new Thread(new TCPClient(){

@SuppressWarnings("static-access")

public void run(){

try {

BufferedInputStream bis = new BufferedInputStream(clientgetInputStream());

byte[] b = new byte[1024];

int len = 0;

while((len=bisread(b))!=-1){

Systemoutprintln("服务器:" +clientgetInetAddress()getLocalHost()getHostAddress()+"发来消息:"+new String(b,0,len)trim());

}

} catch (IOException e) {

Systemerrprintln("连接服务器失败!");

}

}

})start();

}

}

public void run() {}

}

//服务器测试结果:

客户端:1921680200发来消息:001 byte

客户端:1921680200发来消息:byte

客户端:1921680200 已断开连接!

客户端:1921680200发来消息:adasd

客户端:1921680200 已断开连接!

//客户端测试结果:

---001号客户端--

001 byte

服务器:1921680200发来消息:001 byte

byte //001礼貌说跟服务器说byte

---002号客户端--

adasd //002客户端直接关闭程序

服务器:1921680200发来消息:adasd

Socket通信:

作为服务器端:

//生成服务器端,监听服务器设定的端口

ServerSocket socketServer = new ServerSocket(端口号);

//建立客户端和服务器端的链接,这时再看客户端

Socket socket = socketServeraccept();

作为客户端:

//新建一个Socket,包含服务器端的IP和端口号,这样在服务器启动情况下可以建立和服务器的链接

Socket socket = new Socket("IP地址","端口号");

这时,服务器端和客户端的连接已经建立,如果需要通信和传输数据的话分别在服务器端、客户端新建流对象,可以通过流对象实现双方之间的互通

有关流的内容自己看书体会下就能写出B/S结构的通信了。

下面是一个简单的通讯实例,进行Server和Client之间的文件传输。。如果是简单的文本传输的话简化掉文本操作的内容即可。。

1服务器端

package sterning;

import javaioBufferedInputStream;

import javaioDataInputStream;

import javaioDataOutputStream;

import javaioFile;

import javaioFileInputStream;

import javanetServerSocket;

import javanetSocket;

public class ServerTest {

int port = 8821;

void start() {

Socket s = null;

try {

ServerSocket ss = new ServerSocket(port);

while (true) {

// 选择进行传输的文件

String filePath = "D:\\librar";

File fi = new File(filePath);

Systemoutprintln("文件长度:" + (int) filength());

// public Socket accept() throws

// IOException侦听并接受到此套接字的连接。此方法在进行连接之前一直阻塞。

s = ssaccept();

Systemoutprintln("建立socket链接");

DataInputStream dis = new DataInputStream(new BufferedInputStream(sgetInputStream()));

disreadByte();

DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));

DataOutputStream ps = new DataOutputStream(sgetOutputStream());

//将文件名及长度传给客户端。这里要真正适用所有平台,例如中文名的处理,还需要加工,具体可以参见Think In Java 4th里有现成的代码。

pswriteUTF(figetName());

psflush();

pswriteLong((long) filength());

psflush();

int bufferSize = 8192;

byte[] buf = new byte[bufferSize];

while (true) {

int read = 0;

if (fis != null) {

read = fisread(buf);

}

if (read == -1) {

break;

}

pswrite(buf, 0, read);

}

psflush();

// 注意关闭socket链接哦,不然客户端会等待server的数据过来,

// 直到socket超时,导致数据不完整。

fisclose();

sclose();

Systemoutprintln("文件传输完成");

}

} catch (Exception e) {

eprintStackTrace();

}

}

public static void main(String arg[]) {

new ServerTest()start();

}

}

2socket的Util辅助类

package sterning;

import javanet;

import javaio;

public class ClientSocket {

private String ip;

private int port;

private Socket socket = null;

DataOutputStream out = null;

DataInputStream getMessageStream = null;

public ClientSocket(String ip, int port) {

thisip = ip;

thisport = port;

}

/ //

创建socket连接

@throws Exception

exception

/

public void CreateConnection() throws Exception {

try {

socket = new Socket(ip, port);

} catch (Exception e) {

eprintStackTrace();

if (socket != null)

socketclose();

throw e;

} finally {

}

}

public void sendMessage(String sendMessage) throws Exception {

try {

out = new DataOutputStream(socketgetOutputStream());

if (sendMessageequals("Windows")) {

outwriteByte(0x1);

outflush();

return;

}

if (sendMessageequals("Unix")) {

outwriteByte(0x2);

outflush();

return;

}

if (sendMessageequals("Linux")) {

outwriteByte(0x3);

outflush();

} else {

outwriteUTF(sendMessage);

outflush();

}

} catch (Exception e) {

eprintStackTrace();

if (out != null)

outclose();

throw e;

} finally {

}

}

public DataInputStream getMessageStream() throws Exception {

try {

getMessageStream = new DataInputStream(new BufferedInputStream(socketgetInputStream()));

return getMessageStream;

} catch (Exception e) {

eprintStackTrace();

if (getMessageStream != null)

getMessageStreamclose();

throw e;

} finally {

}

}

public void shutDownConnection() {

try {

if (out != null)

outclose();

if (getMessageStream != null)

getMessageStreamclose();

if (socket != null)

socketclose();

} catch (Exception e) {

}

}

}

3客户端

package sterning;

import javaioBufferedOutputStream;

import javaioDataInputStream;

import javaioDataOutputStream;

import javaioFileOutputStream;

public class ClientTest {

private ClientSocket cs = null;

private String ip = "localhost";// 设置成服务器IP

private int port = 8821;

private String sendMessage = "Windwos";

public ClientTest() {

try {

if (createConnection()) {

sendMessage();

getMessage();

}

} catch (Exception ex) {

exprintStackTrace();

}

}

private boolean createConnection() {

cs = new ClientSocket(ip, port);

try {

csCreateConnection();

Systemoutprint("连接服务器成功!" + "\n");

return true;

} catch (Exception e) {

Systemoutprint("连接服务器失败!" + "\n");

return false;

}

}

private void sendMessage() {

if (cs == null)

return;

try {

cssendMessage(sendMessage);

} catch (Exception e) {

Systemoutprint("发送消息失败!" + "\n");

}

}

private void getMessage() {

if (cs == null)

return;

DataInputStream inputStream = null;

try {

inputStream = csgetMessageStream();

} catch (Exception e) {

Systemoutprint("接收消息缓存错误\n");

return;

}

try {

//本地保存路径,文件名会自动从服务器端继承而来。

String savePath = "E:\\";

int bufferSize = 8192;

byte[] buf = new byte[bufferSize];

int passedlen = 0;

long len=0;

savePath += inputStreamreadUTF();

DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(newBufferedOutputStream(new FileOutputStream(savePath))));

len = inputStreamreadLong();

Systemoutprintln("文件的长度为:" + len + "\n");

Systemoutprintln("开始接收文件!" + "\n");

while (true) {

int read = 0;

if (inputStream != null) {

read = inputStreamread(buf);

}

passedlen += read;

if (read == -1) {

break;

}

//下面进度条本为图形界面的prograssBar做的,这里如果是打文件,可能会重复打印出一些相同的百分比

Systemoutprintln("文件接收了" + (passedlen 100/ len) + "%\n");

fileOutwrite(buf, 0, read);

}

Systemoutprintln("接收完成,文件存为" + savePath + "\n");

fileOutclose();

} catch (Exception e) {

Systemoutprintln("接收消息错误" + "\n");

return;

}

}

public static void main(String arg[]) {

new ClientTest();

}

}

服务器端:

import javaawt;

import javaawtevent;

import javaxswing;

import javaio;

import javanet;

import javautilVector;

public class OneToMoreServer extends JFrame implements ActionListener{

JPanel contentPane;

JLabel jLabel2 = new JLabel();

JTextField jTextField2 = new JTextField("4700");

JButton jButton1 = new JButton();

JLabel jLabel3 = new JLabel();

JTextField jTextField3 = new JTextField();

JButton jButton2 = new JButton();

JScrollPane jScrollPane1 = new JScrollPane();

JTextArea jTextArea1 = new JTextArea();

ServerSocket server = null;

Socket socket = null;BufferedReader instr =null;PrintWriter os=null ;

Vector vector=new Vector();

boolean serverRun=true;

boolean clientRun=true;

//Construct the frame

public OneToMoreServer() {

jbInit();

}

class MyThread extends Thread{//该线程负责接收数据

Socket socketI=null;

BufferedReader br=null;

public MyThread(Socket socket)

{

socketI=socket;

}

public void run(){

try{

while(clientRun){

thissleep(100);

br= new BufferedReader(new InputStreamReader(socketIgetInputStream()));

if(brready()){ //检查是否有数据

jTextArea1append("接收到来自客户端("+socketIgetInetAddress()toString()+")的消息: "+brreadLine()+"\n");

}

}

}catch(Exception ex){JOptionPaneshowMessageDialog(null,extoString());}

}

}

public void actionPerformed(ActionEvent e){

if(egetSource()==jButton1){

int port=IntegerparseInt(jTextField2getText()trim());

//监听指定端口

try

{

server = new ServerSocket(port);

new Thread(new ListenClient())start();

}

catch(IOException ex)

{

JOptionPaneshowMessageDialog(null,extoString());

}

}

if(egetSource()==jButton2){

String msg=jTextField3getText()trim();

if(msglength()!=0)

sendData("hello");

}

}

//该线程负责监听指定端口

class ListenClient implements Runnable

{

public void run()

{

try{

if(jButton1getText()trim()equals("侦听")){

jButton1setText("正在侦听");

while(serverRun)

{

Socket socketI=serveraccept();//有客户端连入时建立一个线程监听客户端发送的消息

vectoradd(socketI);

jButton1setText("正在聊天");

jTextArea1append("客户端"+socketIgetInetAddress()toString()+"已经连接到服务器\n");

MyThread t=new MyThread(socketI);

tstart();

}

}

}catch(Exception ex){

JOptionPaneshowMessageDialog(null,extoString());

}

}

}

private void sendData(String s){//发送数据

try{

for(int i=0;i<vectorsize();i++)

{

//怎么广播

//向每个客户端发送一条消息

Socket socket=(Socket)vectorget(i);

os= new PrintWriter(socketgetOutputStream());

osprintln(s);

osflush();

}

}catch(Exception ex){

}

}

private void jbInit() {

contentPane = (JPanel) thisgetContentPane();

contentPanesetLayout(null);

thissetSize(new Dimension(540, 340));

thissetTitle("服务器");

jLabel2setBounds(new Rectangle(22, 27, 72, 28));

jLabel2setText("端口号");

jLabel2setFont(new javaawtFont("宋体", 0, 14));

jTextField2setBounds(new Rectangle(113, 27, 315, 24));

jButton1setBounds(new Rectangle(440, 28, 73, 25));

jButton1setFont(new javaawtFont("Dialog", 0, 14));

jButton1setBorder(BorderFactorycreateEtchedBorder());

jButton1setActionCommand("jButton1");

jButton1setText("侦听");

jLabel3setBounds(new Rectangle(23, 57, 87, 28));

jLabel3setText("请输入信息");

jLabel3setFont(new javaawtFont("宋体", 0, 14));

jTextField3setBounds(new Rectangle(114, 60, 314, 24));

jTextField3setText("");

jButton2setText("广播");

jButton2setActionCommand("jButton1");

jButton2setBorder(BorderFactorycreateEtchedBorder());

jButton2setFont(new javaawtFont("Dialog", 0, 14));

jButton2setBounds(new Rectangle(440, 58, 73, 25));

jScrollPane1setBounds(new Rectangle(23, 92, 493, 189));

contentPaneadd(jTextField2, null);

contentPaneadd(jButton1, null);

contentPaneadd(jLabel3, null);

contentPaneadd(jTextField3, null);

contentPaneadd(jButton2, null);

contentPaneadd(jScrollPane1, null);

contentPaneadd(jLabel2, null);

jScrollPane1getViewport()add(jTextArea1, null);

jButton1addActionListener(this);

jButton2addActionListener(this);

thisaddWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

try{

socketclose();

instrclose();

Systemexit(0);

}catch(Exception ex){

//JOptionPaneshowMessageDialog(null,extoString());

}

}

});

}

public static void main(String arg[]){

JFramesetDefaultLookAndFeelDecorated(true);

OneToMoreServer frm=new OneToMoreServer();

frmsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

frmsetVisible(true);

}

}

客户端

import javaawt;

import javaawtevent;

import javaxswing;

import javaio;

import javanet;

public class Client extends JFrame implements ActionListener{

JPanel contentPane;

JLabel jLabel1 = new JLabel();

JTextField jTextField1 = new JTextField("127001");

JLabel jLabel2 = new JLabel();

JTextField jTextField2 = new JTextField("4700");

JButton jButton1 = new JButton();

JLabel jLabel3 = new JLabel();

JTextField jTextField3 = new JTextField();

JButton jButton2 = new JButton();

JScrollPane jScrollPane1 = new JScrollPane();

JTextArea jTextArea1 = new JTextArea();

BufferedReader instr =null;

Socket socket = null;

PrintWriter os=null;

public Client() {

jbInit();

}

class MyThread extends Thread{

public void run(){

try{

os=new PrintWriter(socketgetOutputStream());

instr=new BufferedReader(new InputStreamReader(socketgetInputStream()));

while(true)

{

thissleep(100);

if(instrready())

{

jTextArea1append("接收到来自服务器的消息: "+instrreadLine()+"\n");

}

}

}catch(Exception ex){

JOptionPaneshowMessageDialog(null,extoString());

}

}

}

public void actionPerformed(ActionEvent e){

if(egetSource()==jButton1){

String ip=jTextField3getText()trim();

int port=IntegerparseInt(jTextField2getText()trim());

connectServer(ip,port);

}

if(egetSource()==jButton2){

String s=thisjTextField3getText()trim();

sendData(s);

}

}

private void connectServer(String ip,int port){//连接

try{

if(jButton1getText()trim()equals("连接")){

jButton1setText("连接服务器");

socket=new Socket(ip,port);

jButton1setText("正在聊天");

MyThread t=new MyThread();

tstart();

}

}catch(Exception ex){

JOptionPaneshowMessageDialog(this,extoString());

}

}

private void sendData(String s){//发送数据

try{

os = new PrintWriter(socketgetOutputStream());

osprintln(s);

osflush();

thisjTextArea1append("向服务器发送消息:"+s+"\n");

}catch(Exception ex){

JOptionPaneshowMessageDialog(this,extoString());

}

}

private void jbInit() {

contentPane = (JPanel) thisgetContentPane();

jLabel1setFont(new javaawtFont("宋体", 0, 14));

jLabel1setText("服务器名称");

jLabel1setBounds(new Rectangle(20, 22, 87, 28));

contentPanesetLayout(null);

thissetSize(new Dimension(540, 340));

thissetTitle("客户端");

jTextField1setBounds(new Rectangle(114, 26, 108, 24));

jLabel2setBounds(new Rectangle(250, 25, 72, 28));

jLabel2setText("端口号");

jLabel2setFont(new javaawtFont("宋体", 0, 14));

jTextField2setBounds(new Rectangle(320, 27, 108, 24));

jButton1setBounds(new Rectangle(440, 28, 73, 25));

jButton1setFont(new javaawtFont("Dialog", 0, 14));

jButton1setBorder(BorderFactorycreateEtchedBorder());

jButton1setActionCommand("jButton1");

jButton1setText("连接");

jLabel3setBounds(new Rectangle(23, 57, 87, 28));

jLabel3setText("请输入信息");

jLabel3setFont(new javaawtFont("宋体", 0, 14));

jTextField3setBounds(new Rectangle(114, 60, 314, 24));

jButton2setText("发送");

jButton2setActionCommand("jButton1");

jButton2setBorder(BorderFactorycreateEtchedBorder());

jButton2setFont(new javaawtFont("Dialog", 0, 14));

jButton2setBounds(new Rectangle(440, 58, 73, 25));

jScrollPane1setBounds(new Rectangle(23, 92, 493, 189));

contentPaneadd(jLabel1, null);

contentPaneadd(jTextField1, null);

contentPaneadd(jLabel2, null);

contentPaneadd(jTextField2, null);

contentPaneadd(jButton1, null);

contentPaneadd(jLabel3, null);

contentPaneadd(jTextField3, null);

contentPaneadd(jButton2, null);

contentPaneadd(jScrollPane1, null);

jScrollPane1getViewport()add(jTextArea1, null);

jButton1addActionListener(this);

jButton2addActionListener(this);

thisaddWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

try{

socketclose();instrclose();osclose();Systemexit(0);

}catch(Exception ex){

JOptionPaneshowMessageDialog(null,extoString());

}

}

});

}

public static void main(String arg[]){

JFramesetDefaultLookAndFeelDecorated(true);

Client frm=new Client();

frmsetVisible(true);

}

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Java熟练学习的8项技能学生必看

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情