如何使用Spring MVC更新当前用户数据? [英] How to use Spring MVC to update current user data?

查看:86
本文介绍了如何使用Spring MVC更新当前用户数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm beginner to learn spring MVC, Now I have a problem can't solve. I spent a lot of time want to use Spring MVC to update current user data,but always go round in circles.

例如,登录用户为[test2],我想更新mAccount和mPassword,如何获取登录会话并单击jsp表格进行更新.我该怎么办?(mId是主键)

Eclipse控制台消息: 在此处输入图片描述

eclipse调试模式消息: 在此处输入图片描述

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;

MemberController:

MemberController:

    @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";
}

MemberDao:

MemberDao:

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);

MemberDaoImpl:

MemberDaoImpl:

@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();

}

}

MemberService:

MemberService:

boolean accountCheck(String mAccount);

int registerMember(MemberBean mb);

MemberBean queryMember(String mAccount);

public MemberBean checkPassword(String mAccount, String mPassword);

void updateMember(MemberBean mb );

MemberSeriveImpl:

MemberSeriveImpl:

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

updateMember.jsp:

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>

推荐答案

这是语法错误,原因是=:之间存在空格,因此请通过删除空格将查询更改为以下内容.

This is syntax error due to space between = and : so change query to below by removing space.

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

更新:

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

You are missing comma between mb.mAccount =: and mb.mPassword

这篇关于如何使用Spring MVC更新当前用户数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