springmvc学习笔记(19)——CRUD之增加
2015-04-26 22:30
274 查看
CRUD之增加
这一篇笔记是CRUD的第二篇,以下的内容都在第一篇的基础之上,查看第一篇请点击springmvc学习笔记(18)——CRUD之查询DAO中补充增加方法
/** * 增加一个学生 * @param student */ public void add(Student student){ //这里应该做一个验证,如验证学生ID是否已经存在等,为了方便,此次暂时不做处理 //在实际情况中,在数据库中可以让ID自增长 students.put(student.getStudentId(), student); }
增加学生(界面)
在jsp中,我们使用了form标签,和struts2所用的标签有些类似前端
引入标签<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
表单
<form:form action="student" method="POST" modelAttribute="student"> ID:<form:input path="studentId" /><br> 姓名:<form:input path="name" /><br> 性别:<form:radiobuttons path="sex" items="${sex }" /><br> 省份:<form:input path="address.province" /><br> 城市:<form:input path="address.city" /><br> <input type="submit" value="add" /> </form:form>
解析
1.
path相当于html标签中的
name
2.
form:radiobuttons后的
items从请求域中获取选项值,就这点而言,springmvc不如strust2方 便,具体怎么将选项放入请求域,请看下面一段控制层的代码
3. 这里有一个属性modelAttribute,必写。因为springmvc默认 表单是要回显的,因此springmvc在你访问该页面的时候,会去modelAttribute中找表单中属性的值,而modelAttribute的默认值为command。如果你不写modelAttribute,会报错,你能从错误信息中找到
command这样的关键字。
4. 如果你实在不想写modelAttribute,那么可以在控制层中使用
map.put("command", new Student());,详见下方控制层代码
5. 其他关于modelAttribute的用法,请查看springmvc学习笔记(12)——ModelAttribute
控制层
/** * 增加学生 页面 * @param map * @return */ @RequestMapping("/input") public String input(Map<String, Object> map){ //将性别的选项放入map中,springmvc的form:radiobuttons标签将自行解析 Map<String, String> sexMap = new HashMap<String, String>(); sexMap.put("男", "男"); sexMap.put("女", "女"); map.put("sex", sexMap); //放入一个默认的空的信息 map.put("student", new Student()); //如果前端form中没有写modelAttribute,请用以下这句代码 //map.put("command", new Student()); return "input"; }
以上代码是 增加学生页面 的初始化,个人感觉是有一些些麻烦,不过它能实现表单的回显,相比于原始的jsp-servlet来说,还是方便了很多。
在后面CRUD之修改中,将会使用到表单的回显
增加学生(POST提交)
将表单提交到后台,交由以下目标方法处理/** * 增加学生 * @param student * @return * @throws UnsupportedEncodingException */ @RequestMapping(value="student",method=RequestMethod.POST) public String add(Student student){ studentDao.add(student); return "redirect:/student";//重定向到 显示学生列表界面 }
增加的操作基本都交由DAO来做
这里值得注意的就是
return "redirect:/student";重定向的路径是显示学生列表的路径,而增加学生的路径也是
/student,那么springmvc怎么知道我们到底要访问哪个目标方法,这就是REST风格,有关rest的使用,请查看springmvc学习笔记(4)——REST
注意
提交数据之后,也许你会发现中文乱码的问题,最优解决方案如下:在web.xml中添加spring自带的过滤器。
该过滤器一定要加载 dispatcherServlet前面,否则无效。
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
相关文章推荐
- springmvc学习笔记(20)——CRUD之删除 & 静态资源处理
- springmvc学习笔记(21)——CRUD之修改
- springmvc学习笔记(18)——CRUD之查询
- SpringMVC学习笔记-REST风格CRUD
- SpringMVC 学习笔记(五) 基于RESTful的CRUD
- SpringMVC学习笔记-REST风格CRUD
- SpringMVC 学习笔记(五) 基于RESTful的CRUD
- springmvc学习笔记(19)-RESTful支持
- SpringMVC 学习笔记(五) 基于RESTful的CRUD
- springmvc学习笔记(19)-RESTful支持
- SpringMVC 学习笔记(十) 异常处理HandlerExceptionResolver
- SpringMVC学习笔记(1):初识SpringMVC
- ElasticSearch 6.x 学习笔记:19.搜索高亮
- springmvc 学习笔记和配置
- 大数据学习笔记-------------------(19)
- 数据回显---SpringMVC学习笔记(九)
- ArcGIS API for JavaScript 4.2学习笔记[19] 搜索小部件——使用更多数据源
- SpringMVC学习笔记
- springmvc学习笔记(27)——文件下载
- 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展