首页编程java编程java8update60是什么?java8update351有什么用

java8update60是什么?java8update351有什么用

编程之家 2023-10-13 88次浏览

大家好,如果您还对java8update60是什么不太了解,没有关系,今天就由本站为大家分享java8update60是什么的知识,包括java8update351有什么用的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

java8update60是什么?java8update351有什么用

java登录模块验证出现问题求解答

前期准备

首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足。技术方面的进步大都都需要从实践中出来的。

功能:用户注册功能+系统登录功能+生成验证码

java8update60是什么?java8update351有什么用

知识:窗体设计、数据库设计、JavaBean封装属性、JDBC实现对数据库的连接、验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息、随机获得字符串、对文本可用字符数的控制等

设计的模块预览图:

彩色验证码预览图:

java8update60是什么?java8update351有什么用

所用数据库:MySQL

数据库设计

创建一个数据库db_database01,其中包含一个表格tb_user,用来保存用户的注册的数据。

其中包含4个字段

id int(11)

username varchar(15)

password varchar(20)

email varchar(45)

MySQL语句可以这样设计:

create schema db_database01;

use db_database01;

create table tb_user(

id int(11) not null auto_increment primary key,

username varchar(15) not null,

password varchar(20) not null,

email varchar(45) not null

);

insert into tb_user values(1,"lixiyu","lixiyu",lixiyu419@gmail.com);

这样把lixiyu作为用户名。

select语句检查一下所建立的表格:

编写JavaBean封装用户属性

package com.lixiyu.model;

public class User{

private int id;//编号

private String username;//用户名

private String password;//密码

private String email;//电子邮箱

public int getId(){

return id;

}

public void setId(int id){

this.id= id;

}

public String getUsername(){

return username;

}

public void setUsername(String username){

this.username= username;

}

public String getPassword(){

return password;

}

public void setPassword(String password){

this.password= password;

}

public String getEmail(){

return email;

}

public void setEmail(String email){

this.email= email;

}

}

编写JDBC工具类

将与数据库操作相关的代码放置在DBConfig接口和DBHelper类中

DBConfig接口用于保存数据库、用户名和密码信息

代码:

package com.lixiyu.util;

public interface DBConfig{

String databaseName="db_database01";//数据库名称

String username="root";//数据库用户名

String password="lixiyu";//数据库密码

}

为简化JDBC开发,DBHelper使用了了Commons DbUtil组合。

DBHelper类继承了DBConfig接口,该类中包含4种方法:

(1)getConnection()方法:获得数据库连接,使用MySQL数据源来简化编程,避免因加载数据库驱动而发生异常。

(2)exists()方法:判断输入的用户名是否存在。

(3)check()方法:当用户输入用户名和密码,查询使用check()方法是否正确。

(4)save()方法:用户输入合法注册信息后,,将信息进行保存。

详细代码:

package com.lixiyu.util;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.Arrays;

import java.util.List;

import org.apache.commons.dbutils.DbUtils;

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.ResultSetHandler;

import org.apache.commons.dbutils.handlers.ColumnListHandler;

import org.apache.commons.dbutils.handlers.ScalarHandler;

import org.apache.commons.lang.StringEscapeUtils;

import com.lixiyu.model.User;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

