java - 从用户注册中检查数据库中的唯一值约束

标签 java jsp spring-mvc hibernate-annotations

我需要检查用户名的可用性,这意味着每个用户名必须是唯一的,当已经存在相同的用户名时,我需要显示一条消息“此用户名已在使用中”。它可以是自动的(生成查询,然后显示消息)或创建一个按钮来验证可用性,然后显示消息。我对这个简单的程序不太清楚。在这种情况下我需要做什么? 源码如下:

人员类别

@Entity
@Table(name="person")
public class Person {

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    @Column(name="id")
    private int id;

    @Column(name="firtsname")
    private String first_name;

    @Column(name="lastname")
    private String last_name;

    @Column(name="username", unique=true)
    private String user_name;

    @Column(name="password")
    private String password;

    // Getters and Setters
}

PersonDao>>PersonDaoImpl

@Repository("personDao")
public class PersonDaoImpl implements PersonDao {

@Autowired
private SessionFactory sessionFactory;

@Override
public void createPerson(Person person) {
    sessionFactory.getCurrentSession().saveOrUpdate(person);

}

@Override
public Person updatePerson(int id) {
    return (Person) sessionFactory.getCurrentSession().get(Person.class, id);

}

@Override
public void deletePerson(int id) {
    sessionFactory.getCurrentSession().createQuery("DELETE FROM Person WHERE id="+id).executeUpdate();

}

@Override
@SuppressWarnings("unchecked")
public List<Person> listAllPersons() {
    return (List<Person>) sessionFactory.getCurrentSession().createCriteria(Person.class).list();

}

}

注册表(registration.jsp):

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form:form method="POST" action="/userform/saveUser.html">
    <p>
        <form:input type="hidden" readonly="true" path="id" />
    </p>
    <p>
        <form:label path="first_name" >First name:</form:label>
        <form:input path="first_name" />
    </p>
    <p>
        <form:label path="last_name">Last name:</form:label>
        <form:input path="last_name" />
    </p>
    <p>
        <form:label path="user_name">Username:</form:label>
        <form:input path="user_name" />
    </p>
    <p>
        <form:label path="password">Password:</form:label>
        <form:input path="password" />
    </p>
    <p>
        <button type="reset" value="Reset">Reset</button>
        <button type="submit" value="Save">Save</button> 
    </p>

</form:form>
</body>
</html>

非常感谢!

最佳答案

尝试插入并处理失败。任何其他方法都容易受到时序窗口问题的影响。

关于java - 从用户注册中检查数据库中的唯一值约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21298561/

相关文章:

spring-mvc - spring-mvc中如何将多段URL映射到一个PathVariable?

java - Spring MVC webapp链接到excel文档并重命名

java - 迁移到 Spring Security 4 时出现访问被拒绝页面

java - 下载sqlite数据库时遇到问题

java - 使用Gson序列化公开字段时如何更改字段名称?

java - 从文本文件读取时出错

java - 从支持 bean 中关闭 JSP 弹出窗口?

java - 在 java/JSP 中迭代 Map

java - OpenGL 顶点数组缓冲区

java - Spring 中的谷歌地图 JSP