更新時間:2022-01-14 10:29:22 來源:動力節點 瀏覽1490次
HTML代碼
<div id="dlg">
<form id="fm">
<div class="ditem">
<label for="oldpass">舊密碼</label>
<input type="password" id="oldpass" name="oldpass" class="k-textbox" minlength="6"
maxlength="20" required="required"/>
</div>
<div class="ditem">
<label for="newpass">新密碼</label>
<input type="password" id="newpass" name="newpass" class="k-textbox" minlength="6" maxlength="20"
required="required"/>
</div>
<div class="ditem">
<label for="repassword">密碼確認</label>
<input type="password" id="repassword" name="repassword" class="k-textbox" minlength="6" maxlength="20"
required="required"/>
</div>
</form>
<div class="buttons-wrap">
<button type="button" class="k-button" onclick="javascript: $('#dlg').data('kendoWindow').close();">關閉</button>
<button type="button" class="k-button k-state-selected" id="save" onclick="save()">保存</button>
</div>
</div>
使用ajax.form表單提交方式
/*初始form表單*/
$(function () {
frm = $('#fm');
frm.validate({
errorPlacement: function (error, element) {
showReq(error.text(), element)
}
});
})
在保存時添加一個事件
//修改密碼
$("#save").click(function () {
if (!frm.valid()) {
return;
}
frm.ajaxSubmit({
url: ctx + "/user/updatePassword", //給后臺發送一個請求
success: function (data) { //從后來返回一個數據
if (data.status === 1) {
showTip('密碼修改成功。', true);
} else {
kendo.ui.ExtAlertDialog.show({message: data.data});
}
}
});
Java后臺代碼
Controller層
/**
* 修改密碼功能
*
* @return
*/
@RequestMapping(value = "/updatePassword")
public String updatePassword(HttpServletRequest request) {
//從sesson中獲取當前登陸的用戶
User loginedUser = SessionState.getLoginedUser(request); //獲取舊密碼
String oldPwd = ConvertUtil.StringToNull(request.getParameter("oldpass")); //獲取新密碼
String newPwd = ConvertUtil.StringToNull(request.getParameter("newpass"));
ResultBean resultBean = userService.updatePassword(loginedUser, oldPwd, newPwd);
return resultBean.toString();
}
Service層
/**
* 修改密碼功能
* @param loginUser
* @param newPass
* @param oldPass
*/ //返回一個Bean
ResultBean updatePassword(User loginUser , String oldPass, String newPass);
Service實現層
/**
* 修改密碼功能
*
* @param loginUser
* @param newPass
* @param oldPass
*/
public ResultBean updatePassword(User loginUser, String oldPass, String newPass) {
User _user = userDao.findById(loginUser.getUserId());
if (_user == null) {
return new ResultBean(-3, "賬號不存在。");
}
if (!SecurityUtil.authenticatePassword(_user.getUserId(), _user.getPwd(), oldPass)) {
return new ResultBean(-4, "密碼錯誤,請重新輸入。");
}
int affectRows = changePwd(_user.getUserId(), newPass, loginUser);
if (affectRows == 1){
return new ResultBean(1, "修改成功");
}
return new ResultBean(-5, "");
}
UserDao
/**
* 修改密碼
* @param user
* @return
*/
int changePwd(User user);
UserMapper.xml
<!-- 修 改-->
<update id="changePwd" parameterType="wms.entity.sys.User">
UPDATE USERS
SET
PWD = #{pwd, jdbcType=VARCHAR},
UPDATE_BY = #{updateBy, jdbcType=VARCHAR},
UPDATE_DATE = #{updateDate}
WHERE U_ID = #{userId, jdbcType=INTEGER}
</update>
上邊封裝的工具類
package util;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;
public class ConvertUtil {
/**
* 檢查字符串是否為null、""或" "
* @param str
* 字符串
* @return null、""或" "返回true,否則返回false
*/
public static boolean isNullOrEmpty(String str){
return !StringUtils.hasText(str);
}
/**
* 將Object轉換為String,若為空,則轉換為null
* @param obj
* Object
* @return null或字符串
*/
public static String toString(Object obj){
if (StringUtils.isEmpty(obj))
return null;
else
return obj.toString();
}
/**
* 將字符串"on"轉換為"Y",否則為“N”
* @param str
* @return "on" -> "Y",否則為"N"
*/
public static String toActiveString(String str){
if (isNullOrEmpty(str))
return "N";
else if(str.equals("on"))
return "Y";
else
return "N";
}
/**
* 將以","作為分隔符的字符串轉為List<String>
* @param str
* @return List<String>
*/
public static List<String> toList(String str) {
if (isNullOrEmpty(str))
return null;
else {
String[] arr = str.split(",");
return java.util.Arrays.asList(arr);
}
}
/**
* 將空字符串轉換為null,將帶有空格的字符串trim
* @param str
* 待處理字符串
* @return null或字符串
*/
public static String StringToNull(String str){
if (isNullOrEmpty(str))
return null;
else
return str.trim();
}
/**
* 字符串轉換為日期類型(Date,不是DateTime)
* @param str 格式:yyyy-MM-dd
* @return
* @throws ParseException
*/
public static Date toDate(String str) throws ParseException {
if (isNullOrEmpty(str))
return null;
else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(str);
}
}
/**
* 字符串轉換為日期類型(DateTime,不是Date)
* @param str 格式:yyyy-MM-dd HH:mm
* @return
* @throws ParseException
*/
public static Date toDateTime(String str) throws ParseException {
if (isNullOrEmpty(str))
return null;
else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return sdf.parse(str);
}
}
public static Date toDate(String str, String formater) throws ParseException {
if (isNullOrEmpty(str))
return null;
else {
SimpleDateFormat sdf = new SimpleDateFormat(formater);
return sdf.parse(str);
}
}
/**
* 將日期轉換為指定格式的字符串
* @param date
* @param formater
* @return
*/
public static String toDateString(Date date, String formater){
return new SimpleDateFormat(formater).format(date);
}
public static Double toDouble(String str){
if (isNullOrEmpty(str)) return null;
else return Double.parseDouble(str);
}
public static BigDecimal toDecimal(String str){
if (isNullOrEmpty(str)) return null;
else return new BigDecimal(str);
}
public static Integer toInteger(String str){
if (isNullOrEmpty(str)) return null;
else return Integer.parseInt(str);
}
/**
* 判斷是否為整數
* @param str 傳入的字符串
* @return 是整數返回true,否則返回false
*/
public static boolean isInteger(String str){
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
}
/**
* 將字節數組轉換為十六進制字符串
*
* @param b
* 字節數組
* @return 十六進制字符串
*/
public static String bytesToHexString(byte[] b){
StringBuilder stringBuilder = new StringBuilder("");
for (int i = 0; i < b.length; i++) {
int v = b[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
/**
* 將十六進制字符串轉換字節數組
*
* @param hexString
* 十六進制字符串
* @return 字節數組
*/
public static byte[] hexStringToBytes(String hexString) {
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}
/**
* 將char轉換為byte
* @param c char
* @return byte
*/
private static byte charToByte(char c) {
return (byte)"0123456789ABCDEF".indexOf(c);
}
}
ResultBean.java
package wms.entity;
import com.alibaba.fastjson.JSONObject;
import java.util.Objects;
/**
* Created by liwm on 2015/11/30 10:36.
* DESC:
*/
public class ResultBean {
public ResultBean(int status, Object data){
this.status = status;
this.data = data;
}
/**
* 狀態標記
*/
private int status;
/**
* 返回的詳細結果
*/
private Object data;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
@Override
public String toString(){
return String.format("{\"status\":%s,\"data\":\"%s\"}", status, data);
}
}
以上就是關于“利用SSM修改密碼”的介紹,大家如果想了解更多相關知識,不妨來關注一下動力節點的SSM整合視頻教程,里面的課程內容細致全面,通俗易懂,適合沒有基礎的小白學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習