上一次已经详细介绍了如何搭建一个基于SSM框架的项目,这一次我们实现具体的操作。
下图是我这次项目的目录结构:
本次我们想实现的是用户信息的更新操作,为了方便测试,我们直接在index.jsp中添加一条语句:
a href="${pageContext.request.contextPath}/user/findAll.do">查询全部
这样在启动项目后将看到“查询全部”的链接
点击链接将会调用findAll.do这个地方,它是写在Controller层的一个函数:
@RequestMapping(“findAll.do”)
public ModelAndView findAll(){
List userInfoList = userInfoService.findAll();
ModelAndView mv = new ModelAndView();
mv.addObject("userInfoList",userInfoList);
mv.setViewName("user-list");
return mv;
}
由上述代码可以看出,对应findAll.do的界面是user-list.jsp页面。并且传入了userInfoList这个对象
在user-list.jsp页面中,有这样一条语句:
a href=" p a g e C o n t e x t . r e q u e s t . c o n t e x t P a t h / u s e r / f i n d U s e r B y I d . d o ? i d = {pageContext.request.contextPath}/user/findUserById.do?id= pageContext.request.contextPath/user/findUserById.do?id={user.id}" class=“btn bg-olive btn-xs”>更新
同理,点击“更新”按钮后会跳转到findUserById.do,代码如下:
@RequestMapping("/findUserById.do")
public ModelAndView findUserById(int id){
UserInfo userInfo = userInfoService.findUserById(id);
ModelAndView mv = new ModelAndView();
mv.addObject("userInfo",userInfo);
mv.setViewName("user-update");
return mv;
}
对应的界面是user-update,且传入了userInfo这个对象
id值不可修改是因为我们将id域设置为disabled
user-update中的一句话为:
form action=" p a g e C o n t e x t . r e q u e s t . c o n t e x t P a t h / u s e r / u p d U s e r B y I d . d o ? i d = {pageContext.request.contextPath}/user/updUserById.do?id= pageContext.request.contextPath/user/updUserById.do?id={userInfo.id}"
由于“保存”按钮的属性是submit,所以会将当前填入的变量提交到后台中
首先是updUserById这个地方:
@RequestMapping("/updUserById.do")
public String updUserId(UserInfo userInfo){
userInfoService.updUserById(userInfo);
return "redirect:findAll.do";
}
这段代码的意思是:执行完updUserById(userInfo)函数后,跳转到findAll.do处,即我们在一开始所说的显示所有用户的页面user-list.jsp。
下面是updUserById(userInfo)函数的代码:
public void updUserById(UserInfo userInfo){
userDao.updUserById(userInfo);
}
public void updUserById(UserInfo userInfo){
userDao.updUserById(userInfo);
}
mapper中的sql语句为:
update id=“updUserById” parameterType=“com.zhongruan.bean.UserInfo”>
update tb_user set username=#{username},password=#{password} where id=#{id}
即一条更新数据库的语句。
回到user-list.jsp页面后,由于会调用findAll.do,所以显示的是已经更新过的数据。
至此用户的更新操作就完成了,类似的可以相继完成增删功能。