public class DBHelper implements DBConfig{

/*

*使用MySQL数据源获得数据库连接对象

*

*@return:MySQL连接对象,如果获得失败返回null

*/

public static Connection getConnection(){

MysqlDataSource mds= new MysqlDataSource();//创建MySQL数据源

mds.setDatabaseName(databaseName);//设置数据库名称

mds.setUser(username);//设置数据库用户名

mds.setPassword(password);//设置数据库密码

try{

return mds.getConnection();//获得连接

} catch(SQLException e){

e.printStackTrace();

}

return null;//如果获取失败就返回null

}

/*

*判断指定用户名的用户是否存在

*

*@return:如果存在返回true,不存在或者查询失败返回false

*/

public static boolean exists(String username){

QueryRunner runner= new QueryRunner();//创建QueryRunner对象

String sql="select id from tb_user where username='"+ username+"';";//定义查询语句

Connection conn= getConnection();//获得连接

ResultSetHandler<List<Object>> rsh= new ColumnListHandler();//创建结果集处理类

try{

List<Object> result= runner.query(conn, sql, rsh);//获得查询结果

if(result.size()> 0){//如果列表中存在数据

return true;//返回true

} else{//如果列表中没有数据

return false;//返回false

}

} catch(SQLException e){

e.printStackTrace();

} finally{

DbUtils.closeQuietly(conn);//关闭连接

}

return false;//如果发生异常返回false

}

/*

*验证用户名和密码是否正确使用Commons Lang组件转义字符串避免SQL注入

*

*@return:如果正确返回true,错误返回false

*/

public static boolean check(String username, char[] password){

username= StringEscapeUtils.escapeSql(username);//将用户输入的用户名转义

QueryRunner runner= new QueryRunner();//创建QueryRunner对象

String sql="select password from tb_user where username='"+ username+"';";//定义查询语句

Connection conn= getConnection();//获得连接

ResultSetHandler<Object> rsh= new ScalarHandler();//创建结果集处理类

try{

String result=(String) runner.query(conn, sql, rsh);//获得查询结果

char[] queryPassword= result.toCharArray();//将查询到得密码转换成字符数组

if(Arrays.equals(password, queryPassword)){//如果密码相同则返回true

Arrays.fill(password,'0');//清空传入的密码

Arrays.fill(queryPassword,'0');//清空查询的密码

return true;

} else{//如果密码不同则返回false

Arrays.fill(password,'0');//清空传入的密码

Arrays.fill(queryPassword,'0');//清空查询的密码

return false;

}

} catch(SQLException e){

e.printStackTrace();

} finally{

DbUtils.closeQuietly(conn);//关闭连接

}

return false;//如果发生异常返回false

}

/*

*保存用户输入的注册信息

*

*@return:如果保存成功返回true,保存失败返回false

*/

public static boolean save(User user){

QueryRunner runner= new QueryRunner();//创建QueryRunner对象

String sql="insert into tb_user(username, password, email) values(?,?,?);";//定义查询语句

Connection conn= getConnection();//获得连接

Object[] params={ user.getUsername(), user.getPassword(), user.getEmail()};//获得传递的参数

try{

int result= runner.update(conn, sql, params);//保存用户

if(result> 0){//如果保存成功返回true

return true;

} else{//如果保存失败返回false

return false;

}

} catch(SQLException e){

e.printStackTrace();

} finally{

DbUtils.closeQuietly(conn);//关闭连接

}

return false;//如果发生异常返回false

}

}

系统登录

1.1窗体设计

使用BoxLayout布局,将控件排列方式设置从上至下:

复制代码代码如下:

contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.PAGE_AXIS));

窗体使用了标签、文本域、密码域和按钮等控件

实现代码:

public class login extends JFrame{

private static final long serialVersionUID=-4655235896173916415L;

private JPanel contentPane;

private JTextField usernameTextField;

private JPasswordField passwordField;

private JTextField validateTextField;

private String randomText;

public static void main(String args[]){

try{

UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

} catch(Throwable e){

e.printStackTrace();

}

EventQueue.invokeLater(new Runnable(){

public void run(){

try{

login frame=new login();

frame.setVisible(true);

}catch(Exception e){

e.printStackTrace();

}

}

});

}

public login(){

setTitle("系统登录");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

contentPane=new JPanel();

setContentPane(contentPane);

contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.PAGE_AXIS));

JPanel usernamePanel=new JPanel();

contentPane.add(usernamePanel);

JLabel usernameLable=new JLabel("\u7528\u6237\u540D\uFF1A");

usernameLable.setFont(new Font("微软雅黑", Font.PLAIN, 15));

usernamePanel.add(usernameLable);

usernameTextField=new JTextField();

usernameTextField.setFont(new Font("微软雅黑", Font.PLAIN, 15));

usernamePanel.add(usernameTextField);

usernameTextField.setColumns(10);

JPanel passwordPanel= new JPanel();

contentPane.add(passwordPanel);

JLabel passwordLabel= new JLabel("\u5BC6 \u7801\uFF1A");

passwordLabel.setFont(new Font("微软雅黑", Font.PLAIN, 15));

passwordPanel.add(passwordLabel);

passwordField= new JPasswordField();

passwordField.setColumns(10);

passwordField.setFont(new Font("微软雅黑", Font.PLAIN, 15));

passwordPanel.add(passwordField);

JPanel validatePanel= new JPanel();

contentPane.add(validatePanel);

JLabel validateLabel= new JLabel("\u9A8C\u8BC1\u7801\uFF1A");

validateLabel.setFont(new Font("微软雅黑", Font.PLAIN, 15));

validatePanel.add(validateLabel);

validateTextField= new JTextField();

validateTextField.setFont(new Font("微软雅黑", Font.PLAIN, 15));

validatePanel.add(validateTextField);

validateTextField.setColumns(5);

randomText= RandomStringUtils.randomAlphanumeric(4);

CAPTCHALabel label= new CAPTCHALabel(randomText);//随机验证码

label.setFont(new Font("微软雅黑", Font.PLAIN, 15));

validatePanel.add(label);

JPanel buttonPanel=new JPanel();

contentPane.add(buttonPanel);

JButton submitButton=new JButton("登录");

submitButton.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e){

do_submitButton_actionPerformed(e);

}

});

submitButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));

buttonPanel.add(submitButton);

