初步学习SpringMVC

(一)Springmvc请求响应模式的演示过程

三层架构:

        浏览器发出一个请求给后端服务器以后,由Servlet处理请求,而Servlet只能接受请求产生响应,并不能进行正真的数据处理,于是我们将他拆分成三层架构,分别为Web(页面数据的收集并产生页面),service(由它进行数据处理),dao(进行数据的持久化,例如存储、查询),通过这样的三层架构,最终可以得到数据并在表现层组织出最终要看的页面,并在该页面反馈给浏览器完成整个调用。

但是也有弊端,因为一个service一次只能处理一次请求,所有就有了全新的开发模式MVC。

MVC:

        将servlet拆成了三个块,当我们现在发送请求的时候先发给控制器,由控制器转发给业务层(service),业务层再调用我们的数据层,最后将得到数据后组织出来形成最终要展示的数据模型,但是光有模型用户是看不了,于是我们将页面(view)抽取出来,由页面和我们的模型配合在一起工作,最终得到的页面反馈给用户

小视频

这样一个servlet就可以做分发了,达到一个servlet就可以处理多个请求,这是jsp技术

异步调用:

       view发生了一些变化,前端我们用HTML、CSS、VUE、ElementUI来构建页面,后端服务器也发生了调整,现在浏览器再发请求过来的话用异步调用的形式调用后端服务器,后端服务器controller调用service,service调用dao,dao返回service返回controller,最后得到model对象(也就是我们需要展示的数据),而model是java对象,不能直接返回页面,于是对model对象进行调整——用json模式,

       

(二)SpringMVC概述

SpringMVC是一种基于Java实现MVC模型的轻量级Web框架

优点:使用简单,开发便捷(相比于Servlet),灵活性强

(三)入门案例

1.创建web工程(Maven结构)

2.导入坐标(SpringMVC+Servlet)

 <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
  </dependency>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>8</source>
          <target>8</target>
        </configuration>
      </plugin>
    </plugins>
3.定义处理请求功能类(UserController)

3.1建一个新的包com.gcxy.config配置类,并创建一个类,名为SpringMvcConfig

package com.gcxy.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@ComponentScan("com.gcxy.controller")
@Configuration
public class SpringMvcConfig {
}

@ComponentScan("包名")这个注释的作用是扫描,加这个包名的意思在这个包下都是处理请求的,扫描这个包下的类

3.2建一个com.gcxy.controller,在包内创建一个类,名为:UserController

package com.gcxy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UserController {

    @RequestMapping("/save")
    public void save(){
        System.out.println("user save");
    }
}

@RequestMapping是做映射,后面可以通过请求save调用该方法

4.设置请求映射(配置映射关系)

再在controller包下创建名为ServletControllerConfig类

package com.gcxy.config;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

public class ServletControllerConfig extends AbstractDispatcherServletInitializer {

    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}
createServletApplicationContext下加载SpringMVC对应的容器对象,通过AnnotationConfigWebApplicationContext初始化容器对象,再用register方法将你的配置注册到容器中,然后返回回去,一旦tomcat一启动就会将这个容器装入到tomcat中,这样在tomcat中访问到springmvc容器了
getServletMappings在Springmvc里面做处理的方法 ,createRootApplicationContext()方法的作用是加载除了springmvc以外的spring容器对应的内容的

createRootApplicationContext加载Spring对应的容器对象
5.设置tomcat服务器,加载web工程(tomcat插件)

点击ok

最后再点击ok就配置成功了

6.启动项目

首先看到的是这个页面

然后在浏览器那里加一个save回车

只要tomcat中出现user save...就说明执行成功了

7.如果想改上面的错误可以修改UserController类的代码
package com.gcxy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserController {

    @RequestMapping("/save")
//    public void save(){
//        System.out.println("user save");
//
//    }
    @ResponseBody
    public String save(){
        System.out.println("user save...");
        return "{'info':'springmvc'}";
    }

}

我们在这里返回了一个json数据,其中@ResponseBody注解的作用是告诉springmvc这个返回的是数据,不是页面,再运行后就修正了错误,得到下图

  • 29
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值