1.常用注解:
@RequestMapping请求映射
@RequestParam请求参数 格式:@RequestParam(value=”id”,required=false)String id)
@ModelAndView返回模型和视图
后端:
@RequestMapping("/preSave")
public ModelAndView preSave(@RequestParam(value="id",required=false) String id){
//传递参数注解,默认为true 改成false是为了不报获取不到参数的错,
//默认是必须要参数,获取不到就会报错,false为不需要
ModelAndView mav=new ModelAndView();
//System.out.println(id);
if(id != null){
mav.addObject("student",studentlist.get(Integer.parseInt(id)-1));//因为是索引 所以减去一
mav.setViewName("student/update");
}else{
mav.setViewName("student/add");
}
return mav;
}
前端:
<a href="${pageContext.request.contextPath}/student/preSave.do?id=${student.id}">修改</a>
2.springmvc对象属性自动封装:注意 前端name名字和实体类(即javabean)对应,才会自动封装
springmvc post请求中文乱码解决:请看上一篇文章,在web.xml中配置监听器,拦截所有请求,修改为utf-8
Controller内部转发和重定向:重定向会引起页面的变化,转发则不会
例:Spring CIUD 静态数据来模仿从数据库中取数据
Springmvc前台name名字同实体类相对应,方法中可以直接传实体类
@RequestMapping("/save")
public String save(Student student){
if(student.getId()!=0){
Student s=(Student) studentlist.get(student.getId()-1);
s.setName(student.getName());
s.setAge(student.getAge());
}else{
studentlist.add(student);
}
//return "redirect:/student/list.do";
return "forward:/student/list.do";
}
//删除 直接通过传过来的ID删除就可以
@RequestMapping("/delete")
public String delete(@RequestParam("id") int id){
studentlist.remove(id-1);
return "redirect:/student/list.do";
}