JButton cancelButton=new JButton("退出");

cancelButton.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

do_cancelButton_actionPerformed(e);

}

});

cancelButton.setFont(new Font("微软雅黑",Font.PLAIN,15));

buttonPanel.add(cancelButton);

pack();//自动调整窗体大小

setLocation(com.lixiyu.util.SwingUtil.centreContainer(getSize()));//让窗体居中显示

}

窗体居中显示:

public class SwingUtil{

/*

*根据容器的大小,计算居中显示时左上角坐标

*

*@return容器左上角坐标

*/

public static Point centreContainer(Dimension size){

Dimension screenSize= Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕大小

int x=(screenSize.width- size.width)/ 2;//计算左上角的x坐标

int y=(screenSize.height- size.height)/ 2;//计算左上角的y坐标

return new Point(x, y);//返回左上角坐标

}

}

1.2获取及绘制验证码

public class CAPTCHALabel extends JLabel{

private static final long serialVersionUID=-963570191302793615L;

private String text;//用于保存生成验证图片的字符串

public CAPTCHALabel(String text){

this.text= text;

setPreferredSize(new Dimension(60, 36));//设置标签的大小

}

@Override

public void paint(Graphics g){

super.paint(g);//调用父类的构造方法

g.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体

g.drawString(text, 5, 25);//绘制字符串

}

}

*彩色验证码:

public class ColorfulCAPTCHALabel extends JLabel{

private static final long serialVersionUID=-963570191302793615L;

private String text;//用于保存生成验证图片的字符串

private Color[] colors={ Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE,

Color.PINK, Color.RED, Color.WHITE, Color.YELLOW};//定义画笔颜色数组

public ColorfulCAPTCHALabel(String text){

this.text= text;

setPreferredSize(new Dimension(60, 36));//设置标签的大小

}

@Override

public void paint(Graphics g){

super.paint(g);//调用父类的构造方法

g.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体

for(int i= 0; i< text.length(); i++){

g.setColor(colors[RandomUtils.nextInt(colors.length)]);

g.drawString(""+ text.charAt(i), 5+ i* 13, 25);//绘制字符串

}

}

}

1

java飞机大战实现了什么技术

1 package cn.xiaocangtian.Util;

2

3 import java.awt.Frame;

4 import java.awt.Graphics;

5 import java.awt.Image;

6 import java.awt.event.WindowAdapter;

7 import java.awt.event.WindowEvent;

8

9

10 public class MyFrame extends Frame{

11

12//加载窗口

13 public void launchFrame(){

14 setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);//设置窗口大小

15 setLocation(100, 100);//设置左上角坐标,开始位置,也就是窗口开始位置

16 setVisible(true);//设置为可见(默认为不可见)

17

18//启动重画线程

19 new PaintThread().start();

20

21//匿名内部类---用来关闭窗口

22 addWindowListener(new WindowAdapter(){

23@Override

24 public void windowClosing(WindowEvent e){

25 System.exit(0);

26}

27});

28

29}

30

31//双缓冲技术解决屏幕闪烁

32 private Image offScreenImage= null;//利用双缓冲技术消除闪烁

33 public void update(Graphics g){

34 if(offScreenImage== null)

35 offScreenImage= this.createImage(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);

36

37 Graphics gOff= offScreenImage.getGraphics();

38

39 paint(gOff);

40 g.drawImage(offScreenImage, 0, 0, null);

41}

42

43/**

44*定义一个重画窗口的线程类

45*是一个内部类(方便访问外部类属性)

46*/

47 class PaintThread extends Thread{

48 public void run(){

49 while(true){

50 repaint();//重画

51 try{

52 Thread.sleep(40);//1s= 1000ms

53} catch(InterruptedException e){

54 e.printStackTrace();

55}

56}

57}

58}

59

60}

复制代码

java8update351有什么用

甲骨文公司OracleJavaDevelopmentKit(JDK)是一款Java开发工具包,包含Java运行环境(java运行库),Java开发套件和Java基础类库源代码.JavaRuntimeEnvironment(JRE)是运行Java程序的运行环境,不管是做Java开发还是从事安卓开发,都必须在系统安装JRE运行环境.Java语言的贡献力量是其他任何技术无可比拟的.

新版变化

2022年10月18日JDK8u351Update发行说明

Java™SEDevelopmentKit8,Update351(JDK8u351)

https://pan.baidu.com/s/1ZtDZYZGlz69ikS4vsHAp3Q

[JDK]JavaSEDevelopmentKit稳定版官方下载页面(需注册登陆)

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

[JRE]JavaRuntimeEnvironment稳定版官方下载页面(需注册登陆)

https://java.com/en/download/manual.jsp

关于java8update60是什么和java8update351有什么用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

java的t是什么意思啊,t在java中是什么意思 85式太极拳(85式太极拳口诀表)