「登录模块java」登录模块的实现功能及过程

博主:adminadmin 2022-11-30 07:31:07 67

本篇文章给大家谈谈登录模块java,以及登录模块的实现功能及过程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用JAVA编写一个简单用户登陆界面?

什么都不说了 直接给你代码吧\x0d\x0apackage com.moliying.ui;\x0d\x0aimport java.awt.BorderLayout;\x0d\x0aimport java.awt.Container;\x0d\x0aimport java.awt.FlowLayout;\x0d\x0aimport java.awt.List;\x0d\x0aimport java.awt.event.ActionEvent;\x0d\x0aimport java.awt.event.ActionListener;\x0d\x0aimport java.io.BufferedWriter;\x0d\x0aimport java.io.FileOutputStream;\x0d\x0aimport java.io.OutputStreamWriter;\x0d\x0aimport java.util.ArrayList;\x0d\x0aimport java.util.Arrays;\x0d\x0aimport javax.swing.JButton;\x0d\x0aimport javax.swing.JFrame;\x0d\x0aimport javax.swing.JLabel;\x0d\x0aimport javax.swing.JPanel;\x0d\x0aimport javax.swing.JPasswordField;\x0d\x0aimport javax.swing.JTextField;\x0d\x0apublic class Login {\x0d\x0aprivate JFrame frame = new JFrame("登录");\x0d\x0aprivate Container c = frame.getContentPane();\x0d\x0aprivate JTextField username = new JTextField();\x0d\x0aprivate JPasswordField password = new JPasswordField();\x0d\x0aprivate JButton ok = new JButton("确定");\x0d\x0aprivate JButton cancel = new JButton("取消");\x0d\x0apublic Login() {\x0d\x0aframe.setSize(300, 200);\x0d\x0aframe.setBounds(450, 300, 300, 200);\x0d\x0ac.setLayout(new BorderLayout());\x0d\x0ainitFrame();\x0d\x0aframe.setVisible(true);\x0d\x0a}\x0d\x0aprivate void initFrame() {\x0d\x0a// 顶部\x0d\x0aJPanel titlePanel = new JPanel();\x0d\x0atitlePanel.setLayout(new FlowLayout());\x0d\x0atitlePanel.add(new JLabel("系统管理员登录"));\x0d\x0ac.add(titlePanel, "North");\x0d\x0a// 中部表单\x0d\x0aJPanel fieldPanel = new JPanel();\x0d\x0afieldPanel.setLayout(null);\x0d\x0aJLabel a1 = new JLabel("用户名:");\x0d\x0aa1.setBounds(50, 20, 50, 20);\x0d\x0aJLabel a2 = new JLabel("密 码:");\x0d\x0aa2.setBounds(50, 60, 50, 20);\x0d\x0afieldPanel.add(a1);\x0d\x0afieldPanel.add(a2);\x0d\x0ausername.setBounds(110, 20, 120, 20);\x0d\x0apassword.setBounds(110, 60, 120, 20);\x0d\x0afieldPanel.add(username);\x0d\x0afieldPanel.add(password);\x0d\x0ac.add(fieldPanel, "Center");\x0d\x0a// 底部按钮\x0d\x0aJPanel buttonPanel = new JPanel();\x0d\x0abuttonPanel.setLayout(new FlowLayout());\x0d\x0abuttonPanel.add(ok);\x0d\x0abuttonPanel.add(cancel);\x0d\x0ac.add(buttonPanel, "South");\x0d\x0a\x0d\x0aok.addActionListener(new ActionListener() {\x0d\x0a\x0d\x0a@Override\x0d\x0apublic void actionPerformed(ActionEvent e) {\x0d\x0aSystem.out.println(username.getText().toString());\x0d\x0a}\x0d\x0a});\x0d\x0a\x0d\x0acancel.addActionListener(new ActionListener() {\x0d\x0a\x0d\x0a@Override\x0d\x0apublic void actionPerformed(ActionEvent e) {\x0d\x0aframe.setVisible(false);\x0d\x0a}\x0d\x0a});\x0d\x0a}\x0d\x0apublic static void main(String[] args) {\x0d\x0a//new Login();\x0d\x0a\x0d\x0aString ss = "abbabbbaabbbccba";\x0d\x0a\x0d\x0aSystem.out.println(ss.split("b").length);\x0d\x0a\x0d\x0a}\x0d\x0a}

java做的小管理系统 登录模块的问题

1.你指的不能正常登陆具体是抛出了什么异常?

2.如果你的数据库类型是Char建议你改成Varchar.因为Char类型有可能由于各种原因数据结尾中包含空格;或者在应用层rs.getString("user")时加上Trim方法

有可能是数据库字段里有空格。

3.本人建议你修改登陆部分代码因为就你贴出的代码看影响执行效率.

select psw from login where user=:user

执行后判断RecordCount

if RecordCount==1{

password=rs.getString("psw").Trim();

if password.equals(Key.Trim()){

//正常登陆

}else{

//口令错误

}

}else{

//用户名不存在

}

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

前期准备

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

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

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

设计的模块预览图:

彩色验证码预览图:

所用数据库: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();// 获得连接

ResultSetHandlerListObject rsh = new ColumnListHandler();// 创建结果集处理类

try {

ListObject 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();// 获得连接

ResultSetHandlerObject 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编写“用户登录模块”

String username=request.getParameter("userName");//获得模块传送的用户名

String password=request.getParameter("passWord");//获得传送过来的密码

int roleid=userdb.userlogin(username,password);//userlogin为数据库操作函数。里面用简单的select语句就可以实现

如:select password from db where name=username;

对选择出来的password 与获得的password进行比较就OK了

java用户登录注册模块最核心技术点是什么

注册就是把注册信息提交到Java后台,可能做一些处理,比如验证用户名是否重复,密码加密,然后在插入到数据库里面

登录就是把用户名和密码提交到Java后台,然后查询数据库有没有这一条记录,有的话登录成功,没有说明用户名或者密码错误

Java项目登录模块运用了什么技术怎么写

登录涉及到密码的加密处理,权限的验证以及用户信息的保存,涉及到的技术有加解密、拦截器以及共享session等。

关于登录模块java和登录模块的实现功能及过程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-30,除非注明,否则均为首码项目网原创文章,转载请注明出处。