06用户注册

本文详细阐述了用户通过Spring Boot框架进行注册的过程,包括前端表单验证、AJAX异步提交、数据库操作(用户名唯一性检查与事务处理),并展示了如何使用声明式事务管理。遇到的常见问题及解决方案也一并提及。
摘要由CSDN通过智能技术生成

用户注册

1、业务逻辑

1、点击login.jsp页面中的”注册按钮“——》跳转到用户注册的jsp页面(用view-controller完成)

2、register.jsp页面:包括:用户名、密码、邮箱——》表单数据传递给后端

3、user/register:

  • 判断用户名是否重复,如果重复返回json数据

  • 首先为用户生成唯一的UUID编码,

  • 为用户生成唯一的根目录ID

  • 添加用户信息到user表

  • 添加根目录到dir表

  • 将上述的插入操作添加到事务。

4、显示注册成功的jsp页面,提供一个返回登录页的按钮。

2、步骤

1、用view-controller完成到用户注册页面的跳转

<mvc:view-controller path="/file/fileinfo" view-name="fileinfo"></mvc:view-controller>

2、在创建好register.jsp页面之后,需要在拦截器中对所有的register相关资源放行。

<mvc:exclude-mapping path="/user/*register*" />

3、在register.jsp页面中写好注册的表单,以ajax方式在前后端传输数据,将填写的注册信息发送给后端user/register。

<script type="text/javascript">
    $(function () {
        $("#register_btn").click(function () {
            var loginAct=$.trim($("#loginAct").val());
            var loginPwd = $.trim($("#loginPwd").val());
            var loginPwdAgain = $.trim($("#loginPwdAgain").val());
            var email = $.trim($("#email").val());
            if(loginAct==""){
                $("#msg").html("请输入账号!");
                return false;
            }
            //如果账号密码有空,则需要强制终止该方法
            if(loginPwd==""){
                $("#msg").html("请输入密码!");
                return false;
            }
            if(loginPwd.length<6||loginPwd.length>16){
                $("#msg").html("密码长度在6~16之间!");
                return false;
            }
            if(loginPwdAgain==""){
                $("#msg").html("请再次输入密码!");
                return false;
            }
            if (loginPwd!=loginPwdAgain) {
                $("#msg").html("两次输入的密码不一致!");
                //如果账号密码有空,则需要强制终止该方法
                return false;
            }
            $.ajax({
                url:"user/register",
                data:{
                    "loginAct":loginAct,
                    "loginPwd":loginPwd,
                    "email":email,
                },
                type:"post",
                dataType:"json",
                success:function (resp) {
                    //   alert(resp.msg);
                    //跳转到初始页
                    if(resp.success){
                        window.location.href="user/registerSuccess";
                    }else{
                        $("#msg").html(resp.msg);
                    }
                }
            })
        })
    })
</script>

4、user/register调用UerService中的/register方法,主要完成如下功能:

  • 调用UserDao中的selectByloginAct,判断用户名是否重复,重复则抛出异常,前端显示”该用户名已被注册“
  • 为用户生成唯一的UUID编码
  • 为用户生成唯一的根目录ID
  • 添加用户信息到user表
  • 添加根目录信息到dir表
  • 将上述的插入操作开启事务。

5、事务

原始的事务:编程式事务

image-20210807125341869

框架下的事务:声明式事务

1、声明事务管理器

<!--声明事务管理器-->
<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

2、配置AOP

配置切入点表达式:指定哪些包中的类要使用事务
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern)
	- modifiers-pattern:访问权限类型
	- ret-type-pattern:方法的返回值类型
	- declaring-type-pattern 包名类名
	- name-pattern(param-pattern)方法名(参数类型和参数个数)
	- throws-pattern 抛出异常类型
	- ?表示可选部分
    <!--配置aop-->
    <aop:config>
        <aop:pointcut id="servicePt" expression="execution(* *..*ServiceImpl.*(..))"/>
        <aop:advisor advice-ref="myAdive" pointcut-ref="servicePt"/>
    </aop:config>

3、声明属性

<!--配置事务通知:声明业务方法的事务属性:(隔离级别、传播行为、超时时间)-->
<tx:advice id="myAdive" transaction-manager="dataSourceTransactionManager">
    <tx:attributes>
        <tx:method name="register" propagation="REQUIRES_NEW" rollback-for="java.lang.Exception"/>
    </tx:attributes>
</tx:advice>
image-20210807141356919

四、报错

1、ajax请求可以进入java后台,但是获取不到java后台返回的数据

原因:

如果input type为submit时,你每次在提交的时候会发现所有输入框中数字全部清空了,说明页面重新刷新了,那么问题来了,ajax并不会导致页面刷新啊!真正导致页面刷新的是这个type为submit的input标签,强制要求页面刷新,因为页面刷新了,那么ajax返回的信息来到了一个完全陌生的页面,自然返回的是失败啊。 (参考https://blog.csdn.net/qq_37591637/article/details/88751759)

<button  id="register_btn" type="submit" class="btn btn-primary btn-block">注册</button>

解决方法:

将type修改为button类型

<button  id="register_btn" type="button" class="btn btn-primary btn-block">注册</button>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值