SpringMvc是基于过滤器对servlet进行了封装的一个框架,我们使用的时候就是在web.xml文件中配置DispatcherServlet类;SpringMvc工作时主要是通过DispatcherServlet管理接收到的请求并进行处理。
/**
* 返回的是一个ModelAndView
* @param username 页面传递的用户名
* @param password 页面传递过来的密码
* @return
*/
@RequestMapping(“login2.do”)
public ModelAndView login2(String username,String password){
if (“admol”.equals(username)) {
System.out.println(username +" 登录成功2");
return new ModelAndView(“loginSuccess”);//逻辑视图名 跳转页面默认为转发
}
return new ModelAndView(“redirect:/jsp/loginError”);//以重定向的方式
}
/**
* 传递一个JAVABEAN对象给控制器
* @param users bean对象
* @return
*/
@RequestMapping(value="login3.do",method=RequestMethod.POST)
public ModelAndView login3(@ModelAttribute("users") Users users){
if ("admol".equals(users.getUsername()) && "123".equals(users.getPassword())) {
System.out.println(users.getUsername() +" "+ users.getPassword());
return new ModelAndView("loginSuccess");
}
return new ModelAndView("redirect:/jsp/loginError.jsp");//以重定向的方式
}
(全文左右滑动查看完整代码~)
二
优点:
1:完全基于接口编程,真正实现了视图无关。除了jsp,还可以使用Velocity和xstl或其他视图技术,甚至是自定义的视图技术–只需要简单的实现view接口
2:Spring MVC框架以DispatchServlet为核心控制器,该控制器负责拦截用户的所有请求
3:Spring MVC所有控制器都必须实现Controler接口,该接口定义了ModelAndView handleRequest(request,response)方法,通过实现该接口实现用户的业务逻辑控制。
缺点:
1:Spring与MVC 的Servlet API 耦合,难以脱离容器独立运行
2:太过于细分,开发效率低
3:过度追求完美,有过度设计的危险
package com.wjl.bean;
/**
-
@author Admol
*2015年1月3日
*/
public class Users {private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
三
流程
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet调用HandlerAdapter处理器适配器
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
四
DispatcherServlet
DispatcherServlet是整个Spring MVC的核心。
它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:
1、截获符合特定格式的URL请求。
2、初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
3、初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。