有关Spring MVC知识点的总结

匿名 (未验证) 提交于 2019-12-03 00:19:01

Spring MVC


五大组件

DispatcherService (前端控制器)

接受请求,请求配置在HandlerMapping中.基于HandlerMapping的配置,调用相应的模型来处理.

HandlerMapping

包含了请求路径与模型的对应关系.告诉DispatcherService请求路径与模型之间的关系.

Controller (处理器)

负责处理业务逻辑.model

ModelAndView

封装了处理结果,需要将Controller封装为ModelAndView.

model表示处理结果,view表示视图.处理结果除了数据之外,还可能有视图名.

ViewResolver (视图解析器)

视图解析器. freemarker velocity ... 可以解析非jsp视图.

DispatcherServlet依据ViewResolver的解析,告诉DispatcherService调用哪个试图对象来生成相应的页面.

五大组件之间的关系


1.DispatcherServlet根据HanderMapping的配置,调用相应的Controller来处理.

2.Controller将处理结果封装成ModelAndView对象,然后返回给DispatcherServlet.

3.DispatcherServlet依据ViewResolver的解析,调用相应的视图对象(比如某个jsp)来生成相应的页面.

步骤:

step1:导包

step2:添加spring配置文件

step3:配置DispatcherServlet

step4:写Controller(处理器) 业务逻辑的处理


使用注解开发基于springmvc的web应用

step1:导包

step2:添加spring的配置文件

step3:配置前端控制器DispatcherServlet.

读取请求参数值:

1.通过请求对象读取

将request对象作为方法的入参即可.

 @RequestMapping("/toLogin.do")   //告诉前端控制器请求路径与处理器方法的对应关系,不需要配置HandlerMapping public String login(HttpServletRequest request) {     String username = request.getParameter("username");     System.out.println("username: " + username);     String psd = request.getParameter("password");     System.out.println("password: " + psd);     return "login"; }

2.使用@RequestParam注解得到参数的方法值.

将注解加到方法的形参前面,明确的告诉传过来的值和参数之间的对应关系

 @RequestMapping("/login.do") public String login(String username, @RequestParam("password") String psd) {     System.out.println("username: " + username + " password: " + psd);     return "index"; }

3.使用javabean封装请求参数值.

java类的属性和请求参数名一致

 @RequestMapping("/login.do") public String login(User user) {     System.out.println("username: " + user.username + " password: " + user.password);     return "index"; }

向页面传值的方式

1.使用request域,将值传给页面.

将数据绑定到request,然后转发到某个jsp.

 //向页面传值的第一种方式  使用request @RequestMapping("/login1.do") public String login1(User user, HttpServletRequest request) {     System.out.println("login1");     String username = user.getUsername();     String password = user.getPassword();     //将数据绑定到request     request.setAttribute("username", username);     request.setAttribute("password", password);     //spring默认使用转发,会自动转发到以return值为jsp名的页面.     return "index"; }
 <h1>登录成功!</h1> <h1>${username}</h1> <h1>${password}</h1>  <!-- EL表达式 -->

2.使用ModelAndView来给页面传值.

将数据先封装到ModelAndView对象里面,然后将该对象作为方法的返回值.

 //向页面传值的第二种方式  使用ModelAndView @RequestMapping("/login2.do") public ModelAndView login2(User user) {     System.out.println(user.getUsername() + " " + user.getPassword());     Map<String,Object> map = new HashMap<>();     map.put("username", user.getUsername()); //相当于request.setAttribute("username", username);     map.put("password", user.getPassword());     //构造ModelAndView对象     ModelAndView mav = new ModelAndView("index", map);     return mav; }

3.使用ModelMap绑定

将该对象作为方法的参数,然后将数据绑定到该对象

 //向页面传值的第三种方式  使用ModelMap @RequestMapping("/login3") public String login3(User user, ModelMap mm) {     System.out.println("login3()");     System.out.println(user.getUsername() + " " + user.getPassword());     mm.addAttribute("username", user.getUsername()); //相当于request.setAttribute..     return "index"; }

4.使用Session对象绑定

Session声明周期长于Request.

     //向页面传值的第四种方式  使用Session     @RequestMapping("/login4")     public String login4(User user, HttpSession session) {         System.out.println(user.getUsername() + " " + user.getPassword());         session.setAttribute("username", user.getUsername());         return "index";     }

重定向

若方法返回值是String

在重定向地址前添加"redirect:"

 @RequestMapping("/login.do") public String login() {     return "redirect:index.toIndex.do"; }  @RequestMapping("/toIndex.do") public String toIndex() {     return "index"; }

若方法的返回值是ModelAndView

 @RequestMapping("/login.do") public ModelAndView login() {     RedirectView rv = new RedirectView("toIndex.do");     return new ModelAndView(rw); }  @RequestMapping("/toIndex.do") public String toIndex() {     return "index"; } 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!