SpringMVC学习06:Controller配置总结

SpringMVC学习06:Controller配置总结

  • 控制器:Controller:

    • 控制器负责提供访问应用程序的行为,通常通过接口定义注解定义【推荐】2种方法实现;

    • 控制器负责解析用户的请求并将其转换为一个模型(Model)

    • 在SpringMVC中,一个控制器类可以包含多个方法;

    • 在SpringMVC中,对于Controller的配置方式有很多种;

 

  • 实现Controller接口:

    • Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法:

      //实现该接口的类获得控制器功能
      public interface Controller {
        //处理请求并且返回一个模型与视图对象
        ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;

      }
    • 测试:

    • 1,新建一个Module:添加web支持,编写web.xml中DispatcherServlet配置文件;

    • 2,新建springmvc-servlet.xml配置文件:

      • 配置文件中添加注解:扫描包:<context:component-san />

      • 添加注解:<mvc:annotation-driven/ >

      • 添加过滤静态资源注解:<mvc:default-servlet-handler/ >

      <?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:context="http://www.springframework.org/schema/context"
            xmlns:mvc="http://www.springframework.org/schema/mvc"
            xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            https://www.springframework.org/schema/mvc/spring-mvc.xsd">



         <!--   注解方式:扫描包-->
         <context:component-scan base-package="com.ljxdemo.controller"/>

         <!--处理器适配器,处理器映射器-->
         <mvc:annotation-driven/>
         <!--过滤静态资源-->
         <mvc:default-servlet-handler/>


         <!--视图解析器-->
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
             <property name="prefix" value="/WEB-INF/jsp"/>
             <property name="suffix" value=".jsp"/>
         </bean>

      </beans>
    • 3,新建JSP文件夹:新建test.jsp

    • 4,新建ControllerTest类,实现Controller接口;

      //只有实现了Controller的类,说明这就是一个控制器
      public class ControllerTest1 implements Controller {

         public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
             ModelAndView mv = new ModelAndView();

             mv.addObject("msg","demo");
             mv.setViewName("hello");

             return  mv;
        }
      }
    • 5,配置Tomcat,启动测试;

       

 

 

  • 注解方式实现Controller:

    • 常见注解:

      @Component   组件
      @Service     service层
      @Controller  控制层
      @Repository  dao层
    • 注解实现Controller:

      //@Controller代表这个类会被Spring接管:这个注解的类中的所有方法:
      // 如果返回值是String,并且有具体页面可以跳转,那么就会被视图解析器解析;
      @Controller
      public class ControllerTest2 {

         @RequestMapping("/t1")
         public String doneT1(Model model){
             model.addAttribute("msg","demo11");
             return "hello";
        }

         @RequestMapping("/t2")
         public String doneT2(Model model){
             model.addAttribute("msg","demo22");
             return "hello";
        }
      }
    • 可以发现,我们的2个请求都可以指向同一个视图,但是页面的结果是不一样的,从这里可以看出视图是被复用的,而控制器与视图直接是弱耦合关系;

       

 

 

 

posted @ 2022-04-15 11:17  gzs1024  阅读(216)  评论(0)    收藏  举报