Study of SpringMVC

SpringMVC

What is Spring MVC

MVC:
M-Model 业务逻辑,包含业务数据和业务处理逻辑,如实体类、DAO、Service;
V-View 负责显示界面和用户交互;
C-Controller 控制流程,Servlet中的单一控制器ActionServlet

The Core of Spring MVC

DispatcherServlet: 控制器请求入口
HandlerMapping: 控制器请求派发
Controller :控制器,请求处理流程
ModelAndView: 封装业务处理结果和视图
ViewResolver: 视图显示处理器

The Processing of SpringMVC

1、浏览器向Spring发出请求,请求交给前端控制器(DispatcherServlet)处理;
2、控制器通过HandlerMapping 找到相应的Controller组件处理请求;
3、执行Controller组件约定方法处理请求,在约定方法调用模型组件完成业务处理,约定方法可以返回一个ModelAndView 对象,封装了处理结果数据和视图名称信息
4、控制器接收ModelAndView之后,调用ViewResolver组件,定位View(JSP)并传递数据信息,生成响应界面结果

How to Build the Environment of SpringMVC

Study of SpringMVC_第1张图片
MyProject

1、创建WebProject,导入Spring Web MVC 相关开发包
Spring API, web, webmvc等;
jar包真的很重要,报错80%的原因归结于jar包。
报错1:

java.lang.ClassNotFoundException: org.springframework.context.EnvironmentAware

原因分析:
1、spring-web相关的jar包没导进去,添加
2、jar包有冲突,把重复的jar包删除
3、Tomcat启动时默认的读取的是/WEB-INF下的配置文件,如果配置文件在src中要把路径改为类路径底下
4、由于工程是部署在服务器底下的,所以要把加入的jar包部署到工程里。


Study of SpringMVC_第2张图片
文件目录
Study of SpringMVC_第3张图片
lib下的jar包

Study of SpringMVC_第4张图片
报错2

加载jar包后,记得要Refresh!
报错2:

java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor.(Lorg/springframework/core/io/ResourceLoader;)V

报错原因分析:如图:


Study of SpringMVC_第5张图片
原因分析

报错3:

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

原因分析:需要加载spring-webmvc包,并且要找到相应的版本(检查web.xml文件的配置,jar包版本等)

2、 在src下添加Spring的xml配置文件

HandlerMapping

配置文件中对HandlerMapping组件进行配置,通过HandlerMapping组件,DispatcherServlet控制器可以将客户Http请求映射到Controller组件



    
        helloController
    




3、 在web.xml中配置DispatcherServlet组件

Dispatcher Servlet



    springmvc
    
              org.springframework.web.servlet.DispatcherServlet
    
    
    
            contextConfigLocation
            classpath:spring-mvc.xml
        
        1
    
   
    springmvc
    *.form
   

Controller

Controller组件负责执行具体的业务处理,可调用DAO等组件

public class HelloController implements Controller {
    //Controller组件约定handleRequest方法执行后返回一个ModelAndView
    //对象,该对象封装模型数据和视图名
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp){
        System.out.println("受理请求!");
        return new ModelAndView("Hello!");
    }
}


ModelAndView

ModelAndView对象用于封装模型数据和视图响应信息

ViewResolver

视图解析器


    
    

项目部署到Tomcat服务器后,启动Tomcat得到:

Study of SpringMVC_第6张图片
启动Tomcat服务器

@RequestMapping

@RequestMapping用在类定义和方法定义,用于标注该类或方法与哪个客户请求对应;

@Controller

@Controller用于声明Controller组件,这样可以使得Controller定义更加灵活,可以不用实现Controller接口,请求处理的方法也可以灵活定义。

你可能感兴趣的:(Study of SpringMVC)