Heim >Java >javaLernprogramm >So ändern Sie Springboot-Benutzerdaten

So ändern Sie Springboot-Benutzerdaten

王林
王林nach vorne
2023-05-19 17:16:571724Durchsuche

    Passwort ändern

    1 Benutzer-Änderungs-Passwort-Persistenzschicht

    1.1 Planen Sie die SQL-Anweisungen, die ausgeführt werden müssen

    Die SQL-Anweisungen, die ausgeführt werden müssen, wenn der Benutzer das Passwort ändert, sind ungefähr:

    UPDATE t_user SET password=?, modified_user=?, modified_time=? WHERE uid=?

    Bevor Sie die Passwortänderung durchführen, sollten Sie außerdem prüfen, ob die Benutzerdaten vorhanden sind, ob die Benutzerdaten als „gelöscht“ markiert sind und ob das ursprüngliche Passwort korrekt ist. Diese Überprüfungen können durch die Abfrage der Benutzerdaten unterstützt werden:

    SELECT * FROM t_user WHERE uid=?
    1.2 Schnittstellen und abstrakte Methoden

    in Die UserMapper-Schnittstelle fügt die abstrakte Methode updatePasswordByUid(Integer uid, String Password, String ModifiedUser, Date ModifiedTime) hinzu.

    Bei der Verwendung von Annotationen zur Vereinfachung der XML-Konfiguration wird die Annotation @Param zum Benennen der Parameter verwendet. Nachdem die Parameter benannt wurden, können die Parameterwerte basierend auf den Namen abgerufen und die Parameter korrekt an übergeben werden SQL-Anweisung. Der Parametername in der Annotation @Param("Parametername") muss mit dem Parameternamen von #{Parametername} in der SQL-Anweisung übereinstimmen.

    /**
     * 根据uid更新用户的密码
     * @param uid 用户的id
     * @param password 新密码
     * @param modifiedUser 最后修改执行人
     * @param modifiedTime 最后修改时间
     * @return 受影响的行数
     */
    Integer updatePasswordByUid(
    		@Param("uid") Integer uid, 
    		@Param("password") String password, 
    		@Param("modifiedUser") String modifiedUser, 
    		@Param("modifiedTime") Date modifiedTime);
    
    /**
     * 根据用户id查询用户数据
     * @param uid 用户id
     * @return 匹配的用户数据,如果没有匹配的用户数据,则返回null
     */
    User findByUid(Integer uid);
    1.3 Konfigurieren Sie die SQL-Zuordnung

    1. Konfigurieren Sie die Zuordnung der abstrakten Methoden updatePasswordByUid() und findByUid() in UserMapper.xml.

    <!-- 根据uid更新用户的密码:
    	 Integer updatePasswordByUid(
    		@Param("uid") Integer uid, 
    		@Param("password") String password, 
    		@Param("modifiedUser") String modifiedUser, 
    		@Param("modifiedTime") Date modifiedTime) -->
    <update id="updatePasswordByUid">
    	UPDATE
    		t_user 
    	SET
    		password = #{password},
    		modified_user = #{modifiedUser},
    		modified_time = #{modifiedTime} 
    	WHERE
    		uid = #{uid}
    </update>
    
    <!-- 根据用户id查询用户数据:User findByUid(Integer uid) -->
    <select id="findByUid" resultMap="UserEntityMap">
    	SELECT
    		*
    	FROM
    		t_user
    	WHERE
    		uid = #{uid}
    </select>

    2. Schreiben und führen Sie Unit-Tests in UserMapperTests aus.

    @Test
    public void updatePasswordByUid() {
    	Integer uid = 7;
    	String password = "123456";
    	String modifiedUser = "超级管理员";
    	Date modifiedTime = new Date();
    	Integer rows = userMapper.updatePasswordByUid(uid, password, modifiedUser, modifiedTime);
    	System.out.println("rows=" + rows);
    }
    
    @Test
    public void findByUid() {
    	Integer uid = 7;
    	User result = userMapper.findByUid(uid);
    	System.out.println(result);
    }

    2 User-Change Password-Business Layer

    2.1 Planning Exception

    Bevor Sie das Passwort ändern, müssen Sie zunächst prüfen, ob die Benutzerdaten vorhanden und nicht als „gelöscht“ markiert sind. Wenn die Prüfung fehlschlägt, sollte eine UserNotFoundException ausgelöst werden.

    2. Wenn der Benutzer das Passwort ändert, schlägt die Änderung möglicherweise fehl, da das ursprünglich eingegebene Passwort falsch ist und eine PasswordNotMatchException ausgelöst werden sollte.

    Wenn die Anzahl der betroffenen Zeilen beim Ändern des Passworts vom erwarteten Wert abweicht, sollte eine UpdateException geworfen werden.

    4. Erstellen Sie die Ausnahmeklasse com.cy.store.service.ex.UpdateException, die von der ServiceException-Klasse erbt.

    /** 更新数据的异常 */
    public class UpdateException extends ServiceException {
    	// Override Methods...
    }
    2.2 Schnittstelle und abstrakte Methode

    Fügen Sie die abstrakte Methode „changePassword(Integer uid, String username, String oldPassword, String newPassword)“ in IUserService hinzu.

    /**
     * 修改密码
     * @param uid 当前登录的用户id
     * @param username 用户名
     * @param oldPassword 原密码
     * @param newPassword 新密码
     */
    public void changePassword(Integer uid, String username, String oldPassword, String newPassword);
    2.3 Implementieren Sie die abstrakte Methode

    1. Implementieren Sie die abstrakte Methode changePassword() in der Klasse UserServiceImpl.

    public void changePassword(Integer uid, String username, String oldPassword, String newPassword) {
    	// 调用userMapper的findByUid()方法,根据参数uid查询用户数据
    	// 检查查询结果是否为null
    	// 是:抛出UserNotFoundException异常
    
    	// 检查查询结果中的isDelete是否为1
    	// 是:抛出UserNotFoundException异常
    
    	// 从查询结果中取出盐值
    	// 将参数oldPassword结合盐值加密,得到oldMd5Password
    	// 判断查询结果中的password与oldMd5Password是否不一致
    	// 是:抛出PasswordNotMatchException异常
    
    	// 将参数newPassword结合盐值加密,得到newMd5Password
    	// 创建当前时间对象
    	// 调用userMapper的updatePasswordByUid()更新密码,并获取返回值
    	// 判断以上返回的受影响行数是否不为1
    	// 是:抛了UpdateException异常
    }

    2. Der spezifische Code der changePassword()-Methode.

    Die Methoden equal und contentEquals in String können verwendet werden, um zu vergleichen, ob der Inhalt von String-Objekten gleich ist.

    @Override
    public void changePassword(Integer uid, String username, String oldPassword, String newPassword) {
    	// 调用userMapper的findByUid()方法,根据参数uid查询用户数据
    	User result = userMapper.findByUid(uid);
    	// 检查查询结果是否为null
    	if (result == null) {
    		// 是:抛出UserNotFoundException异常
    		throw new UserNotFoundException("用户数据不存在");
    	}
    	
    	// 检查查询结果中的isDelete是否为1
    	if (result.getIsDelete().equals(1)) {
    		// 是:抛出UserNotFoundException异常
    		throw new UserNotFoundException("用户数据不存在");
    	}
    	
    	// 从查询结果中取出盐值
    	String salt = result.getSalt();
    	// 将参数oldPassword结合盐值加密,得到oldMd5Password
    	String oldMd5Password = getMd5Password(oldPassword, salt);
    	// 判断查询结果中的password与oldMd5Password是否不一致
    	if (!result.getPassword().contentEquals(oldMd5Password)) {
    		// 是:抛出PasswordNotMatchException异常
    		throw new PasswordNotMatchException("原密码错误");
    	}
    	
    	// 将参数newPassword结合盐值加密,得到newMd5Password
    	String newMd5Password = getMd5Password(newPassword, salt);
    	// 创建当前时间对象
    	Date now = new Date();
    	// 调用userMapper的updatePasswordByUid()更新密码,并获取返回值
    	Integer rows = userMapper.updatePasswordByUid(uid, newMd5Password, username, now);
    	// 判断以上返回的受影响行数是否不为1
    	if (rows != 1) {
    		// 是:抛出UpdateException异常
    		throw new UpdateException("更新用户数据时出现未知错误,请联系系统管理员");
    	}
    }

    3. Schreiben und führen Sie Unit-Tests in UserServiceTests aus.

    @Test
    public void changePassword() {
        try {
            Integer uid = 5;
            String username = "lower";
            String oldPassword = "123456";
            String newPassword = "888888";
            userService.changePassword(uid, username, oldPassword, newPassword);
            System.out.println("密码修改成功!");
        } catch (ServiceException e) {
            System.out.println("密码修改失败!" + e.getClass().getSimpleName());
            System.out.println(e.getMessage());
        }
    }

    3 User-Change Password-Controller

    3.1 Behandlung von Ausnahmen

    Eine neue UpdateException-Ausnahme wurde im Geschäft der Benutzeränderung von Passwörtern ausgelöst, die in der BaseController-Klasse behandelt werden muss.

    @ExceptionHandler(ServiceException.class)
    public JsonResult<Void> handleException(Throwable e) {
    	JsonResult<Void> result = new JsonResult<Void>(e);
    	if (e instanceof UsernameDuplicateException) {
    		result.setState(4000);
    	} else if (e instanceof UserNotFoundException) {
    		result.setState(4001);
    	} else if (e instanceof PasswordNotMatchException) {
    		result.setState(4002);
    	} else if (e instanceof InsertException) {
    		result.setState(5000);
    	} else if (e instanceof UpdateException) {
    		result.setState(5001);
    	}
    	return result;
    }
    3.2 Design-Anfrage

    Entwerfen Sie die vom Benutzer übermittelte Anfrage und entwerfen Sie die Art und Weise, wie darauf reagiert werden soll.

    Anfragepfad: /users/change_password
    Anfrageparameter: String oldPassword, String newPassword, HttpSession session
    Anfragetyp: POST
    Antwortergebnis: JsonResult903bf37051cf83cbd9686768ac0189ae

    3.3 Verarbeitungsanfragen

    1. Fügen Sie die UserController-Klasse hinzu Die Methode „changePassword(String oldPassword, String newPassword, HttpSession session)“, die die Anfrage verarbeitet.

    @RequestMapping("change_password")
    public JsonResult<Void> changePassword(String oldPassword, String newPassword, HttpSession session) {
    	// 调用session.getAttribute("")获取uid和username
    	// 调用业务对象执行修改密码
    	// 返回成功
    	
    	return null;
    }

    2. Implementieren Sie den Code zum Ändern der Passwortmethode im UserController-Controller.

    @RequestMapping("change_password")
    public JsonResult<Void> changePassword(String oldPassword, String newPassword, HttpSession session) {
    	// 调用session.getAttribute("")获取uid和username
    	Integer uid = getUidFromSession(session);
    	String username = getUsernameFromSession(session);
    	// 调用业务对象执行修改密码
    	iUserService.changePassword(uid, username, oldPassword, newPassword);
    	// 返回成功
    	return new JsonResult<Void>(OK);
    }

    3. Melden Sie sich zuerst an, um das Projekt zu starten, und besuchen Sie dann http://localhost:8080/users/change_password?oldPassword=xx&newPassword=xx zum Testen.

    4 Benutzerseite zum Ändern des Passworts

    1 Fügen Sie am Ende des Body-Tags auf der Seite „password.html“ ein Skript-Tag zum Schreiben von JavaScript-Programmen hinzu.

    <script type="text/javascript">
        $("#btn-change-password").click(function() {
            $.ajax({
                url: "/users/change_password",
                type: "POST",
                data: $("#form-change-password").serialize(),
                dataType: "json",
                success: function(json) {
                    if (json.state == 200) {
                        alert("修改成功!");
                    } else {
                        alert("修改失败!" + json.message);
                    }
                }
            });
    	});
    </script>

    2. Melden Sie sich zuerst an, um das Projekt zu starten, besuchen Sie dann die Seite http://localhost:8080/web/password.html und ändern Sie das Passwort.

    Frage: Wenn die Daten nicht normal in den Hintergrund übertragen werden können, starten Sie das System und die IDEA-Entwicklungstools neu. Anschließend können Sie nach der Anmeldung das Passwort ändern.

    3. Problem: Beim Bedienen der Front-End-Seite ruft der Benutzer die Seite zum Ändern des Passworts auf und bleibt lange Zeit auf der aktuellen Seite, ohne irgendwelche Vorgänge auszuführen, was dazu führt, dass die Anmeldeinformationen ablaufen. Wenn Sie zu diesem Zeitpunkt auf die Schaltfläche „Ändern“ klicken, wird weiterhin eine Anfrage an /users/change_password gesendet und vom Interceptor zur Anmeldeseite weitergeleitet. Da der gesamte Prozess asynchron von der Funktion $.ajax() abgewickelt wird, wird die Umleitung auch von einer asynchronen Aufgabe abgeschlossen. Wenn auf der Seite keine Leistung vorliegt, passiert „nichts, wenn auf die Schaltfläche geklickt wird, nachdem die Anmeldeinformationen des Benutzers abgelaufen sind.“ wird erscheinen.

    Lösung: Sie können die Konfiguration des Fehlerattributs in $.ajax() der Seite „password.html“ hinzufügen. Der Wert dieses Attributs ist eine Rückruffunktion. Diese Funktion wird aufgerufen, wenn der Server einen Statuscode zurückgibt, der nicht normal reagiert, z. B. 302, 400, 404, 405, 500 usw.

    error: function (xhr) {
        alert("您的登录信息已经过期,请重新登录!HTTP响应码:" + xhr.status);
        location.href = "login.html";
    }

    Persönliche Daten

    1 Benutzer-persönliche Daten-Persistenzschicht

    1.1 Planen Sie die SQL-Anweisungen, die ausgeführt werden müssen

    1. Führen Sie die SQL-Anweisung aus, um die persönlichen Daten des Benutzers grob zu ändern:

    UPDATE t_user SET phone=?, email=?, gender=?, modified_user=?, modified_time=? WHERE uid=?

    Öffnen Sie die Seite wo der Benutzer die Daten ändert. Bisher sollten die Informationen des aktuell angemeldeten Benutzers zur Überprüfung auf der Seite angezeigt werden, bevor Datenänderungsvorgänge durchgeführt werden. Benutzerinformationen können angezeigt werden über:

    SELECT * FROM t_user WHERE uid=?

    Anweisungen:

    1 Diese Abfragefunktion wurde implementiert und muss nicht erneut entwickelt werden

    在进行用户资料修改前,还需要进行检查,判断用户数据是否存在、是否被标记为“已删除”,以上查询也可以用来实现这一操作。

    1.2 接口与抽象方法

    在UserMapper接口中添加updateInfoByUid(User user)方法。

    /**
     * 根据uid更新用户资料
     * @param user 封装了用户id和新个人资料的对象
     * @return 受影响的行数
     */
    Integer updateInfoByUid(User user);
    1.3 配置SQL映射

    1.在UserMapper.xml中配置Integer updateInfoByUid(User user)抽象方法的映射。

    <!-- 根据uid更新用户个人资料:Integer updateInfoByUid(User user) -->
    <update id="updateInfoByUid">
    	UPDATE
    		t_user 
    	SET
    		<if test="phone != null">phone = #{phone},</if>
    		<if test="email != null">email = #{email},</if>
    		<if test="gender != null">gender = #{gender},</if>
    		modified_user = #{modifiedUser},
    		modified_time = #{modifiedTime}
    	WHERE
    		uid = #{uid}
    </update>

    2.在UserMapperTests中编写并执行单元测试。

    @Test
    public void updateInfoByUid() {
        User user = new User();
        user.setUid(20);
        user.setPhone("17858802222");
        user.setEmail("admin@cy.com");
        user.setGender(1);
        user.setModifiedUser("系统管理员");
        user.setModifiedTime(new Date());
        Integer rows = userMapper.updateInfoByUid(user);
        System.out.println("rows=" + rows);
    }

    2 用户-个人资料-业务层

    2.1 规划异常

    1.关于用户修改个人资料是由两个功能组成的。

    • 打开页面时显示当前登录的用户的信息;

    • 点击修改按钮时更新用户的信息。

    2.关于打开页面时显示当前登录的用户的信息,可能会因为用户数据不存在、用户被标记为“已删除”而无法正确的显示页面,则抛出UserNotFoundException异常。

    3.关于点击修改按钮时更新用户的信息,在执行修改资料之前仍需再次检查用户数据是否存在、用户是否被标记为“已删除”,则可能抛出UserNotFoundException异常。在修改资料时,可能会发生UpdateException异常。

    2.2 接口与抽象方法

    在IUserService接口中添加两个抽象方法,分别对应以上两个功能。

    /**
     * 获取当前登录的用户的信息
     * @param uid 当前登录的用户的id
     * @return 当前登录的用户的信息
     */
    User getByUid(Integer uid);
    
    /**
     * 修改用户资料
     * @param uid 当前登录的用户的id
     * @param username 当前登录的用户名
     * @param user 用户的新的数据
     */
    void changeInfo(Integer uid, String username, User user);
    2.3 实现抽象方法

    1.在UserServiceImpl实现类中实现getByUid(Integer uid)和changeInfo(Integer uid, String username, User user)以上两个抽象方法。

    @Override
    public User getByUid(Integer uid) {
    	// 调用userMapper的findByUid()方法,根据参数uid查询用户数据
    	// 判断查询结果是否为null
    	// 是:抛出UserNotFoundException异常
    
    	// 判断查询结果中的isDelete是否为1
    	// 是:抛出UserNotFoundException异常
    
    	// 创建新的User对象
    	// 将以上查询结果中的username/phone/email/gender封装到新User对象中
    
    	// 返回新的User对象
    	return null;
    }
    
    @Override
    public void changeInfo(Integer uid, String username, User user) {
    	// 调用userMapper的findByUid()方法,根据参数uid查询用户数据
    	// 判断查询结果是否为null
    	// 是:抛出UserNotFoundException异常
    
    	// 判断查询结果中的isDelete是否为1
    	// 是:抛出UserNotFoundException异常
    
    	// 向参数user中补全数据:uid
    	// 向参数user中补全数据:modifiedUser(username)
    	// 向参数user中补全数据:modifiedTime(new Date())
    	// 调用userMapper的updateInfoByUid(User user)方法执行修改,并获取返回值
    	// 判断以上返回的受影响行数是否不为1
    	// 是:抛出UpdateException异常
    	
    }

    2.getByUid(Integer uid)和changeInfo(Integer uid, String username, User user)方法的具体代码实现。

    @Override
    public User getByUid(Integer uid) {
    	// 调用userMapper的findByUid()方法,根据参数uid查询用户数据
    	User result = userMapper.findByUid(uid);
    	// 判断查询结果是否为null
    	if (result == null) {
    		// 是:抛出UserNotFoundException异常
    		throw new UserNotFoundException("用户数据不存在");
    	}
     
    	// 判断查询结果中的isDelete是否为1
    	if (result.getIsDelete().equals(1)) {
    		// 是:抛出UserNotFoundException异常
    		throw new UserNotFoundException("用户数据不存在");
    	}
    
    	// 创建新的User对象
    	User user = new User();
    	// 将以上查询结果中的username/phone/email/gender封装到新User对象中
    	user.setUsername(result.getUsername());
    	user.setPhone(result.getPhone());
    	user.setEmail(result.getEmail());
    	user.setGender(result.getGender());
    	
    	// 返回新的User对象
    	return user;
    }
    
    @Override
    public void changeInfo(Integer uid, String username, User user) {
    	// 调用userMapper的findByUid()方法,根据参数uid查询用户数据
    	User result = userMapper.findByUid(uid);
    	// 判断查询结果是否为null
    	if (result == null) {
    		// 是:抛出UserNotFoundException异常
    		throw new UserNotFoundException("用户数据不存在");
    	}
    
    	// 判断查询结果中的isDelete是否为1
    	if (result.getIsDelete().equals(1)) {
    		// 是:抛出UserNotFoundException异常
    		throw new UserNotFoundException("用户数据不存在");
    	}
    
    	// 向参数user中补全数据:uid
    	user.setUid(uid);
    	// 向参数user中补全数据:modifiedUser(username)
    	user.setModifiedUser(username);
    	// 向参数user中补全数据:modifiedTime(new Date())
    	user.setModifiedTime(new Date());
    	// 调用userMapper的updateInfoByUid(User user)方法执行修改,并获取返回值
    	Integer rows = userMapper.updateInfoByUid(user);
    	// 判断以上返回的受影响行数是否不为1
    	if (rows != 1) {
    		// 是:抛出UpdateException异常
    		throw new UpdateException("更新用户数据时出现未知错误,请联系系统管理员");
    	}
    }

    3.在UserServiceTests类中进行单元测试。

    @Test
    public void getByUid() {
        try {
            Integer uid = 20;
            User user = iUserService.getByUid(uid);
            System.out.println(user);
        } catch (ServiceException e) {
            System.out.println(e.getClass().getSimpleName());
            System.out.println(e.getMessage());
        }
    }
    
    @Test
    public void changeInfo() {
        try {
            Integer uid = 20;
            String username = "数据管理员";
            User user = new User();
            user.setPhone("15512328888");
            user.setEmail("admin03@cy.cn");
            user.setGender(2);
            iUserService.changeInfo(uid, username, user);
            System.out.println("OK.");
        } catch (ServiceException e) {
            System.out.println(e.getClass().getSimpleName());
            System.out.println(e.getMessage());
        }
    }

    3 用户-个人资料-控制器

    3.1 处理异常

    说明:无需再次开发。

    3.2 设计请求

    1.设计用户提交显示当前登录的用户信息的请求,并设计响应的方式。

    请求路径:/users/get_by_uid
    请求参数:HttpSession session
    请求类型:GET
    响应结果:JsonResult4c8e0c17c3bd7e0081bb17cc795e1984

    2.设计用户提交执行修改用户信息的请求,并设计响应的方式。

    请求路径:/users/change_info
    请求参数:User user, HttpSession session
    请求类型:POST
    响应结果:JsonResult903bf37051cf83cbd9686768ac0189ae

    3.3 处理请求

    1.处理获取用户信息请求

    1.在UserController类中添加处理请求的getByUid()方法,并导入org.springframework.web.bind.annotation.GetMapping包。

    @GetMapping("get_by_uid")
    public JsonResult<User> getByUid(HttpSession session) {
    	// 从HttpSession对象中获取uid
    	// 调用业务对象执行获取数据
    	// 响应成功和数据
    	return null;
    }

    2.getByUid(HttpSession session)方法中具体代码实现为。

    @GetMapping("get_by_uid")
    public JsonResult<User> getByUid(HttpSession session) {
        // 从HttpSession对象中获取uid
        Integer uid = getUidFromSession(session);
        // 调用业务对象执行获取数据
        User data = userService.getByUid(uid);
        // 响应成功和数据
        return new JsonResult<User>(OK, data);
    }

    3.完成后启动项目,打开浏览器先登录,再访问http://localhost:8080/users/get_by_uid请求进行测试。

    2.处理修改用户个人信息请求

    1.在UserController类中添加处理请求的changeInfo(User user, HttpSession session)方法。

    @RequestMapping("change_info")
    public JsonResult<Void> changeInfo(User user, HttpSession session) {
    	// 从HttpSession对象中获取uid和username
    	// 调用业务对象执行修改用户资料
    	// 响应成功
    	return null;
    }

    2.changeInfo(User user, HttpSession session)方法中具体代码实现为。

    @RequestMapping("change_info")
    public JsonResult<Void> changeInfo(User user, HttpSession session) {
    	// 从HttpSession对象中获取uid和username
    	Integer uid = getUidFromSession(session);
    	String username = getUsernameFromSession(session);
    	// 调用业务对象执行修改用户资料
    	userService.changeInfo(uid, username, user);
    	// 响应成功
    	return new JsonResult<Void>(OK);
    }

    3.完成后启动项目,打开浏览器先登录,再访问http://localhost:8080/users/change_info?phone=17858800000&email=admin07@cy.com&gender=1进行测试。

    4 用户-个人资料-前端页面

    1.在userdata.html页面中body标签内部的最后,添加script标签用于编写JavaScript程序。

    <script type="text/javascript">
        $(document).ready(function() {
            $.ajax({
                url: "/users/get_by_uid",
                type: "GET",
                dataType: "json",
                success: function(json) {
                    if (json.state == 200) {
                        console.log("username=" + json.data.username);
                        console.log("phone=" + json.data.phone);
                        console.log("email=" + json.data.email);
                        console.log("gender=" + json.data.gender);
    
                        $("#username").val(json.data.username);
                        $("#phone").val(json.data.phone);
                        $("#email").val(json.data.email);
    
                        let radio = json.data.gender == 0 ? $("#gender-female") : $("#gender-male");
                        radio.prop("checked", "checked");
                    } else {
                        alert("获取用户信息失败!" + json.message);
                    }
                }
            });
    	});
    
        $("#btn-change-info").click(function() {
            $.ajax({
                url: "/users/change_info",
                type: "POST",
                data: $("#form-change-info").serialize(),
                dataType: "json",
                success: function(json) {
                    if (json.state == 200) {
                        alert("修改成功!");
                        location.href = "login.html";
                    } else {
                        alert("修改失败!" + json.message);
                    }
                },
                error: function(xhr) {
                    alert("您的登录信息已经过期,请重新登录!HTTP响应码:" + xhr.status);
                    location.href = "login.html";
                }
            });
        });
    </script>

    2.完成后启动项目,打开浏览器先登录,再访问http://localhost:8080/web/userdata.html页面并进行用户个人资料的修改测试。

    Das obige ist der detaillierte Inhalt vonSo ändern Sie Springboot-Benutzerdaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen