SpringMVC学习二、入门程序与组件

入门程序

  1. 搭建环境

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <spring.version>5.0.2.RELEASE</spring.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
    
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
    
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
    
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
    
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
    
    </dependencies>
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 加载Spring的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!-- -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <!-- 发送任何请求都会经过Servlet-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <!-- springMVC自带过滤器-->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           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
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context.xsd">
    
    </beans>
    <!-- 开启注解扫描-->
    <context:component-scan base-package="cn.imut"/>
    <!-- 视图解析器-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 文件所在目录-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 文件的后缀名-->
        <property name="suffix" value=".jsp"/>
    </bean>
    <!-- 开启SpringMVC注解支持-->
    <mvc:annotation-driven/>
    
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  2. 编写程序

    //控制器
    @Controller
    public class HelloController {
    
        @RequestMapping(path = "/hello")
        public String sayHello() {
            System.out.println("Hello StringMVC!");
            return null;
        }
    }

使用springMVC必须配置的三大件:

处理器映射器、处理器适配器、视图解析器

通常,我们只需要手动配置视图解析器,而处理器映射器处理器适配器只需要开启注解驱动即可,而省去了大段的xml配置

过程

  1. 启动服务器,加载配置文件
    1. DispatcherServlet对象被创建
    2. springmvc.xml被加载
    3. HelloController被创建成对象
  2. 发送请求,后台处理请求

组件:

SpringMVC框架基于组件方式执行流程

@RequestMapping

@RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

属性:
  • value:用于指定请求的URL。他和path属性的作用时一样的
  • method:用于指定请求的方式
  • params:用于指定限制请求参数的条件

控制器Controller:

  • 控制器提供访问应用程序的行为,通常通过接口定义或者注解定义两种方式实现
  • 控制器负责解析用户的请求并将其转换为一个模型
  • 一个控制器可以包含多个方法
  1. 实现Controller接口

    //定义控制器
    //注意点:不要导错包,实现Controller接口,重写方法;
    public class ControllerTest1 implements Controller {
    
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            //返回一个模型视图对象
            ModelAndView mv = new ModelAndView();
            mv.addObject("msg","Test1Controller");
            mv.setViewName("test");
            return mv;
        }
    }
    <bean name="/t1" class="com.kuang.controller.ControllerTest1"/>
  2. 注解

    @Controller注解类型用于声明Spring类的实例是一个控制器

    Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组件扫描。

    <!-- 自动扫描指定的包,下面所有注解类交给IOC容器管理 -->
    <context:component-scan base-package="com.kuang.controller"/>
    //@Controller注解的类会自动添加到Spring上下文中
    @Controller
    public class ControllerTest2{
    
        //映射访问路径
        @RequestMapping("/t2")
        public String index(Model model){
            //Spring MVC会自动实例化一个Model对象用于向视图中传值
            model.addAttribute("msg", "ControllerTest2");
            //返回视图位置
            return "test";
        }
    
    }

猜你喜欢

转载自www.cnblogs.com/yfyyy/p/12433526.html