springMVC入门篇

1. 做为spring MVC入门,先以xml配置的方式为例。首先须要配置web工程的web.xml文件。java

<?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_4_0.xsd"
         version="4.0">

    <!--配置监听器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--配置springIoC-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:beans.xml</param-value>
    </context-param>
    
    <!--配置字符编码过滤器-->
    <filter>
        <filter-name>characterEncodingFilter</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>
        <init-param>
            <param-name>forceRequestEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--配置处理器分发器-->
    <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:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--配置分发拦截,/表示全部(除了jsp)-->
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

讨论一下这个文件的配置内容:web

  • 系统变量contextConfigLocation的配置,它会告诉SpringMVC其Spring IoC的配置文件在哪里,这样spring就会找到这些配置文件去加载它们。若是是多个配置文件,能够使用逗号将它们分割开来,而且它还支持正则式匹配,进行模糊匹配,这样就更加灵活了,其默认值为:/WEB-INF/applicationContext.xml.
  • ContextLoaderListener实现了接口ServletContextListener,在web工程初始化以前先完成对Spring IoC容器的初始化,也能够在web工程关闭时完成spring IoC容器的资源进行释放
  • 配置springMVC自带编码过滤器,使用utf-8编码格式
  • 配置DispatcherServlet,而且配置了在服务器启动期间的时候就对其进行初始化
  • 配置DispatcherServlet拦截全部的请求。

2. 配置须要用到的beans.xml(配置spring IoC)spring

<?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"  
       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"> 
    <aop:aspectj-autoproxy/>
    <context:component-scan base-package="com.wise.tiger">  
        <!--过滤掉@Controller注解-->
        <context:exclude filter type="annotation" 
            expression="org.springframework.stereotype.Controller"/>  
    </context:component-scan>  
</beans>  
  • 配置aop自动代理
  • 配置组件自动扫描,对以@Controller标注的组件进行排除(spring IoC一般包含基础架构bean)

3. 配置须要用到的spring-mvc.xml(配置spring mvc)express

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://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/aop
        https://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <mvc:annotation-driven/>
    <context:component-scan base-package="com.wise.tiger.controller"/>
    <!--配置视图解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

这里的配置也比较简单:api

  • 使用注解驱动spring mvc  
  • 定义一个扫描包,用它来扫描加载对应的控制器
  • 定义视图解析器,解析器中定义了前缀和后缀,这样视图就知道去web工程的/WEB-INF/下面的文件夹中找到对应的jsp文件做为视图的响应用户请求。

4. 开发一个简单的Controllerspring-mvc

package com.wise.tiger.controller;  
  
import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.servlet.ModelAndView;  
  
//注解@Controller表示它是一个控制器  
@Controller  
public class FirstController {  
    //映射URI请求为/list.do  
    @RequestMapping("/list.do")  
    public ModelAndView list() {  
        //模型和视图  
        var ret = new ModelAndView();  
        ret.addObject("books", "这是从service中查询到的图书列表信息");  
        //视图名称  
        ret.setViewName("list");  
        return ret;  
    }  
}  

    首先注解@Controller是一个控制器,Spring MVC扫描的时候就会把它做为控制器加载进来。而后@RequestMapping("/list.do")指定了对应的请求的URI,Spring MVC在初始化的时候就会将这些信息解析,存放起来,因而便有了HandlerMapping。当发生请求时,springmvc就会去使用这些信息去找到对应的控制器提供服务。方法定义返回ModelAndView,在方法中,视图名称为list,从配置的视图解析器中会寻找/WEB-INF/list.jsp做为最后的响应。服务器

5. 附gradle依赖架构

dependencies {
    compile group: 'cglib', name: 'cglib', version: '3.2.12'
    compile group: 'org.springframework', name: 'spring-aop', version: '5.1.5.RELEASE'
    compile group: 'org.springframework', name: 'spring-context', version: '5.1.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version: '5.1.5.RELEASE'
    testCompile group: 'org.springframework', name: 'spring-test', version: '5.1.4.RELEASE'
    compile group: 'org.springframework', name: 'spring-jdbc', version: '5.1.5.RELEASE'
    compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
    compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
    compile group: 'org.aspectj', name: 'aspectjweaver', version: '1.9.3'
    compile group: 'org.aspectj', name: 'aspectjrt', version: '1.9.3'
    providedCompile group: 'javax.servlet.jsp', name: 'javax.servlet.jsp-api', version: '2.3.3'
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
    compile group: 'javax.servlet', name: 'jstl', version: '1.2'
}
相关文章
相关标签/搜索