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、事务
原始的事务:编程式事务
框架下的事务:声明式事务
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>
四、报错
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>
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
