gpt4 book ai didi

java - 如何使用Spring MVC更新当前用户数据?

转载 作者:行者123 更新时间:2023-12-02 00:58:37 26 4
gpt4 key购买 nike

我是初学者学习spring MVC,现在我有一个问题无法解决。我花了很多时间想用Spring MVC来更新当前用户数据,但总是兜圈子。

例如登录用户是[test2],我想更新mAccount和mPassword,如何获取登录 session 并单击jsp表单进行更新。我应该做什么?(mId是主键)

eclipse 控制台消息: enter image description here

Eclipse Debug模式消息: enter image description here

bean :

private Integer mId;
private String mAccount;
private String mPassword;
private String mName;
private Date mDate;
private String mPhone;
private String mAddress;
private String mGender;
private String mEmail;

成员 Controller :

    @Autowired
MemberService memberservice;

@Autowired
ServletContext context;

@RequestMapping(value = "/checklogin", method = RequestMethod.POST)
public String Login(HttpSession session, HttpServletRequest request) {
MemberBean mb = null;
Map<String, String> errorMsgMap = new HashMap<String, String>();
session.setAttribute("errorMsgKey", errorMsgMap);
String mAccount = request.getParameter("mAccount");
String mPassword = request.getParameter("mPassword");

try {
mb = memberservice.checkPassword(mAccount, mPassword);
if (mb != null) {
session.setAttribute("LoginOK", mb);
} else {
errorMsgMap.put("LoginError", "帳號不存在或密碼錯誤");
}
} catch (RuntimeException e) {
errorMsgMap.put("LoginError", e.getMessage());
}

if (errorMsgMap.isEmpty()) {

} else {
return "login/login";
}
return "index";
}

@RequestMapping(value = "/register/add", method = RequestMethod.GET)
public String getRegisterData(Model model) {
MemberBean mb= new MemberBean();
model.addAttribute("MemberBean",mb);
return "register/register";
}

@RequestMapping(value = "/register/add", method = RequestMethod.POST)
public String porcessAddNewRegistertoForm(@ModelAttribute("MemberBean")MemberBean mb, BindingResult result) {
memberservice.registerMember(mb);
return "index";
}


@RequestMapping(value = "/UpdateMemberForm", method = RequestMethod.GET)
public String AddLoginMemberBeantoUpdateForm(Model model) {
MemberBean mb = new MemberBean();
model.addAttribute("MemberBean", mb);
return "register/updateMember";
}
@RequestMapping(value = "/UpdateMemberForm", method = RequestMethod.POST)
public String UpdateMember(@ModelAttribute("MemberBean")MemberBean mb, BindingResult result ) {
memberservice.updateMember(mb);
return "index";
}

成员(member)道:

public void setConnection(Connection conn);

public boolean checkAccount(String mAccount);

public int registerMember(MemberBean mb);

public MemberBean queryMember(String mAccount);

public MemberBean checkPassword(String mAccount, String mPassword);

public void updateMember(MemberBean mb);

成员DaoImpl:

@Override
public boolean checkAccount(String mAccount) {
boolean exist = false;
String sql = "FROM MemberBean m WHERE m.mAccount=:mid";
Session session = factory.getCurrentSession();
try {
MemberBean mb = (MemberBean) session.createQuery(sql).setParameter("mid", mAccount).uniqueResult();
if (mb != null) {
exist = true;
}
} catch (NoResultException ex) {
exist = false;
} catch (NonUniqueResultException ex) {
exist = true;
}
return exist;
}

@Override
public int registerMember(MemberBean mb) {
int n = 0;
Session session = factory.getCurrentSession();
session.save(mb);
n++;
return n;
}
@Override
public MemberBean queryMember(String mAccount) {
MemberBean mb = null;
Session session = factory.getCurrentSession();
String sql = "FROM MemberBean m WHERE m.mAccount=:mid";
try {
mb = (MemberBean) session.createQuery(sql).setParameter("mid", mAccount).uniqueResult();
} catch (NonUniqueResultException ex) {
mb = null;
}
return mb;
}

@Override
public MemberBean checkPassword(String mAccount, String mPassword) {
MemberBean mb = null;
Session session = factory.getCurrentSession();
String sql = "FROM MemberBean m WHERE m.mAccount=:mid and m.mPassword=:pswd";
try {
mb = (MemberBean) session.createQuery(sql).setParameter("mid", mAccount).setParameter("pswd", mPassword)
.uniqueResult();
} catch (NoResultException ex) {
mb = null;
}

return mb;
}

@Override
public void updateMember(MemberBean mb) {

String hql="UPDATE MemberBean mb SET mb.mAccount = :mAccount mb.mPassword = :mPassword WHERE mId = :mId";
Session session = factory.getCurrentSession();

session.createQuery(hql).setParameter("mAccount", mb.getmAccount()).setParameter("mPassword", mb.getmPassword())
.setParameter("mId", mb.getmId()).executeUpdate();

}

}

成员(member)服务:

boolean accountCheck(String mAccount);

int registerMember(MemberBean mb);

MemberBean queryMember(String mAccount);

public MemberBean checkPassword(String mAccount, String mPassword);

void updateMember(MemberBean mb );

MemberServeImpl:

@Transactional
@Override
public void updateMember(MemberBean mb) {
if (mb.getmAccount() != null && mb.getmPassword() != null) {
dao.updateMember(mb);
}
}

updateMember.jsp:

    <form:form method="POST"  modelAttribute="MemberBean">
<table>
<tr>
<td>帳號:</td>
<td><form:input id="mAccount" path="mAccount" type="text" value="${MemberBean.mAccount}"
size="10"/>
</td>
</tr>
<tr>
<td>密碼:</td>
<td><form:input id="mPassword" path="mPassword" type="text" value="${MemberBean.mPassword}"
size="10"/>
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center"><input type="submit" value="更新" >
</td>
</tr>
</table>
</form:form>

最佳答案

由于 =: 之间有空格,这是语法错误,因此通过删除空格将查询更改为下面的内容。

SET mb.mAccount =:mAccount mb.mPassword =:mPassword WHERE mId =:mId

更新:

mb.mAccount =: 和 mb.mPassword 之间缺少逗号

关于java - 如何使用Spring MVC更新当前用户数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57788021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com