Spring MVC(一) 简介

Spring MVC


简介

作用:用于开发Java Web程序,搭建MVC结构。

Spring Web MVC具体实现

Spring Web MVC的底层实现过程

Spring Web MVC使用

  1. 搭建Spring Web MVC框架环境

    • 引入spring ioc、webmvc核心包
    • 引入applicationContext.xml
  2. 根据需求设计一个流程

需求:发出一个hello.do,响应一个hello.jsp界面

流程:hello.do–DispatcherServlet–>HandlerMapping–>HelloController–>ViewResolver–>/hello.jsp

  1. 编写HelloController和hello.jsp

    • HelloController要实现Controller接口,实现约定handleRequest方法
    • HelloController返回ModelAndView,包含视图名和视图需要的数据

      public class HelloController implements Controller{
      
          public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
              System.out.println("调用M模型组件,DAO/Service");
      //      Map<String, Object> data = new HashMap<String, Object>();
      //      data.put("msg", "Spring Web MVC示例");
      //      data.put(key, value)
      //      ModelAndView av = new ModelAndView("hello",data);
              ModelAndView av = new ModelAndView();
              av.setViewName("hello");
              av.getModel().put("msg","Spring Web MVC示例");
              return av;
          }
      
      }
      
  2. 配置流程

    • 配置DispatcherServlet

        <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>
          org.springframework.web.servlet.DispatcherServlet
          </servlet-class>
          <!-- 指定spring容器配置文件,contextConfigLocation约定名 -->
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:applicationContext.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
        </servlet>
      
        <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>*.do</url-pattern>
        </servlet-mapping>
      
    • 配置HandlerMapping

      <bean id="handlerMapping" 
          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
          <property name="mappings">
              <props>
                  <!-- <prop key="请求">Controller对象id</prop> -->
                  <prop key="hello.do">helloController</prop>
              </props>
          </property>
      </bean>
      
    • 配置HelloController

      <bean id="helloController" class="com.xdl.web.controller.HelloController">
      </bean>
      
    • 配置ViewResolver

      <bean id="viewResolver" 
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <!-- 指定视图文件位置 -->
          <property name="prefix" value="/WEB-INF/"></property>
          <!-- 指定视图文件类型 -->
          <property name="suffix" value=".jsp"></property>
      </bean>
      

Spring Web MVC扩展案例(列表显示)

需求:发出一个list.do请求,显示一个部门列表list.jsp

  1. 设计

    list.do–>DispatcherServlet–>HandlerMapping–>ListController–>ViewResolver–>list.jsp

  2. 编写ListController和list.jsp

  3. 配置MVC流程

    • 配置HanlderMapping组件的mappings属性
    • 配置ListController

Spring Web MVC注解配置

  • XML配置

  • 注解配置

与XML配置不同点:1.采用RequestMappingHandlerMapping、2.取消Controller接口约定

  1. RequestMapping配置如下

    <!-- 配置HandlerMapping -->
    <mvc:annotation-driven />
    
  2. Controller组件编写如下

    @Controller
    public class HelloController{
    
        /**
         * 处理请求方法,自动调用
         * ModelAndView:封装模型数据和视图名信息
         */
        @RequestMapping("/hello.do")
        public ModelAndView execute() throws Exception {
            System.out.println("调用M模型组件,DAO/Service");
            ModelAndView av = new ModelAndView();
            av.setViewName("hello");
            av.getModel().put("msg","Spring Web MVC示例");
            return av;
        }
    
    }
    
  3. Controller配置如下

    <!-- 配置Controller -->
    <context:component-scan base-package="com.xdl"/>
    
  4. 其他DispatcherServlet和ViewResolver与XML配置相同

猜你喜欢

转载自blog.csdn.net/a2011102394/article/details/75578342