美文网首页
Study of SpringMVC

Study of SpringMVC

作者: ErCargo | 来源:发表于2016-12-13 00:07 被阅读68次

    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

    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包部署到工程里。


    文件目录 lib下的jar包
    报错2

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

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

    报错原因分析:如图:


    原因分析

    报错3:

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

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

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

    HandlerMapping

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

    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/hello.form">helloController</prop>
        </props>
    </property>
    </bean>
    <!-- Controller组件 -->
    <bean id="helloController" class="org.com.Controller.HelloController"></bean>
    

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

    Dispatcher Servlet

    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
                  org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <!-- 指定XML配置文件,初始化时加载 -->
        <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
       <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.form</url-pattern>
       </servlet-mapping>
    

    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!");
        }
    }
    
    <!-- Controller组件配置到spring-mvc.xml中 -->
    <bean id="helloController" class="org.com.Controller.HelloController"></bean>
    

    ModelAndView

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

    ViewResolver

    视图解析器

    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    

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

    启动Tomcat服务器

    @RequestMapping

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

    @Controller

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

    相关文章

      网友评论

          本文标题:Study of SpringMVC

          本文链接:https://www.haomeiwen.com/subject/czkvmttx.html