03.springMVC

SpringMVC介绍

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等

总结:

1.SpringMVC是spring框架后续开发的web模块,主要负责与前端用户进行交互

2.springMVC基于servlet进行开发的框架,目的简化前后端的调用

知识回顾:

Servlet(Servlet),全称Java Servlet.是用java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态web内容.狭义的servlet

是指java语言实现一个接口,广义的servlet是指任何实现了这个servlet接口的类,一般情况下,人们将servlet理解为后者

servlet是java针对前后端交互,开发的一种调用的机制

sevlet弊端:

1.一个业务需求 就需要准备一个Servlet 数量繁多

2.需要编辑大量的配置文件 web.xml 开发繁琐

3.从servlet中获取的参数都是String数据类型,需要手动的转化类型

3.servlet只提供了get/post请求类型,不满足当下的需求

SpringMVC入门案例:

注意事项

1.开发路径的编辑

2.现在开发一般都使用前后端分离的方式,所以后端服务器返回的一般都是json串

3.每次编辑完成代码,都需要重启tomcat服务器

package com.jt.controller;

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

@Controller  //springMVC专门扫描的注解
public class HelloController {
   

    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
   
        return "您好SpringMVC";
    }
}
//测试访问结果:http://localhost:8080/hello

springMVC注解说明

@RequestMapping(“/hello”)

作用:负责用户的请求路径与后台服务器之间的映射关系

如果请求路径不匹配,则用户报错404

@ResponseBody

作用:将服务器的返回值转化为json串,返回JSON串,JSON本质是字符串

案例二:

package com.jt.controller;

import com.jt.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller  //springMVC专门扫描的注解
public class HelloController {
   

    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
   
        return "您好SpringMVC";
    }

    @RequestMapping("/userpojo")
    @ResponseBody
    public User pojoUser(){
   
        User user = new User();
        user.setId(101);
        user.setName("您好SpringMVC");
        return user;
    }
}
SpringMVC重要组件

1.前端控制器 DispatcherServlet

2.处理器映射器 handlerMapping

3.处理器适配器 handlerAdapter

4.视图解析器 ViewResolver

spring调用流程:

1.用户发起请求之后,第一步访问就是前端控制器

2.前端的控制器只负责请求的转发/响应,没有办法直接处理业务.

3.当spring容器启动时,处理器映射器,首先会加载所有的@RequestMapping注解,将请求路径与方法进行绑定,保存到Map中.

保存的结构是:Map</url,method方法>,当前端控制器发送请求被 处理映射器接收,如果URL地址匹配,则告知应该执行哪个方法,如果URL地址不匹配,则提示用户404错误

4.前端控制器得知将要执行的方法是谁,但是前端控制器只能转发,没有办法执行业务,所以请求处理器适配器执行业务逻辑

5.处理器适配器针对配置文件(xml方式/注解方式/其它方式)的格式挑选合适的处理器去执行业务逻辑业务执行成功之后返回ModelAndView对象,包含两部份,一部分是业务数据,一部分是页面数据(Model:业务数据 View:页面)

历史版本:需要返回页面名称,及将数据填充到页面中

6.前端控制器接收到返回的ModelAndView之后,交给视图解析器去解析数据,视图解析器通过自身的配置获取页面的名称

7.最终通过经过视图渲染,将数据填充到页面中,最终用户看到的页面就包含业务数据

现在的版本:前后端分离的方式

关键用法:@ResponseBody要求返回业务数据,并且转化为JSON串,程序直接跳过6和7步直接将数据返回给用户

springMVC参数接收用法

入门案例:

简单数值传参:
package com.jt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class UserController {
   
    /*
        URL:http://localhost:8080/user/findUser?id=100&name=tomcat
        类型:get请求
        返回值:String id:name
     */
    @RequestMapping("/user/findUser")
    @ResponseBody   //响应数据,返回JSON串,如果是字符串,返回字符串本身
    public String findUser(HttpServletRequest request, HttpServletResponse response) {
   
        //servlet方法的取值方式
        String id = request.getParameter("id");
        int intId = Integer.parseInt(id);
        String name = request.getParameter("name");
        //response.getWriter().write(id);
        return intId+":"+name;
    }
    
    /*
      URL:http://localhost:8080/user/findUser?id=100&name=tomcat
      类型:get请求
      规则:springMVC中的参数名称,必须与传递参数名称一致
      返回值:String id:name
   */
    @RequestMapping("/user/findUser2")
    @ResponseBody   //响应数据,返回JSON串,如果是字符串,返回字符串本身
    public String findUser2(Integer id, String name) {
   
        //用spring框架的方式取值
        return id+":"+name;
    }
}
使用对象接收参数:
package com.jt.controller;

import com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guan_xfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值