java语言实现用户注册和登录

Python09

java语言实现用户注册和登录,第1张

//这个是我写的,里面有连接数据库的部分。你可以拿去参考一下

import java.awt.*

import javax.swing.*

import java.awt.event.*

import java.sql.*

class LoginFrm extends JFrame implements ActionListener// throws Exception

{

JLabel lbl1 = new JLabel("用户名:")

JLabel lbl2 = new JLabel("密码:")

JTextField txt = new JTextField(5)

JPasswordField pf = new JPasswordField()

JButton btn1 = new JButton("确定")

JButton btn2 = new JButton("取消")

public LoginFrm() {

this.setTitle("登陆")

JPanel jp = (JPanel) this.getContentPane()

jp.setLayout(new GridLayout(3, 2, 5, 5))

jp.add(lbl1)

jp.add(txt)

jp.add(lbl2)

jp.add(pf)

jp.add(btn1)

jp.add(btn2)

btn1.addActionListener(this)

btn2.addActionListener(this)

}

public void actionPerformed(ActionEvent ae) {

if (ae.getSource() == btn1) {

try {

Class.forName("com.mysql.jdbc.Driver")// mysql数据库

Connection con = DriverManager.getConnection(

"jdbc:mysql://localhost/Car_zl", "root", "1")// 数据库名为Car_zl,密码为1

System.out.println("com : "+ con)

Statement cmd = con.createStatement()

String sql = "select * from user where User_ID='"

+ txt.getText() + "' and User_ps='"

+ pf.getText() + "'"

ResultSet rs = cmd

.executeQuery(sql)// 表名为user,user_ID和User_ps是存放用户名和密码的字段名

if (rs.next()) {

JOptionPane.showMessageDialog(null, "登陆成功!")

} else

JOptionPane.showMessageDialog(null, "用户名或密码错误!")

} catch (Exception ex) {

}

if (ae.getSource() == btn2) {

System.out.println("1111111111111")

//txt.setText("")

//pf.setText("")

System.exit(0)

}

}

}

public static void main(String arg[]) {

JFrame.setDefaultLookAndFeelDecorated(true)

LoginFrm frm = new LoginFrm()

frm.setSize(400, 200)

frm.setVisible(true)

}

}

Java注册用户MySQL储存文件可以放在MySQL数据库中,即使用MySQL中的BLOB(Binary Large Object)类型来存储文件。首先,需要创建一个存储文件的字段,类型为BLOB。然后,使用Java代码将文件读取到字节数组中,最后使用PreparedStatement对象将字节数组插入到数据库中。

首先,我们得明白用户登录使用什么登陆的,即用户在线的原理。这只是将用户的对象存放在了session中而已,然后再frame中进行调用,其他特定页面也进行直接引用就行。那么实现“挤下来”的功能就是让新生成的session有效,让原来存放用户的session失效就行。到此,大体思路已经有了。那怎么实现呢?

想要知道怎么实现,就必须要明白session存放用户对象的过程了。在用户登录之后,我们可以得到用户的对象user,而存放到session中需要执行session.setAttribute(key,value)我们将用户的userId或是其他的唯一标识存为key,将用户对象存为值。这样就能随时随地调用唯一用户了。user存放的问题解决了,那相同 登录 时session废除的问题呢?

这个其实也不难,我们可以更具session的特性一样,用map进行存贮,将用户的标识存为key,而将其所对应的session存为value,那么当重复用户登录时,只需要取出对应的session,将其invalidate就行了。

至此,实现思路已经明了,聒噪了这么久,大家都急不可耐地想看代码了吧?以下是代码:

前置准备,jsp界面

界面很简单,只是一个简单的登录界面

<form action ="<%=request.getContextPath()%>/UserWXPServlet" method = "post">

用户名š<input type = "text" name = "username"/><br/>

密码š<input type = "text" name = "password"/><br/>

<input type = "submit" value ="提交"/>

</form>

成功后跳转页面

欢迎:${sessionScope.user.username}登陆!<br/>

我这没有写失败页面,大家可以自己写,失败页面也没什么好说的了

entity和登录的实现

user的javabean

private String username

private String password

public User() {

}

public User(String user, String password) {

super()

this.username = user

this.password = password

}

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

}

登录user的service实现方法,这里就不写dao和接口了,一切以简单为

public boolean dologin(User user){

Properties pro = new Properties()

InputStream is = UserWXPServlet.class.getClassLoader().getResourceAsStream("user_wxp.properties")

String password = null

System.out.println(is+"--------->"+pro)

if(user==null){

return false

}

try {

pro.load(is)

password = pro.getProperty(user.getUsername())

if(user.getPassword()!=null&&user.getPassword().equals(password)){

System.out.println("登陆成功")

return true

}

} catch (IOException e) {

e.printStackTrace()

}finally{

if(is!=null){

try {

is.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

return false

}

登录成功返回true,失败则返回false。