SpringMVC笔记==>比较详细(上篇)

中心控制器

Spring的web框架围绕DispatcherServlet设计,而DispatcherServlet的作用是将请求分发到不同的处理器,从Spring2.5开始,使用JAVA5以上的用户一般会使用注解Controller声明方式.
Spring MVC 框架像其它许多MVC框架一样,已请求为 驱动,围绕一个中心分派请求以及使用其它功能,DispatcherServlet实际上是一个Servlet。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

注解方式

  • @Controller :代表这个类会被Spring接管,被接管的这个类中的所有方法,如果返回值是String,并且有具体界面可以进行跳转,那么就会被视图解析器进行解析在这里插入图片描述
    在这里插入图片描述

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

Spring MVC:结果跳转方式

ModelAndView

  • 设置ModelAndView 对象根据view 的名称 和视图解析器跳转到指定的界面
  • 页面=视图解析器前缀+viewname+视图解析器后缀

ServletAPI进行设置,则不需要进行视图解析器

  • 通过HttpServletResponse进行输出
 response.getWriter().print("Servlet API");
  • 通过HttpServletResponse实现重定向
 response.sendRedirect("/xxx.jsp");
  • 通过HttpServletResponse实现请求转发
request.getRequestDispatcher("/路径").forward(request,response);

如果使用SpringMVC来实现请求转发则无需要使用使用视图解析器

  • 将视图解析器注释掉
 return "redirect:/index.jsp";//重定向
return "forward:/index.jsp";   //转发方式二
return "/index.jsp"; //  转发方式一

在这里插入图片描述
在这里插入图片描述

乱码问题

这里博主会单独出一篇文章

什么是JSON

  • JSON是一种轻量级的数据交换格式
  • 采用完全独立于编程语言的文本格式来存储和表示数据
  • 易于阅读易于解析,有效提高网络传输效率
语法格式
  • 对象表示为键值对,数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
    在这里插入图片描述

JSON 是js对象的字符串表示法,它使用文本表示一个js对象,本质是一个字符串

在这里插入图片描述

使用Controller返回JSON数据

  • JackSon是目前比较好的json解析器
  • 工具还有Alibaba的fastjson

添加上jackson的依赖

<!--   添加上jsckson依赖-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.0</version>
        </dependency>
@Controller
public class UserController {
    @GetMapping( "/t2")
    @ResponseBody
    //添加上@ResponseBody注解该方法就不会走视图解析器,直接返回一个字符串
    public String test1(){
        Student student=new Student(1,"家森","纯爷们");
        return student.toString();
    }
}

在这里插入图片描述

现在向前端界面返回的只是一个普通的字符串 ,现在我们想返回有一个容易被解析的JSON数据格式

 public String test1() throws JsonProcessingException {
        ObjectMapper mapper=new ObjectMapper();
        Student student=new Student(1,"家森","纯爷们");
        String str = mapper.writeValueAsString(student);
        return " json格式"+str+"普通字符串"+student.toString() ;
    }

对比看一下

在这里插入图片描述

日期转化

  • 抽取工具类

//自定义工具类
public class JsonUtils {
    //普通类
    public  static  String getJson(Object obj) throws JsonProcessingException {
        ObjectMapper mapper=new ObjectMapper();
        return mapper.writeValueAsString(obj);
    }
    //日期转化类
    public  static  String getJsonDate(Object obj) throws JsonProcessingException {
        ObjectMapper mapper=new ObjectMapper();
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = simpleDateFormat.format(obj);
        return mapper.writeValueAsString(format);
    }
}

*现在我们只需要new一个Date便OK了

        Date date=new Date();
        return JsonUtils.getJsonDate(date);
        //或者直接一步
        return JsonUtils.getJsonDate(new Date());

在这里插入图片描述

使用Alibaba旗下的FastJson

<!--        FastJson依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.70</version>
        </dependency>

在这里插入图片描述

  • 字符串和java对象相互转化
        //java对象转json字符串
        String str = JSON.toJSONString(student);
        //json字符串转java对象
        JSONObject object = JSON.parseObject(str);

不得不说Alibaba还是很OK的

Restful风格

在这里插入图片描述

  • 对比RestFul风格
    在这里插入图片描述
    @GetMapping(value = "/add {a}/{b}")
    public String test2(@PathVariable int a, @PathVariable String b, Model model) {
        System.out.println("test2");
        String res=a+b;
        model.addAttribute("msg","结果为:"+res);
        return "test";
    }
  • @PathVariable 映射 URL 绑定的占位符
    通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过

  • @PathVariable(“xxx”) 绑定到操作方法的入参中。
    一般与@RequestMapping(method = RequestMethod.GET)一起使用

@RequestMapping("/getUserById/{name}")
    public User getUser(@PathVariable("name") String name){
        return userService.selectUser(name);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值