springmvc5.1.9在控制器中一个方法可跳视图也可跳方法问题解决
程序员文章站
2024-03-15 11:09:31
...
springmvc5.1.9在控制器中一个方法可跳视图也可跳方法问题解决
springmvc框架版本
5.1.9
浏览本文的前提
配置好springmvc运行环境,并知晓控制器的定义及访问。
本文关于springmvc的配置
此处关乎到理解后续内容
配置的路由拦截后缀为 *.blank
有学生实体类Student
有学生相关视图在/WEB-INF/pages/student/目录下
正文
我们已学生添加业务为例子,没有表单提交时跳到添加页面,有表单提交时添加学生后跳转到list方法。,上代码!
package controller;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import dao.BjDao;
import dao.StudentDao;
import vo.Bj;
import vo.Student;
@Controller
@RequestMapping("/student")
public class StudentController {
BjDao bjDao = null;
StudentDao studentDao = null;
public StudentController() {
// 实例化bjDao、studentDao
bjDao = new BjDao();
studentDao = new StudentDao();
}
/**
* 学生列表
*/
@GetMapping("/list")
public ModelAndView list() {
ModelAndView mav = new ModelAndView();
List<Student> studentList = null;
try {
studentList = studentDao.queryAll();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mav.addObject("studentList", studentList);
return mav;// 这个地方未设置viewname,自动返回本页面,后面相同方法都是这样
}
/**
* 添加页面及添加业务
*/
@RequestMapping("/add")
public ModelAndView add(@ModelAttribute Student student) throws Exception {
ModelAndView mav = new ModelAndView();
List<Bj> bjList = null;
// 如果不是添加业务,转到添加页面
if (student == null || student.getSname() == null) {
bjList = bjDao.queryAll();
mav.addObject("bjList", bjList);
return mav;
}
// 如果是添加业务,进行添加业务
// 添加成功 转到list方法
// 添加失败 转到add页面并给予警示
try {
studentDao.add(student);
mav.setViewName("redirect:/student/list.blank");
return mav;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
mav.addObject("info", "学生学号重复或数据库异常!添加失败!");
bjList = bjDao.queryAll();
mav.addObject("bjList", bjList);
return mav;
}
}
/**
* 以下省略编辑和删除业务
*/
}
结论(无耐心的朋友可直接看这一步)
如上代码可见,我们使用ModelAndView 类可以实现跳转方法,只需设置viewName为redirect:你要跳转的方法的mapping(要完整,包括后缀,除非你url-pattern为/*,此时可以写后缀)。
而我们想要跳转页面时,如果要跳转的页面和你当前方法的mapping相同,可以直接返回空视图,否则你需要设置viewName为你的视图(不需要带redirect)。
下一篇: Java实现求100以内的质数