posts - 609,  comments - 13,  views - 64万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1、代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.jay.controller;
 
import com.jay.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
 
//使用注解自动装配
@Controller
//一级目录,这个Controller下的所有视图访问的时候都要拼接/home
public class HelloController {
    //访问路径
    //@RequestMapping("/hello")
    @GetMapping("/hello/{a}/{b}")//get请求,restful风格的url
    //@PostMapping("/hello/{a}/{b}")//post请求
    //restful风格的路径,简洁、高效(支持缓存)、安全(隐藏参数名)
    public String hello(@PathVariable int a, @PathVariable int b, Model model) {
        int c = a + b;
        model.addAttribute("c", c);
        //Model用来存储视图数据,jsp页面可以直接取出
        model.addAttribute("msg", "Hello SpringMVCAnnotation!");
//        return "hello";//视图名
        //没有视图解析器时,用下面三种方法跳转
//        return "/WEB-INF/view/hello.jsp";//视图路径
//        return "forward:/WEB-INF/view/hello.jsp";//转发
        return "redirect:/test";//重定向到指定的url
//        return "redirect:/index.jsp";//重定向到指定的jsp页面
        //注意路径,斜杠/直接到webapp目录下
    }
 
    //http://localhost:9091/hello/1/2
    @RequestMapping("/test")
    public String test(Model model) {
        model.addAttribute("msg", "test xxxxxx");
//        return "/WEB-INF/view/test.jsp";//没有视图解析器的方式
        return "test";
    }
 
    //如果多个视图,写多个hello这样的方法就可以了,不用每个都写一个servlet。
    @RequestMapping("/test1")
    public String test1(@RequestParam("username") String username, Model model) {
        //@RequestParam配置前端参数只能传username,否则报错
        model.addAttribute("msg", username);
        return "test1";
    }
    //http://localhost:9091/test2?age=19&id=1&username=jay
    @RequestMapping("/test2")
    public String test2(User user, Model model) {
        //使用对象接收前端参数,会自动绑定到user对应的属性中
        model.addAttribute("msg", user.toString());
        return "test2";
    }
}

 json使用,jackson和fastjson包 https://www.cnblogs.com/dmego/p/9033080.html

1
2
3
4
5
6
7
@RequestMapping("/test4")
    @ResponseBody//不使用视图解析器,直接返回字符串
    public String test4() {
        User user = new User(1, "jay.star", 23);
        String str = JSON.toJSONString(user);
        return str;
    }

 2、fastjson  https://www.cnblogs.com/dmego/p/9033080.html

fastjson常用api:
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
3、返回字符串中文乱码:
方式一、@RequestMapping(value = "/test4",produces = "application/json;charset=utf-8")
方式二、spring配置,使用jackson的包,不用fastjson了,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- 1.开启SpringMVC注解驱动 JSON乱码问题配置 -->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="utf-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

 jackson

1
2
3
4
5
6
7
8
@RequestMapping(value = "/test4")
    @ResponseBody
    public String test4() throws JsonProcessingException {
        User user = new User(1, "星期五", 23);
        ObjectMapper mapper = new ObjectMapper();
        String res = mapper.writeValueAsString(user);
        return res;
    }

4、 使用@RestController注解Controller,其下所有方法都不会再走视图解析器,全部返回字符串,前后端分离时,写接口给前端调用。
5、自定义DateFormat的JsonUtils

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.jay.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.text.SimpleDateFormat;
public class JsonUtils {
    public static String getJson(Object object) {
        return getJson(object, "yyyy-MM-dd HH:mm:ss");
    }
    public static String getJson(Object object, String dateFormat) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        mapper.setDateFormat(sdf);
        String res = null;
        try {
            res = mapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return res;
    }
}

 

posted on   邢帅杰  阅读(246)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示