注册和登录功能的一些问题

表单赋值的问题
当请求request中携带了用户提交的数据时,需要将这些数据封装到JavaBean中,像之前写法需要一一赋值,倘若request携带了非常多的表单数据,此时的赋值操作就显得比较繁琐了,那有没有好的解决方法呢?这里可以使用apache的commons-beanutils搞定这个问题。

使用commons-beanutils解决表单赋值的问题。
首先需要下载两个jar包分别是:
commons-beanutils.jar:http://pan.baidu.com/s/1slzAndb
commons-logging.jar: http://pan.baidu.com/s/1eSNDiQA
下载完成后将其拷贝到项目的lib目录下。
修改RegistServlet中赋值操作如下:

  //获取用户提交的表单数据,并封装到User中
    User u = new User();
    //使用commons-beanutils将表单数据封装到User对象中
    try {
        //因为User对象中的brithday是Date类型,所以先注册一个日期转换器
        ConvertUtils.register(new DateLocaleConverter(), Date.class);
        //将表单数据封装到User对象中
        BeanUtils.populate(u, request.getParameterMap());
    } catch (IllegalAccessException e1) {
        e1.printStackTrace();
    } catch (InvocationTargetException e1) {
        e1.printStackTrace();
    }

修改LoginServlet中赋值操作如下:

//获取用户提交的表单数据
User user = new User();
try {
    BeanUtils.populate(user, request.getParameterMap());
} catch (IllegalAccessException e1) {
    // TODO Auto-generated catch block
} catch (InvocationTargetException e1) {
    e1.printStackTrace();
}

上面的BeanUtils.populate(user, request.getParameterMap())方法会遍历request.getParameterMap()的key,key与user中的属性一致的话,会将该属性赋值,所以要使用该方法的前提就是表单中的name值和JavaBean中的属性值名称要一致。

用户名不能重复的问题
在实际应用当中,用户名是不能重复的,即要保证用户名在数据库中的唯一性,要解决这个问题,需要在用户注册时先根据填写的用户名去数据库中查询,如果查询出结果的话,就说明该用户名已经被注册了。

主要代码如下,修改RegistServlet

//使用apache commons-beanutil解决赋值操作
try {
    //因为User中的birthday是Date类型,所以需要先注册一个日期转换器
    ConvertUtils.register(new DateLocaleConverter(), Date.class);
    //User类中的属性名需要跟jsp表单中的name保持一致
    BeanUtils.populate(u, request.getParameterMap());
} catch (IllegalAccessException e1) {
    e1.printStackTrace();
} catch (InvocationTargetException e1) {
    e1.printStackTrace();
}

//调用业务逻辑
UserService us = new UserServiceImpl();
try {
    //判断用户名是否重复
    User result = us.findUserByName(u);

    //如果不等于null则说明用户名重复
    if(result != null){
        request.setAttribute("msg", "用户名重复");
        request.getRequestDispatcher("/regist.jsp").forward(request, response);
    }else{
        //用户名不重复时,执行添加操作
        us.addUser(u);
        //分发转向
        response.getWriter().write("注册成功!1秒后跳转到主页");
        response.setHeader("refresh", "1;url=/login.jsp");
    }

} catch (Exception e) {

    e.printStackTrace();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现JavaWeb的登录注册功能,可以按照以下步骤进行: 1. 创建数据库表格,用于存储用户注册的信息,如用户名、密码等。 2. 在JavaWeb项目中创建登录注册页面,可以使用HTML和CSS进行页面设计。 3. 在JavaWeb项目中创建一个Servlet,用于处理用户的登录注册请求。可以使用JDBC连接数据库,从而实现对用户注册信息的插入和查询操作。 4. 在Servlet中处理用户登录注册请求时,需要对用户输入的用户名和密码进行验证,验证成功后再执行登录注册操作。 5. 在登录成功后,可以将用户信息保存在Session中,方便在其他页面进行身份验证。 6. 在JavaWeb项目中,还可以使用Filter实现用户身份验证、权限控制等功能。 通过以上步骤的实现,就可以完成JavaWeb的登录注册功能。 ### 回答2: 要实现Java Web的登录注册功能,可以按照以下步骤进行。 首先,需要创建一个数据库来存储用户的登录注册信息,可以使用MySQL或者其他关系型数据库。在数据库中创建一个用户表,包含用户名、密码等字段。 接下来,需要创建一个Java类来处理用户的登录注册请求。可以使用Servlet或者Spring MVC框架。在该类中,可以实现以下功能: 1. 注册功能:接收用户提交的注册信息,包括用户名和密码。在数据库中查询是否已存在该用户名,如果不存在,则将用户信息插入数据库中。如果存在重名,则返回注册失败的提示信息。 2. 登录功能:接收用户提交的登录信息,包括用户名和密码。在数据库中查询该用户名是否存在,并验证密码是否正确。如果验证通过,则表示登录成功;否则,返回登录失败的提示信息。 在前端页面上,可以使用HTML、CSS和JavaScript实现注册登录页面。通过表单提交用户输入的信息,并将其发送给后端处理。 在注册登录过程中,要注意对用户输入的数据进行校验和过滤,防止SQL注入、XSS攻击等安全问题。可以使用正则表达式或者一些常见的安全库来进行过滤和验证。 此外,还可以加入一些其他功能,例如密码加密、记住登录状态、验证码等,以增加系统的安全性和用户体验。 最后,可以进行测试和优化。通过模拟用户的注册登录过程,检查功能是否正常,同时分析性能并进行调优,以提高系统的稳定性和响应速度。 以上就是实现Java Web登录注册功能的基本步骤,可以根据具体需求和技术栈进行调整和扩展。 ### 回答3: 要实现JavaWeb的登录注册功能,可以按照以下步骤进行。 首先,在后端创建一个User类,包含用户的属性如用户名、密码等,以及相应的getter和setter方法。 接着,创建一个数据库表来存储用户信息。可以用MySQL或其他数据库管理系统创建一个名为"user"的表,包含用户名和密码字段。 在后端创建一个UserDao类,包含对用户信息的操作方法,如添加用户、查询用户等。可以使用JDBC技术实现与数据库的交互。 创建一个RegisterServlet类,处理用户的注册请求。在该类的doPost方法中,获取用户输入的用户名和密码,然后通过UserDao的方法将用户信息添加到数据库中。 创建一个LoginServlet类,处理用户的登录请求。在该类的doPost方法中,获取用户输入的用户名和密码,然后通过UserDao的方法查询数据库中是否存在该用户。若存在,则登录成功,跳转到登录成功的页面;若不存在,则登录失败,返回登录页面并给出提示。 在前端创建一个注册页面,包含输入用户名和密码的表单以及一个提交按钮。当用户填写完毕后,点击提交按钮将表单数据发送到RegisterServlet进行注册。 在前端创建一个登录页面,包含输入用户名和密码的表单以及一个提交按钮。当用户填写完毕后,点击提交按钮将表单数据发送到LoginServlet进行登录。 最后,将注册页面和登录页面部署到服务器上,用户可以通过浏览器访问这两个页面进行注册登录操作。 通过以上步骤,就可以实现JavaWeb的登录注册功能。当用户填写注册信息并提交后,会将用户信息存储到数据库中;当用户填写登录信息并提交后,会与数据库中的信息进行比对,判断登录是否成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值