美文网首页
一起来学习SpringMVC:SpringMVC入门

一起来学习SpringMVC:SpringMVC入门

作者: __y | 来源:发表于2018-06-08 16:31 被阅读264次

    1.SpringMVC 是什么

    SpringMVC和Struts2类似,都属于表现层的框架,它是Spring框架的一部分。相比于Struts2,SpringMVC运行速度较快,配置的内容较少(Struts2需要配置Struts2.xml文件),比较轻量级,而且是比较流行的框架之一

    2.SpringMVC快速入门

    导入相关的jar包

    • org.springframework.context-3.0.5.RELEASE.jar

    • org.springframework.expression-3.0.5.RELEASE.jar

    • org.springframework.core-3.0.5.RELEASE.jar

    • org.springframework.beans-3.0.5.RELEASE.jar

    • org.springframework.asm-3.0.5.RELEASE.jar

    • commons-logging.jar

    • org.springframework.web-3.0.5.RELEASE.jar

    • org.springframework.web.servlet-3.0.5.RELEASE.jar

    配置web.xml分发器

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
        <!-- spring mvc的配置
            配置DispatcherServlet 这个类接管所有请求。
       -->
        <servlet>
            <servlet-name>DispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:mvc-servlet.xml</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>DispatcherServlet</servlet-name>
            <url-pattern>*.action</url-pattern>
        </servlet-mapping>
    </web-app>
    

    添加SpringMVC配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
        <bean class="cn.springmvc.controller.HelloController"/>
        <!-- 配置handerAdapter  适配器 -->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
        <!-- 配置视图渲染器 -->
        <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- 将视图名 渲染后视图的前缀 -->
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <!-- 渲染后视图的后缀 -->
            <property name="suffix" value=".jsp"/>
            <!-- 例:视图名为:hello   渲染后:/WEB-INF/jsp/hello.jsp 该页面-->
        </bean>
    
    </beans>
    

    编写Controller(控制器)

    package cn.springmvc.controller;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class HelloController implements Controller{
        @Override
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            //调用类来处理
            System.out.println("----- Hello Controller-----");
            //创建一个ModelAndView对象  该对象最后被视图渲染器渲染为指定视图
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("hello");
            return modelAndView;
        }
    }
    
    

    结果

    image.png

    3使用注解开发

    上文我们看到是用bean来管理Controller,当我们项目到达一定复杂度的时候不利于我们管理和维护,所以平时开发我们建议用注解的方式开发
    在web.xml中添加这句

      <!-- spring容器扫描指定包下的所有类,如果类上有注解  那么根据注解产生相应bean对象已经映射信息 -->
        <context:component-scan base-package="cn.springmvc.controller"/>
    

    Controller

    @Controller
    public class HelloController {
        @RequestMapping(value = "/hello")
        public ModelAndView hello() {
            ModelAndView mv = new ModelAndView();
            mv.setViewName("hello");
            mv.addObject("msg", "annotation ------");
            return mv;
        }
    
    }
    

    结果

    image.png

    4.SpringMVC的处理流程

    image.png
    • 用户发送请求
    • 请求交给核心控制管理器处理
    • 处理器找到一个或者多个HandlerMapping,找到处理请求的Controller,然后将请求提交到对应的Controller处理
    • Controller调用完业务处理逻辑后,返回ModelAndView
    • ModelAndView通过试图渲染器的解析后,将结果返回到对应的JSP/Html页面

    相关文章

      网友评论

          本文标题:一起来学习SpringMVC:SpringMVC入门

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