SSM框架的搭建之前已经做过了,不记得可以看之前的宁波实训Day3:SSM框架
修改
在网页中修改用户的信息,并返回原界面。
修改之前要先获取用户的信息,让使用者知道自己在修改什么,所以要先创建根据用户id返回用户的信息,显示到修改界面上
那么首先要建立findById方法再建立update方法。跟之前一样编写Dao层-》service层-》controller层mapper:
<select id="findUserById" parameterType="Integer" resultType="com.gn.bean.UserInfo">
select * from tb_user where id = #{id}
</select>
<update id="updateUserById" parameterType="com.gn.bean.UserInfo">
update tb_user set tb_user.username = #{username},tb_user.password = #{password} where tb_user.id = #{id}
</update>
controller:
@RequestMapping("/findUserById.do")
public ModelAndView findUserById(int id)
{
UserInfo userInfo = userInfoService.findUserById(id);
System.out.println("ID:"+id);
ModelAndView mv = new ModelAndView();
mv.addObject("userInfo",userInfo);
mv.setViewName("user-update");
return mv;
}
@RequestMapping("/updateUserById")
public String updateUserById(UserInfo userInfo)
{
userInfoService.updateUserById(userInfo);
return "redirect:findAll.do"; //重新加载到初始页面
}
jsp:
<form action="${pageContext.request.contextPath}/user/updateUserById.do?id=${userInfo.id}">
<!--其他的省略了,这里只是要注意传参-->
其他知识
自己查的一些知识:
关于c标签
c标签为“核心标签”
核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
标签 描述
<c:out> 用于在JSP中显示数据,就像<%= … >
<c:set> 用于保存数据
<c:remove> 用于删除数据
<c:catch> 用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if> 与我们在一般程序中用的if一样
<c:choose> 本身只当做<c:when>和<c:otherwise>的父标签
<c:when> <c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach> 基础迭代标签,接受多种集合类型
<c:forTokens> 根据指定的分隔符来分隔内容并迭代输出
<c:param> 用来给包含或重定向的页面传递参数
<c:redirect> 重定向至一个新的URL.
<c:url> 使用可选的查询参数来创造一个URL
${}与#{}运算符
${}为jsp的el表达式使用表达式语言可以方便的访问对象中的属性、提交的参数以及进行各种数学运算。使用表达式语言,如果输入的内容为空,则会自动使用空字符串””代替。表达式语言的使用方法为${属性名称},{}中支持算数运算、自动的类型转换和逻辑运算。
#{}为myBatis中的占位符,与jdbc中的?类似。
今日总结
今天重新复习了一下ssm框架的搭建过程,同时完成了系统的修改功能,虽然我在之前的系统中已经提前完成了增删改查的所有功能,但是仍可以发现部分细节都不同。首先我的update功能是没有先用select获取用户信息的,我直接使用了请求时带参数的方法,而老师则是通过查找来传递信息,再进行修改,这样老师的方法更好,因为这个id查询的方法之后可以复用;其次老师返回初始页面使用的是String返回类型,而我使用的是在ModelAndView中设置redirect返回初始页面,理论上这两种方法都差不多,但是返回String的方法更简单也更节省资源。此外,我们实训期间的小组项目正式开始了,我今天独立地创建了整个系统的数据库,数据表包括有:
用户
一体机
二手机
硬件
商品评论
订单
反馈
论坛主题
论坛回复
在询问个组员意见,包括各个属性的命名方式以及数据如何分表,并结合我们的模块设计后,我初步确定了我们在之后的系统开发中需要的数据及其结构,算是为整个系统奠定了基石。明天我们将开始搭建自己系统的ssm框架并开始寻找前端模板。