SpringMVC详解笔记-上

springMVC是spring提供的一个子框架,是为web层提供的一个框架,实现了mvc思想所以又被称为MVC框架,可以和spring无缝连接到一起。我们将3大框架整合完成业务开发(SSM框架)

SpirngMVC的执行流程:

tomcat启动->加载web.xml->配置前端控制器dispaterServlet(拦截所有的访问服务请求)->加载springmvc的核心文件(加载resource/springmvc文件)->包扫描(类放入IOC容器中)->映射器配置(浏览器地址与类中方法做映射绑定)->加载适配器(N个处理器)->加载视图解析器

访问->前端控制器拦截(主要作用处理Controller类)->找springmvc,通过加载的适配器处理器找到映射关系->从容器中找到对象方法,前端控制器对目标方法调用->结果返回给前端控制器->将结果加载到视图解析器->拼接处页面地址给前端控制器->前端控制器最终请求转发访问该页面地址
SpringMVC详解笔记-上_第1张图片

SpirngMVC的组件

1.DispatcherServlet:前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性

2.< mvc:annotation-driven >

自动加载映射器和适配器 简化开发

3.视图解析器

springxml中配置


<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    
    <property name="prefix" value="/jsp/">property>
    
    <property name="suffix" value=".jsp">property>
bean>

常用注解

@Controller
//供spring容器扫描识别
@RequestMapping(value = "/user")
//映射浏览器地址路径的
/*
	1 可以配置在类上,也可以配置在方法上,为了区分模块方法
    2 属性可以使用value也可以使用path
    3 默认接受所有访问的提交方式(post,get,delete,put..)但是也可以指定请求方式
    //method = RequestMethod.POST  method = RequestMethod.GET
    4 默认请求参数可有可无 但是也可以指定页面必须传递某些参数
    //params={"参数1","参数2"}
*/

@RequestParam(defaultValue = "1")
//给参数一个默认值

@RequestBody //将前端返回的json自动封装转化为java对象
@ResponseBody //封装为json
//响应必须为json数据加@ResponseBody
//接受如果不为json不用加@RequestBody转化

#### 范例
webxml中配置前端控制器

```xml
<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:springmvc.xml</param-value>
            <!--classpath为springmvc。xml的地址-->
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
        <!--/为对所有文件进行拦截,但不拦截jsp文件-->
    </servlet-mapping>

pom中引入依赖

<dependencies>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>5.1.5.RELEASEversion>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>5.1.5.RELEASEversion>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webartifactId>
            <version>5.1.5.RELEASEversion>
        dependency>

        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.12version>
        dependency>

        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.9.0version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-coreartifactId>
            <version>2.9.0version>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-annotationsartifactId>
            <version>2.9.0version>
        dependency>
    dependencies>

springmvc.xml中配置

	
    <mvc:default-servlet-handler>mvc:default-servlet-handler>

    
    <context:component-scan base-package="com.itxxxx.web">context:component-scan>

    
    <mvc:annotation-driven>mvc:annotation-driven>

    
   

java类中执行

@Controller
@RequestMapping(value = "/user")
public class UserController {
    @RequestMapping(value = "/hello")  //json数据--@requestBody--java对象
    public @ResponseBody List<String> hello3(@RequestBody User user){
        System.out.println(user);

        List<String> list=new ArrayList();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        return list; //返回ajax         //java对象--@ResponseBody---json数据

    }

}

你可能感兴趣的:(Spring,spring,springmvc)