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;
 }
相关推荐
m0_5873830013 分钟前
点餐预约核销系统的架构脉络
java·架构·系统架构·需求分析
代码方舟42 分钟前
O2O二手车交易平台B端车商管理后台:基于天远车信盟出险构建自动化车况评估网关
java·运维·人工智能·自动化
爱学堂IT分享1 小时前
图灵Java互联网架构师六期
java·开发语言
坐吃山猪1 小时前
【多线程】Semaphore使用
java·数据库·oracle·多线程
秋名RG1 小时前
Java 核心特性一览
java·开发语言
霸道流氓气质1 小时前
Spring AI 技术细节:RAG QuestionAnswerAdvisor 设计与实现
java·人工智能·spring
斑马1392 小时前
Linux软件编程学习笔记(十二)——TCP并发服务器模型
java·服务器·网络
冬栈程序设计2 小时前
Springboot宿舍管理系统【670099】 -附源码(开箱即用)
java·毕业设计·springboot·课程设计·程序设计·大作业
2601_962284502 小时前
北京Java全栈开发培训 Web前端开发 软件测试就业培训班
java·软件测试·web前端·全栈开发·就业培训
qiaosaifei2 小时前
JAVA老项目中有大量的类名_编译时报找不到符号错误
java·开发语言