java,User类用list怎么写

java,User类用list怎么写,第1张

import java.util.Collection

import java.util.concurrent.ConcurrentHashMap

public class Main {

public static void main(String[] args) {

UserDao userDao = new UserDaoImpl()

for (int i=0i<10++i) {

userDao.addUser(new User(i, "UName_" + i, "12345" + i, i % 2 == 0 ? UserDao.FEMALE : UserDao.MALE))

}

try {

User user = userDao.findUser("UName_1")

user.setUId(11)

userDao.updateUser(user)

} catch(Exception e) {

System.out.println(e.getMessage())

e.printStackTrace()

}

}

}

class UserDaoImpl implements UserDao {

private ConcurrentHashMap<Integer, User>container = new ConcurrentHashMap<>()

@Override

public User findUser(String UName) {

Collection<User>users = container.values()

if (!users.isEmpty()) {

for (User user : users) {

if (user.getUName().equals(UName)) {

return user

}

}

}

return null

}

@Override

public int addUser(User user) {

container.put(user.getUId(), user)

return 1

}

@Override

public int updateUser(User user) {

User u = findUser(user.getUName())

if (null != u &&u.getUId() != user.getUId()) {

throw new RuntimeException("不能修改UId")

}

container.put(user.getUId(), user)// 覆盖原来的就可以了

return 1

}

}

interface UserDao {

int FEMALE = 1

int MALE = 2

User findUser(String UName)

int addUser(User user)

int updateUser(User user)

}

class User {

private int UId

private String UName

private String UPass

private int gender

public User() {

}

public User(int UId, String UName, String UPass, int gender) {

this.UId = UId

this.UName = UName

this.UPass = UPass

this.gender = gender

}

public String getUserinfo() {

return this.toString()

}

@Override

public String toString() {

return "User{" +

"UId=" + UId +

", UName='" + UName + '\'' +

", UPass='" + UPass + '\'' +

", gender=" + gender +

'}'

}

public int getUId() {

return UId

}

public void setUId(int UId) {

this.UId = UId

}

public String getUName() {

return UName

}

public void setUName(String UName) {

this.UName = UName

}

public String getUPass() {

return UPass

}

public void setUPass(String UPass) {

this.UPass = UPass

}

public int getGender() {

return gender

}

public void setGender(int gender) {

this.gender = gender

}

}

系统分为两个功能:

注册和登录,

当用户注册一个新用户时

(可以使用英

文和中文用户名)

,就是向数据库的

user

表中添加一条记录。

当用户输入注册信息时,

本系统提供了基本的客户端验证,

来判断用户输入

的合法性,

只有当用户的输入满足系统的要求时,

才会将用户输入的数据提交到

服务器端负责处理注册信息的

Action

在注册

Action

成功处理完用户提交的注

册信息后,

客户端仍然会回到注册页面

如果用户想使用已经注册的用户名来登

录,可以通过单击“登录”超链接转到登录页面进行登录。

当用户在登录页面正确输入在数据库中已经存在的用户名和密码时,

就可以

成功登录了。

在用户登录页面也拥有和用户注册页面类似的客户端验证机制。

就是说,

只有当用户名和密码都输入时,

系统才会向服务器端负责登录的

Action

提交信息。通过验证用户名和密码都正确,系统才允许登录。

系统总体结构

本系统的注册系统和登录系统是相互独立的,

但可以通过使用注册和登录系

统的相应超链接导航到另一个系统中。每一个系统分别由一个处理业务逻辑的

Action

DAO

层代码和若干个

JSP

页面组成。其中注册系统的

Action

RegisterAction

类,

另外还有一个用于显示用户注册页面的

register.jsp

文件

result.jsp

Action

LoginAction

类,

另外还有一个

login.jsp

文件和一个表示用户已经成功登录的

success.jsp

文件

3

现系统的基础类

在这一部分内容中将实现在注册登录系统中使用的一些重要的类,

如用于 ***

作数据库的

UserDAO

接口及其实现类。

这些类在整个系统中都起着举足轻重的作

用。

3.1

实现访问数据库的

UserDAO

UserDAO

实际上是一个接口,

由于注册系统和登录系统都需要访问和 *** 作数

据库,

因此,

将这些功能都封装在

UserDAO

接口中,

然后

UserDAOImpl

类对该接

口进行实现,这样,在

LoginAction

类和

RegisterAction

类的类体中添加

UserDAO

类型的属性,这两个

Action

就都可以访问和 *** 作数据库了。

UserDAO

接口及其实现类有以下功能:

通过

HibernateTemplate

对数据库进行连接和 *** 作

对数据库进行增删查改 *** 作。

执行

hql

UserDAO接口和UserDAOImpl

类的实现代码请查看UserDAO.java和UserDAOImpl.java文件。

实现MD5加密(选做)

本系统保存在数据库中的密码是通过

MD5

算法加密的。

JDK

中提供了实现

MD5

算法的类。

通过

java.security.MessageDigest

类的

getInstance

方法可以

获得支持

MD5

算法的

MessageDigest

对象实例。关于

MD5

加密,详见关于

MD5

加密

.doc

文档。

由于被

MD5

算法加密后的字符串中可能含有非可视的字符,

这些字符可能无

法保存在数据库中,因此,需要将被加密后的字符串再次使用

Base64

格式进行

编码。实现

MD5

加密的完整代码见

Encrypter.java

6

4

实现注册系统

在这个系统中,有一个处理用户提交的注册信息的

RegisterAction

类,除

此之外,还有一个

register.jsp

,这个页面负责显示注册页面。当

Register

处理完注册信息后,

如果注册成功,

会转向

result.jsp

页面,

如果注册不成功,

则直接返回

register.jsp,

可以重新注册。

1.

实现注册

RegisterAction

RegisterAction

类负责处理用户提交的注册信息。如果注册信息正确,就

user

表中添加一条记录,否则,会通过消息对话框显示出现消息。

在开始处理用户注册信息之前,

需要先在

RegisterAction

类中添加

userDAO

属性,这样通过该属性就可以对数据库进行 *** 作。然后向

user

表中插入记录之

前,

需要先判断一下用户输入的用户名或者密码是否有效,

如果用户名和密码输

入都合法,

就调用

userDAO

属性的

save

方法向

user

表中根据用户输入的信息插

入一条记录。如果无法成功插入记录,说明该用户名在

user

表中已经存在了。

为了更稳妥,

我们可以先使用

select

语句来查询用户名是否存在,

然后再向

user

表中插入记录。

RegisterAction

类的完整代码见

RegisterAction.java

2.

实现注册系统的主页面

Register.jsp

页面是显示了用户输入注册信息的页面。

register.jsp

使用

<form>

向Register类提交注册信息。

register.jsp页面的代码见

register.jsp

3.

实现结果

JSP页面

在Register类处理完注册信息后,如果注册成功,就会转向到result.jsp页面。

这个页面显示了注册成功的结果,并且可以直接通过超链,转向到登录页面login.jsp


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7982495.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存