SpringMVC 主要内容

1、注解

1)、@Controller
1、代表这个类会被spring托管
2、被这个注解的类中的所有方法、如果返回值是string类型,并有指定页面跳转,会被视图解析器解析

用法:

@Controller
public class ControllerTest01 {

    @RequestMapping("/h1")
    public String test1(Model model){
        model.addAttribute("msg","调用了test1方法");
        return "test1";
    }
}
2)、@RequestMapping
在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,
相当于Servlet中在web.xml中配置
<servlet>
    <servlet-name>servletName</servlet-name>
    <servlet-class>ServletClass</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servletName</servlet-name>
    <url-pattern>url</url-pattern>
</servlet-mapping>

用法:

@Controller
public class ControllerTest02 {

    @RequestMapping("/hu/t2")
    public String test02(Model model){
        model.addAttribute("msg","调用了test02方法");
        return "test1";
    }   
}
3)、@PathVariable
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
@RequestMapping(value=”user/{id}/{name}”)

用法:

@Controller
public class ControllerTest03 {

    /*
     * RestFul风格
     * */
    @RequestMapping("/test03/h2/{a}/{b}")
    public String test04(@PathVariable int a, @PathVariable int b, Model model) {
        int rs = a + b;
        model.addAttribute("msg", "结果:" + rs);
        return "test1";
    }
}
/*
 * http://localhost:8080/test03/h2/1/2
 * */
4)、@PostMapping和@GetMapping
1、@PostMapping
    作用:post请求    
2、@GetMapping
    作用:get请求
5)、@RequestParam
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
如果参数是一个对象
直接按照对象属性进行匹配赋值
@Controller
public class ControllerTest04 {


    @GetMapping("/test04/t1")
    public String test01(@RequestParam String name){
        System.out.println(name);
        return "test1";
    }
}
/*
 * http://localhost:8080/test04/t1?name=老大
 * http://localhost:8080/test04/t1?name1111=老大  报错 必须为name
 * */
6)、@ResponseBody
加上这个注解后不走视图解析器直接返回字符串
7)、@RestController
指定这个类下的所有方法返回字符串、不走视图解析器

2、乱码解决

在web.xml使用过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

3、json

1)、js对象和json互转
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    const user = {
        name: '老大',
        age: 20,
        sex: '男'
    }
    /*
    * 将js对象转换为json对象
    * */
    let json = JSON.stringify(user);
    console.log(json)
    /*
    * 将json对象转换为js对象
    * */
    let obj = JSON.parse(json);
    console.log(obj)
</script>
</body>
</html>
2)、返回json数据
1、依赖
jackson-databind或者fastjson
2、导入jar包后要在lib目录中增加jar包
3、@ResponseBody
加上这个注解后不走视图解析器直接返回字符串
3)、json乱码解析
第一种:
@RequestMapping(value = "/j1",produces = "application/json;charset=UTF-8")
第二种:
<mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 注解请求映射
            默认是ISO-88859-1,避免乱码这里设置为UTF-8 -->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes" value="text/html;charset=UTF-8" />
            </bean>
            <!-- 启动JSON格式的配置,自动将格式转换成JSON格式,不需要其他类 -->
            <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter>
                <property name="supportedMediaTypes" value="application/json;charset=UTF-8" />
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值