spring,springmvc,mybatis框架实现用户修改密码功能,用ajax来提交表单数据

1、什么是ajax?

     ajax是一种无需加载整个网页的情况下,能进行局部刷新的技术。

 

2、下面是使用spring,springmvc,mybatis框架完成修改密码功能。

项目工程目录如下:

spring,springmvc,mybatis框架实现用户修改密码功能,用ajax来提交表单数据_第1张图片

pom.xml文件:












org.springframework



spring-webmvc



4.3.9.RELEASE














org.springframework



spring-jdbc



4.3.9.RELEASE















junit



junit



4.12
















org.mybatis



mybatis



3.4.6















org.mybatis



mybatis-spring



1.3.2













mysql



mysql-connector-java



5.1.6













commons-dbcp



commons-dbcp



1.4














com.fasterxml.jackson.core



jackson-databind



2.9.7









配置web.xml:




springmvc

org.springframework.web.servlet.DispatcherServlet



contextConfigLocation

classpath:config/*.xml



1





springmvc

*.do





CharacterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter



encoding

UTF-8







CharacterEncodingFilter

/





MyFilter

MyFilter

com.hbust.mystore.filter.MyFilter





MyFilter

/web/*



配置config下的xml文件: 

1)springdao.xml:

   



























































 

2)springmvc.xml:    


    
    
        
    
        
    
    
     
     
    
        
    
    
    
        
        
        
        
        
    
        
    
  
     
     
             
               
               
              
                
                
                
                
              
               
      
   

  3)springservice.xml:

   





3、用jquery来实现ajax来提交表单数据,下面要实现的功能是修改用户密码。

jquery包:

 

代码如下:

  1)Html代码:

更改密码

输入旧密码:
输入新密码:
确认新密码:
用jquery来实现ajax: $("#save_password").click(function(){ var url="../user/handle_change_password.do";//交给控制器处理的url var old_password=$("#old_password").val(); var new_password=$("#new_password").val(); var data="old_password="+old_password+"&new_password="+ new_password; //url,data,type,dataType,success,ajax请求的五要素 $.ajax({ "url":url, "data":data, "type":"post", "dataType":"json", "success":function(json){ if(json.state==200){ alert("密码修改成功!") }if(json.state==402){ alert("密码修改失败!") } else if(json.state==403){ alert("密码修改失败!") }else if(json.state==502){ alert("严重错误!"+json.message) } else{ alert("出现未知错误!") } }) });

 2)、控制器UserController类

@RequestMapping("/handle_change_password.do")

@ResponseBody

public ResponseResult handle_change_password(

// @RequestParam表示从表单传过来的参数,值要与ajax表单的data保持一致

@RequestParam("old_password")String old_password,

@RequestParam("new_password")String new_password,

HttpSession session

){

System.out.println("开始执行修改密码逻辑..."+old_password+","+new_password);

//从session中获取id

Integer uid=getFromUidBySession(session);

userService.changePasswordById(uid, old_password, new_password);

//调用服务层来提供改密服务

System.out.println("密码修改成功!");

return new ResponseResult();

}

3)服务层的UserServiceImpl类,实现接口IuserService里的抽象方法

@Service("userService")

public class UserServiceImpl implements IUserService{

public void changePasswordById(

Integer uid,String old_password,String new_password

)throws UserNotFoundException,

PasswordNotMatchException,

UpdateDataException{

//1、根据用户id查询到用户的信息

User user=getUserById(uid);

//2、将用户输入的密码加密

if(user!=null){

String salt=user.getSalt();//获取加密前的盐值

String md5password=getEncrptedPassword(old_password,salt);

//3、将用户输入加密后的密码与数据库的密码进行匹配

if(user.getPassword.equals(md5password)){

//4、匹配成功,则修改密码,匹配失败,则抛出异常

//System.out.println("原密码正确...")

String md5newpassword=getEncrptedPassword(new_password,salt);

changePassword(uid,md5newpassword);//调用修改密码方法

}else{

throw new PasswordNotMatchException("原密码不正确!");

}

}else{

throw new UserNotFoundException("用户名未找到!")

}

}

private void changePassword(Integer uid,

String md5newpassword) throws UpdateDataException{

//调用持久层,实现密码修改

System.out.println("newpassword:"+md5newpassword);

Integer row=userMapper.changePassword(md5newpassword,uid);

//由于是根据用户id来进行修改的,正确操作下,受影响的行数应该为1

if(row!=1){

throw new UpdateDataException("修改密码时发现未知错误!请联系管理员!");

}

}

}

 4)调用dao层的userMapper

//用@Param("password")来获取到userService传过来的参数,不能少,否则接收不了参数

Integer changePassword(

@Param("password") String password

,@Param("id") Integer uid);

对应的userMapper.xml文件如下:





UPDATE store_user

SET



password=#{password}



WHERE id=#{id}



实现效果如下:

spring,springmvc,mybatis框架实现用户修改密码功能,用ajax来提交表单数据_第2张图片

spring,springmvc,mybatis框架实现用户修改密码功能,用ajax来提交表单数据_第3张图片

 

spring,springmvc,mybatis框架实现用户修改密码功能,用ajax来提交表单数据_第4张图片

 

你可能感兴趣的:(学习笔记)