06用户注册

用户注册

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: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>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部