首页 > 编程语言 > 详细

SpringMvc框架

时间:2019-03-28 12:20:08      阅读:124      评论:0      收藏:0      [点我收藏+]
  • 什么是SpringMvc
    • 是spring框架的一个模块,springmvc和spring之间不需要中间整合层进行整合
    • 是一个基于mvc的web框架
      • mvc是一个设计模式
      • mvc在b/s系统下的应用
        • M:模型,包括pojo、action、service、dao
        • V:视图
        • C:控制器,接收用户的请求、响应
    • 前端控制器(DispatcherServlet)
      • 作用:接收请求,响应结果,  相当于转发器
    • 处理器映射器(HandlerMapping)
      • 作用:根据请求的url查找Handler
    • 处理器适配器(HandlerAdapter)
      • 作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
      • 注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才能正确执行Handler
    • 视图解析器(View resolver)
      • 作用:进行时图解析,根据逻辑视图名解析成真正的视图(View)
    • 视图(View)
      • View是一个接口,实现类支持不同的View类型
  • 入门
    • 导入spring-webmvc-4.3.5.RELEASE.jar
    • 若报错ClassNotFoundException: org.springframework.web.context.WebApplicationContext,导入spring-web-4.3.5.RELEASE.jar
    • Handler编写和调试
      <?xml version="1.0" encoding="UTF-8" ?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:mvc="http://www.springframework.org/schema/mvc"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="
              http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/mvc
              http://www.springframework.org/schema/mvc/spring-mvc.xsd">
      
          <!-- 配置Handler -->
          <bean class="cn.muriel.auto.controller.UserController" name="/userController.action"/>
          <!-- 配置处理器映射器 -->
          <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
          <!-- 配置处理器适配器 -->
          <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
          <!--
              配置视图解析器
              解析jsp解析,默认使用jstl标签
          -->
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
      </beans>
      
      
      
      public class UserController implements Controller {
      
      
          @Override
          public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
      
              ApplicationContext applicationContext = new ClassPathXmlApplicationContext("service/service.xml");
              UserService userService = (UserService) applicationContext.getBean("userService");
              userService.selectAllUser();
      
              ModelAndView modelAndView = new ModelAndView();
              //如果不设置ViewName的话,就会404加参数
              //如果url错误就报404
              modelAndView.setViewName("WEB-INF/jsp/userList.jsp");
              return modelAndView;
          }
      }

       

    • 非注解的处理器映射器
        <!-- 配置Handler -->
          <bean class="cn.muriel.auto.controller.UserController" name="/userController.action" id="userController"/>
          <!-- 配置处理器映射器 -->
          <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
        <!--
              多个映射器可以并存,前端控制器判断url能让那些映射器映射,就让正确的映射器处理
              所有的映射器都实现HandlerMapping接口
          -->
      <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
              <property name="mappings">
                  <props>
                      <prop key="/userController.action">userController</prop>
                  </props>
              </property>
          </bean>

       

       

    • 非注解的处理器适配器
       <!-- 配置处理器适配器,实现Controller接口 -->
          <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
      
      public class UserController implements Controller {
      
      
          @Override
          public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
      
            
          }
      }

       

    • 注解处理器映射器和处理器适配器
      • 使用注解的映射器不用在xml中配置url和handler的映射关系。注解的处理器映射器和处理器适配器必须成对使用
        <!-- 配置Handler,配置单个handler -->
        <bean class="cn.muriel.auto.controller.FoodController" />
        <!-- 注解开发中建议使用组建扫名描,进行handler扫描配置 -->
            <context:component-scan base-package="cn.muriel.auto.controller"/>
        
        <!--
                注解映射器
                在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器
                在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器
             -->
            <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
            <!-- 注解适配器 -->
            <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
        
            <!--
                mvc:annotation-driven代替上边注解映射器和注解适配器配置,
                它默认加载很多的参数绑定方法
             -->
            <mvc:annotation-driven></mvc:annotation-driven>
        
        
        //使用Controller标识它是一个控制器
        @Controller
        public class FoodController  {
        
            //一般建议将url和方法写成一样,控制器映射器
            @RequestMapping("/selectAllFood")
            public ModelAndView selectAllFood(){
        
                ModelAndView modelAndView = new ModelAndView();
                modelAndView.setViewName("WEB-INF/jsp/foodList.jsp");
                return modelAndView;
            }
        
        
        
        }

         

    • 视图解析器
       <!--
              配置视图解析器
              解析jsp解析,默认使用jstl标签
          -->
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <!-- 配置Jstl,若与mvc:annotation-driven不需要配置,
              <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> -->
              <!-- 配置前缀 -->
              <property name="prefix" value="WEB-INF/jsp/"/>
              <!-- 配置后缀  -->
              <property name="suffix" value=".jsp"/>
          </bean>
      
      
      //使用Controller标识它是一个控制器
      @Controller
      public class FoodController  {
      
          //一般建议将url和方法写成一样,控制器映射器
          @RequestMapping("/selectAllFood")
          public ModelAndView selectAllFood(){
      
              ModelAndView modelAndView = new ModelAndView();
              //因为在springmvc.xml中配置了前缀和后缀,所以原格式WEB-INF/jsp/foodList.jsp可以改为foodList
              modelAndView.setViewName("foodList");
              return modelAndView;
          }
      
      
      
      }

       

SpringMvc框架

原文:https://www.cnblogs.com/fatRabbit-/p/10547797.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!