SSM学习8:SpringMVC请求与响应

设置请求映射路径

设置配置
config/ServletContainersInitConfig.class

java 复制代码
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

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

    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }
}

config/SpringMvcConfig.class

java 复制代码
@Configuration
@ComponentScan("com.itheima.controller")
public class SpringMvcConfig {
}

设置映射路径

java 复制代码
@Controller
//类上方配置的请求映射与方法上面配置的请求映射连接在一起,形成完整的请求映射路径
@RequestMapping("/user")
public class UserController {
    //请求路径映射
    @RequestMapping("/save")
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "{'module':'user save'}";
    }
    //请求路径映射
    @RequestMapping("/delete")
    @ResponseBody
    public String delete(){
        System.out.println("user delete ...");
        return "{'module':'user delete'}";
    }
}

@RequestMapping用于设置当前控制器方法的请求访问路径;如果设置在类上,则是当前控制器方法请求访问路径的前缀

请求

不区分get和post请求

普通参数

java 复制代码
 //普通参数:请求参数与形参名称对应即可完成参数传递
 @RequestMapping("/commonParam")
 @ResponseBody
 public String commonParam(String name ,int age){
     System.out.println("普通参数传递 name ==> "+name);
     System.out.println("普通参数传递 age ==> "+age);
     return "{'module':'common param'}";
 }

请求参数名与形参名不同

java 复制代码
//普通参数:请求参数名与形参名不同时,使用@RequestParam注解关联请求参数名称与形参名称之间的关系
@RequestMapping("/commonParamDifferentName")
@ResponseBody
public String commonParamDifferentName(@RequestParam("name") String userName , int age){
    System.out.println("普通参数传递 userName ==> "+userName);
    System.out.println("普通参数传递 age ==> "+age);
    return "{'module':'common param different name'}";
}

实体类

java 复制代码
 //POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
 @RequestMapping("/pojoParam")
 @ResponseBody
 public String pojoParam(User user){
     System.out.println("pojo参数传递 user ==> "+user);
     return "{'module':'pojo param'}";
 }

实体类,json格式

java 复制代码
//POJO参数:json格式
 //1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
 //2.使用@RequestBody注解将外部传递的json数据映射到形参的实体类对象中,要求属性名称一一对应
 @RequestMapping("/pojoParamForJson")
 @ResponseBody
 public String pojoParamForJson(@RequestBody User user){
     System.out.println("pojo(json)参数传递 user ==> "+user);
     return "{'module':'pojo for json param'}";
 }
java 复制代码
@Configuration
@ComponentScan("com.itheima.controller")
//开启json数据类型自动转换
@EnableWebMvc
public class SpringMvcConfig {
}

响应

返回文本

java 复制代码
//响应文本数据
 //返回值为String类型,设置返回值为任意字符串信息,即可实现返回指定字符串信息,需要依赖@ResponseBody注解
 @RequestMapping("/toText")
 @ResponseBody
 public String toText(){
     System.out.println("返回纯文本数据");
     return "response text";
 }

返回实体类

java 复制代码
//响应POJO对象
 //返回值为实体类对象,设置返回值为实体类类型,即可实现返回对应对象的json数据,需要依赖@ResponseBody注解和@EnableWebMvc注解
 @RequestMapping("/toJsonPOJO")
 @ResponseBody
 public User toJsonPOJO(){
     System.out.println("返回json对象数据");
     User user = new User();
     user.setName("itcast");
     user.setAge(15);
     return user;
 }

返回实体类集合

java 复制代码
 //响应POJO集合对象
 //返回值为集合对象,设置返回值为集合类型,即可实现返回对应集合的json数组数据,需要依赖@ResponseBody注解和@EnableWebMvc注解
 @RequestMapping("/toJsonList")
 @ResponseBody
 public List<User> toJsonList(){
     System.out.println("返回json集合数据");
     User user1 = new User();
     user1.setName("传智播客");
     user1.setAge(15);

     User user2 = new User();
     user2.setName("黑马程序员");
     user2.setAge(12);

     List<User> userList = new ArrayList<User>();
     userList.add(user1);
     userList.add(user2);

     return userList;
 }
相关推荐
雨白20 小时前
Java 线程通信基础:interrupt、wait 和 notifyAll 详解
android·java
架构师沉默1 天前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
Java中文社群1 天前
重要:Java25正式发布(长期支持版)!
java·后端·面试
每天进步一点_JL1 天前
JVM 类加载:双亲委派机制
java·后端
用户298698530141 天前
Java HTML 转 Word 完整指南
java·后端
渣哥1 天前
原来公平锁和非公平锁差别这么大
java
渣哥1 天前
99% 的人没搞懂:Semaphore 到底是干啥的?
java
J2K1 天前
JDK都25了,你还没用过ZGC?那真得补补课了
java·jvm·后端
kfyty7251 天前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构
isysc11 天前
面了一个校招生,竟然说我是老古董
java·后端·面试