当前位置: 首页 > news >正文

成人专业技能培训机构企业seo顾问公司

成人专业技能培训机构,企业seo顾问公司,网站建设流程案例,百度网站关键词排名查询前言:请求响应 目录 一 引子 二 请求 2.1 Postman 2.1.1 安装 2.1.2 创建工作空间 2.1.3 添加接口 2.2 简单参数 2.2.1 原始方式(不推荐) 2.2.2 SpringBoot方式-GET(参数名与形参变量名相同) 2.2.3 SpringBoot方式-POST(参数名与形参…

前言:请求响应

目录

一  引子

二 请求

2.1 Postman

2.1.1 安装

2.1.2 创建工作空间

 2.1.3 添加接口

2.2 简单参数

2.2.1 原始方式(不推荐)

 2.2.2 SpringBoot方式-GET(参数名与形参变量名相同)

 2.2.3 SpringBoot方式-POST(参数名与形参变量名相同)

2.2.4 SpringBoot方式-POST(参数名与形参变量名不相同)

2.2.5 @RequestParam注解决SpringBoot方式-POST(参数名与形参变量名不相同)

2.3 实体参数

2.3.1 简单的实体类参数

2.3.1.1 创建实体类User

 2.3.1.2 创建接口

2.3.2 复杂实体参数

 2.3.2.1 创建实体类Address

 2.3.2.2 修改实体类User

 2.3.2.3 创建接口

2.4 数组集合参数

2.4.1 数组参数

 2.4.2 集合参数

2.5 日期参数

2.6 Json参数

2.7 路径参数

 2.7.1 单个路径参数

 2.7.2 多个路径参数

 2.8 总结

三 响应

 3.1 @Responbody响应示例(发现不便管理、难以维护)​编辑

 3.1.1 创建类ResponseController 

3.1.2 执行结果

3.1.2.1 返回字符串

​编辑3.1.2.2 返回对象json

​编辑 3.1.2.3 返回集合json

​编辑3.2 统一响应结果

 3.2.1 统一结果处理类Result

 3.2.2 优化类ResponseController

3.2.3 执行结果(返回统一)

 3.3 总结

 3.4 统一响应结果的案例

 3.4.1 分析步骤

3.4.2 引入dom4j 

3.4.3 引入工具类XmlParserUtils 

3.4.4 引入实体类 Emp

 3.4.5 引入emp.xml文件

 3.4.6 引入前端页面

 3.4.7 新增EmpController类

3.4.8 访问

 3.4.9 思考

四 分层解耦

4.1 三层架构

4.1.1 概述

 4.1.2 Dao层

4.1.2.1  新增EmpDao接口

4.1.2.2 新增EmpDaoA实现类

4.1.3 Service层

4.1.3.1 新增EmpService接口

4.1.3.2 新增EmpServiceA实现类

4.1.3 Controller层

4.1.3.1 优化EmpController

4.1.4 对比

4.2 分层解耦

 4.2.1 解耦

4.3 IOC(控制反转) & DI(依赖注入)入门

 4.3.1 优化EmpDaoA实现类

’4.3.2 优化EmpServiceA实现类

 4.3.3 优化EmpController类

4.3.4 如何更改为:实现类EmpserviceB

 4.3.5 总结

4.4 IOC详解

 4.4.1 优化EmpDaoA实现类

’4.4.2 优化EmpServiceA实现类

 4.4.3 优化EmpController类

4.4.4 bean组件扫描

 4.4.5 总结

 4.5 DI详解

4.5.1 @Primary

 4.5.2 @Qualifier

 4.5.3 @Resource

 4.5.3 总结


一  引子

二 请求

2.1 Postman

2.1.1 安装

2.1.2 创建工作空间

 

 2.1.3 添加接口

 

 

2.2 简单参数

2.2.1 原始方式(不推荐)

 

 2.2.2 SpringBoot方式-GET(参数名与形参变量名相同)

 2.2.3 SpringBoot方式-POST(参数名与形参变量名相同)

 

2.2.4 SpringBoot方式-POST(参数名与形参变量名不相同)

 参数不同 获取null

 

2.2.5 @RequestParam注解决SpringBoot方式-POST(参数名与形参变量名不相同)

 此问题是解决2.2.4的问题

package com.runa.controller;import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RequestController {
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}
}

 

2.3 实体参数

2.3.1 简单的实体类参数

2.3.1.1 创建实体类User

package com.runa.pojo;public class User {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

 2.3.1.2 创建接口

package com.runa.controller;import com.runa.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RequestController {// 1、 简单参数
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}// 2 实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){//获取请求参数System.out.println(user);return "ok";}}

 

 

2.3.2 复杂实体参数

 2.3.2.1 创建实体类Address

package com.runa.pojo;public class Address {private String province;private String city;public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString() {return "Address{" +"province='" + province + '\'' +", city='" + city + '\'' +'}';}
}

 2.3.2.2 修改实体类User

package com.runa.pojo;public class User {private String name;private Integer age;private Address address;public String getName() {return name;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +", address=" + address +'}';}
}

 2.3.2.3 创建接口

package com.runa.controller;import com.runa.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RequestController {// 1、 简单参数
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}// 2 实体参数//2.1 简单的实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){//获取请求参数System.out.println(user);return "ok";}//2.1 复杂的实体参数@RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "ok";}}

 

2.4 数组集合参数

2.4.1 数组参数

package com.runa.controller;import com.runa.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Arrays;@RestController
public class RequestController {// 1、 简单参数
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}// 2 实体参数//2.1 简单的实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){//获取请求参数System.out.println(user);return "ok";}//2.2 复杂的实体参数@RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "ok";}// 3 数组集合参数// 3.1 数组参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "ok";}}

 

 

 2.4.2 集合参数

package com.runa.controller;import com.runa.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Arrays;
import java.util.List;@RestController
public class RequestController {// 1、 简单参数
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}// 2 实体参数//2.1 简单的实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){//获取请求参数System.out.println(user);return "ok";}//2.2 复杂的实体参数@RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "ok";}// 3 数组集合参数// 3.1 数组参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "ok";}// 3.2 集合参数@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "ok";}}

 

 

2.5 日期参数

package com.runa.controller;import com.runa.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;@RestController
public class RequestController {// 1、 简单参数
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}// 2 实体参数//2.1 简单的实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){//获取请求参数System.out.println(user);return "ok";}//2.2 复杂的实体参数@RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "ok";}// 3 数组集合参数// 3.1 数组参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "ok";}// 3.2 集合参数@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "ok";}// 4 日期时间参数@RequestMapping("/dataParam")public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "ok";}}

 

 

2.6 Json参数

package com.runa.controller;import com.runa.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;@RestController
public class RequestController {// 1、 简单参数
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}// 2 实体参数//2.1 简单的实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){//获取请求参数System.out.println(user);return "ok";}//2.2 复杂的实体参数@RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "ok";}// 3 数组集合参数// 3.1 数组参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "ok";}// 3.2 集合参数@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "ok";}// 4 日期时间参数@RequestMapping("/dataParam")public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "ok";}// 5 json 参数@RequestMapping("/jsonParam")public String jsonParam(@RequestBody User user){System.out.println(user);return "ok";}}

 

 

2.7 路径参数

 2.7.1 单个路径参数

package com.runa.controller;import com.runa.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;@RestController
public class RequestController {// 1、 简单参数
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}// 2 实体参数//2.1 简单的实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){//获取请求参数System.out.println(user);return "ok";}//2.2 复杂的实体参数@RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "ok";}// 3 数组集合参数// 3.1 数组参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "ok";}// 3.2 集合参数@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "ok";}// 4 日期时间参数@RequestMapping("/dataParam")public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "ok";}// 5 json 参数@RequestMapping("/jsonParam")public String jsonParam(@RequestBody User user){System.out.println(user);return "ok";}// 6 路径 参数@RequestMapping("/path/{id}")public String pathParam(@PathVariable Integer id){System.out.println(id);return "ok";}}

 

 2.7.2 多个路径参数

package com.runa.controller;import com.runa.pojo.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;@RestController
public class RequestController {// 1、 简单参数
//    //原始方式
//    @RequestMapping("/simpleParam")
//    public String simpleParam(HttpServletRequest request){//获取请求参数
//        String name = request.getParameter("name");
//        String ageStr = request.getParameter("age");
//        int age = Integer.parseInt(ageStr);
//
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String name, Integer age){
//        //获取请求参数
//        System.out.println(name + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)
//    @RequestMapping("/simpleParam")
//    public String simpleParam(String username, Integer age){
//        //获取请求参数
//        System.out.println(username + ":" + age);
//        return "ok";
//    }//SpringBoot 方式 GET  POST 都可以(参数名与形参变量名不相同)@RequestMapping("/simpleParam")public String simpleParam(@RequestParam(name="name")String username, Integer age){  //@RequestParam(name="name", required = false)//获取请求参数System.out.println(username + ":" + age);return "ok";}// 2 实体参数//2.1 简单的实体参数@RequestMapping("/simplePojo")public String simplePojo(User user){//获取请求参数System.out.println(user);return "ok";}//2.2 复杂的实体参数@RequestMapping("/complexPojo")public String complexPojo(User user){System.out.println(user);return "ok";}// 3 数组集合参数// 3.1 数组参数@RequestMapping("/arrayParam")public String arrayParam(String[] hobby){System.out.println(Arrays.toString(hobby));return "ok";}// 3.2 集合参数@RequestMapping("/listParam")public String listParam(@RequestParam List<String> hobby){System.out.println(hobby);return "ok";}// 4 日期时间参数@RequestMapping("/dataParam")public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime updateTime){System.out.println(updateTime);return "ok";}// 5 json 参数@RequestMapping("/jsonParam")public String jsonParam(@RequestBody User user){System.out.println(user);return "ok";}// 6 路径 参数// 6。1  单个路径 参数@RequestMapping("/path/{id}")public String pathParam(@PathVariable Integer id){System.out.println(id);return "ok";}// 6。2  多个路径 参数@RequestMapping("/path/{id}/{name}")public String pathParam(@PathVariable Integer id, @PathVariable String name){System.out.println(id + ":" + name);return "ok";}}

 

 2.8 总结

三 响应

 3.1 @Responbody响应示例(发现不便管理、难以维护)

 3.1.1 创建类ResponseController 

package com.runa.controller;import com.runa.pojo.Address;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;/*** 测试响应数据*/@RestController
public class ResponseController {@RequestMapping("/helloWorld")public String helloWorld(){System.out.println("Hello World ~");return "Hello World ~";}@RequestMapping("/getAddr")public Address getAddr(){Address addr = new Address();addr.setProvince("云南");addr.setCity("大理");return addr;}@RequestMapping("/listAddr")public List<Address> listAddr(){List<Address> list = new ArrayList<>();Address addr = new Address();addr.setProvince("云南");addr.setCity("大理");Address addr2 = new Address();addr2.setProvince("新疆");addr2.setCity("乌鲁木齐");list.add(addr);list.add(addr2);return list;}}

3.1.2 执行结果

3.1.2.1 返回字符串

3.1.2.2 返回对象json

 3.1.2.3 返回集合json

3.2 统一响应结果

 3.2.1 统一结果处理类Result

package com.runa.pojo;/*** 统一响应结果封装类*/
public class Result {private Integer code ;//1 成功 , 0 失败private String msg; //提示信息private Object data; //数据 datapublic Result() {}public Result(Integer code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public static Result success(Object data){return new Result(1, "success", data);}public static Result success(){return new Result(1, "success", null);}public static Result error(String msg){return new Result(0, msg, null);}@Overridepublic String toString() {return "Result{" +"code=" + code +", msg='" + msg + '\'' +", data=" + data +'}';}
}

 3.2.2 优化类ResponseController

package com.runa.controller;import com.runa.pojo.Address;
import com.runa.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;/*** 测试响应数据*/@RestController
public class ResponseController {@RequestMapping("/helloWorld")public Result helloWorld(){System.out.println("Hello World ~");
//        return new Result(1,"success","Hello World`");return Result.success("Hello World ~");}@RequestMapping("/getAddr")public Result getAddr(){Address addr = new Address();addr.setProvince("云南");addr.setCity("大理");return Result.success(addr);}@RequestMapping("/listAddr")public Result listAddr(){List<Address> list = new ArrayList<>();Address addr = new Address();addr.setProvince("云南");addr.setCity("大理");Address addr2 = new Address();addr2.setProvince("新疆");addr2.setCity("乌鲁木齐");list.add(addr);list.add(addr2);return Result.success(list);}}

3.2.3 执行结果(返回统一)

 

 3.3 总结

 3.4 统一响应结果的案例

 3.4.1 分析步骤

3.4.2 引入dom4j 

<!-- 解析XML -->
<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version>
</dependency>

 

3.4.3 引入工具类XmlParserUtils 

package com.runa.utils;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;public class XmlParserUtils {public static <T> List<T> parse(String file , Class<T> targetClass)  {ArrayList<T> list = new ArrayList<T>(); //封装解析出来的数据try {//1.获取一个解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器把xml文件加载到内存中,并返回一个文档对象Document document = saxReader.read(new File(file));//3.获取到根标签Element rootElement = document.getRootElement();//4.通过根标签来获取 user 标签List<Element> elements = rootElement.elements("emp");//5.遍历集合,得到每一个 user 标签for (Element element : elements) {//获取 name 属性String name = element.element("name").getText();//获取 age 属性String age = element.element("age").getText();//获取 image 属性String image = element.element("image").getText();//获取 gender 属性String gender = element.element("gender").getText();//获取 job 属性String job = element.element("job").getText();//组装数据Constructor<T> constructor = targetClass.getDeclaredConstructor(String.class, Integer.class, String.class, String.class, String.class);constructor.setAccessible(true);T object = constructor.newInstance(name, Integer.parseInt(age), image, gender, job);list.add(object);}} catch (Exception e) {e.printStackTrace();}return list;}}

3.4.4 引入实体类 Emp

package com.runa.pojo;public class Emp {private String name;private Integer age;private String image;private String gender;private String job;public Emp() {}public Emp(String name, Integer age, String image, String gender, String job) {this.name = name;this.age = age;this.image = image;this.gender = gender;this.job = job;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getImage() {return image;}public void setImage(String image) {this.image = image;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}@Overridepublic String toString() {return "Emp{" +"name='" + name + '\'' +", age=" + age +", image='" + image + '\'' +", gender='" + gender + '\'' +", job='" + job + '\'' +'}';}
}

 3.4.5 引入emp.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<emps><emp><name>金毛狮王</name><age>55</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg</image><!-- 1: 男, 2: 女 --><gender>1</gender><!-- 1: 讲师, 2: 班主任 , 3: 就业指导 --><job>1</job></emp><emp><name>白眉鹰王</name><age>65</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/2.jpg</image><gender>1</gender><job>1</job></emp><emp><name>青翼蝠王</name><age>45</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/3.jpg</image><gender>1</gender><job>2</job></emp><emp><name>紫衫龙王</name><age>38</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/4.jpg</image><gender>2</gender><job>3</job></emp>
</emps>

 3.4.6 引入前端页面

 

 3.4.7 新增EmpController类

package com.runa.controller;import com.runa.pojo.Emp;
import com.runa.pojo.Result;
import com.runa.utils.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class EmpController {@RequestMapping("/listEmp")public Result list(){// 1 加载并解析XML 文件String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> emplist = XmlParserUtils.parse(file, Emp.class);// 2 对数据进行转换处理  gender jobempList.stream().forEach(emp ->{// 处理gender 1  男  2  女String gender = emp.getGender();if("1".equals(gender)){emp.setGender("男");} else if ("2".equals(gender)) {emp.setGender("女");}// 处理 job  1 讲师 2 班主任  3 就业指导String job = emp.getJob();if("1".equals(job)){emp.setJob("讲师");} else if ("2".equals(job)) {emp.setJob("班主任");}else if ("3".equals(job)) {emp.setJob("就业指导");}});// 3 响应数据return Result.success(empList);}
}

3.4.8 访问

浏览器 

http://localhost:8080/emp.html

 

 3.4.9 思考

四 分层解耦

4.1 三层架构

4.1.1 概述

 

 4.1.2 Dao层

4.1.2.1  新增EmpDao接口

package com.runa.dao;import com.runa.pojo.Emp;import java.util.List;public interface EmpDao {// 获取员工列表数据public List<Emp> listEmap();
}

4.1.2.2 新增EmpDaoA实现类

package com.runa.dao.impl;import com.runa.dao.EmpDao;
import com.runa.pojo.Emp;
import com.runa.utils.XmlParserUtils;import java.util.List;public class EmpDaoA implements EmpDao {@Overridepublic List<Emp> listEmap() {// 1 加载并解析XML 文件String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> emplist = XmlParserUtils.parse(file, Emp.class);return emplist;}
}

4.1.3 Service层

4.1.3.1 新增EmpService接口

package com.runa.service;import com.runa.pojo.Emp;import java.util.List;public interface EmpService {// 获取员工列表public List<Emp> listEmp();
}

4.1.3.2 新增EmpServiceA实现类

package com.runa.service.impl;import com.runa.dao.EmpDao;
import com.runa.dao.impl.EmpDaoA;
import com.runa.pojo.Emp;
import com.runa.service.EmpService;import java.util.List;public class EmpServiceA implements EmpService {private EmpDao empDao = new EmpDaoA();@Overridepublic List<Emp> listEmp() {//1 调用dao, 获取数据List<Emp> empList = empDao.listEmap();// 2 对数据进行转换处理  gender jobempList.stream().forEach(emp ->{// 处理gender 1  男  2  女String gender = emp.getGender();if("1".equals(gender)){emp.setGender("男");} else if ("2".equals(gender)) {emp.setGender("女");}// 处理 job  1 讲师 2 班主任  3 就业指导String job = emp.getJob();if("1".equals(job)){emp.setJob("讲师");} else if ("2".equals(job)) {emp.setJob("班主任");}else if ("3".equals(job)) {emp.setJob("就业指导");}});return empList;}
}

4.1.3 Controller层

4.1.3.1 优化EmpController

package com.runa.controller;import com.runa.pojo.Emp;
import com.runa.pojo.Result;
import com.runa.service.EmpService;
import com.runa.service.impl.EmpServiceA;
import com.runa.utils.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class EmpController {private EmpService empService = new EmpServiceA();@RequestMapping("/listEmp")public Result list(){// 1 调用service,获取数据List<Emp> empList = empService.listEmp();// 2 响应数据return Result.success(empList);}}

 启动

4.1.4 对比

4.2 分层解耦

 4.2.1 解耦

 

 

4.3 IOC(控制反转) & DI(依赖注入)入门

 4.3.1 优化EmpDaoA实现类

package com.runa.dao.impl;import com.runa.dao.EmpDao;
import com.runa.pojo.Emp;
import com.runa.utils.XmlParserUtils;
import org.springframework.stereotype.Component;import java.util.List;@Component  // 将当前类交给IOC容器管理,成为IOC容器的bean
public class EmpDaoA implements EmpDao {@Overridepublic List<Emp> listEmap() {// 1 加载并解析XML 文件String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> emplist = XmlParserUtils.parse(file, Emp.class);return emplist;}
}

’4.3.2 优化EmpServiceA实现类

package com.runa.service.impl;import com.runa.dao.EmpDao;
import com.runa.dao.impl.EmpDaoA;
import com.runa.pojo.Emp;
import com.runa.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.util.List;@Component  // 将当前类交给IOC容器管理,成为IOC容器的bean
public class EmpServiceA implements EmpService {
//    private EmpDao empDao = new EmpDaoA();@Autowired // 代表程序在运行时,IOC容器会提供该类型的bean对象,并赋值给该变量,===依赖注入private EmpDao empDao; //解耦@Overridepublic List<Emp> listEmp() {//1 调用dao, 获取数据List<Emp> empList = empDao.listEmap();// 2 对数据进行转换处理  gender jobempList.stream().forEach(emp ->{// 处理gender 1  男  2  女String gender = emp.getGender();if("1".equals(gender)){emp.setGender("男");} else if ("2".equals(gender)) {emp.setGender("女");}// 处理 job  1 讲师 2 班主任  3 就业指导String job = emp.getJob();if("1".equals(job)){emp.setJob("讲师");} else if ("2".equals(job)) {emp.setJob("班主任");}else if ("3".equals(job)) {emp.setJob("就业指导");}});return empList;}
}

 4.3.3 优化EmpController类

package com.runa.controller;import com.runa.pojo.Emp;
import com.runa.pojo.Result;
import com.runa.service.EmpService;
import com.runa.service.impl.EmpServiceA;
import com.runa.utils.XmlParserUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class EmpController {
//    private EmpService empService = new EmpServiceA();@Autowired   // 代表程序在运行时,IOC容器会提供该类型的bean对象,并赋值给该变量,===依赖注入private EmpService empService; //解耦@RequestMapping("/listEmp")public Result list(){// 1 调用service,获取数据List<Emp> empList = empService.listEmp();// 2 响应数据return Result.success(empList);}}

 

4.3.4 如何更改为:实现类EmpserviceB

 如果要更换成新的实现类EmpserviceB,只需要将EmpserviceA 的注解@Component 去掉,实现类EmpserviceB加上注解@Component 

 4.3.5 总结

 

4.4 IOC详解

 4.4.1 优化EmpDaoA实现类

package com.runa.dao.impl;import com.runa.dao.EmpDao;
import com.runa.pojo.Emp;
import com.runa.utils.XmlParserUtils;
import org.springframework.stereotype.Component;import java.util.List;//@Component  // 将当前类交给IOC容器管理,成为IOC容器的bean
@Repository
public class EmpDaoA implements EmpDao {@Overridepublic List<Emp> listEmap() {// 1 加载并解析XML 文件String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> emplist = XmlParserUtils.parse(file, Emp.class);return emplist;}
}

’4.4.2 优化EmpServiceA实现类

package com.runa.service.impl;import com.runa.dao.EmpDao;
import com.runa.dao.impl.EmpDaoA;
import com.runa.pojo.Emp;
import com.runa.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.util.List;
//@Component  // 将当前类交给IOC容器管理,成为IOC容器的bean
@Service
public class EmpServiceA implements EmpService {
//    private EmpDao empDao = new EmpDaoA();@Autowired // 代表程序在运行时,IOC容器会提供该类型的bean对象,并赋值给该变量,===依赖注入private EmpDao empDao; //解耦@Overridepublic List<Emp> listEmp() {//1 调用dao, 获取数据List<Emp> empList = empDao.listEmap();// 2 对数据进行转换处理  gender jobempList.stream().forEach(emp ->{// 处理gender 1  男  2  女String gender = emp.getGender();if("1".equals(gender)){emp.setGender("男");} else if ("2".equals(gender)) {emp.setGender("女");}// 处理 job  1 讲师 2 班主任  3 就业指导String job = emp.getJob();if("1".equals(job)){emp.setJob("讲师");} else if ("2".equals(job)) {emp.setJob("班主任");}else if ("3".equals(job)) {emp.setJob("就业指导");}});return empList;}
}

 4.4.3 优化EmpController类

package com.runa.controller;import com.runa.pojo.Emp;
import com.runa.pojo.Result;
import com.runa.service.EmpService;
import com.runa.service.impl.EmpServiceA;
import com.runa.utils.XmlParserUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController   //有@RestController就不需要使用 @Controller ,因为他包含了
public class EmpController {
//    private EmpService empService = new EmpServiceA();@Autowired   // 代表程序在运行时,IOC容器会提供该类型的bean对象,并赋值给该变量,===依赖注入private EmpService empService; //解耦@RequestMapping("/listEmp")public Result list(){// 1 调用service,获取数据List<Emp> empList = empService.listEmp();// 2 响应数据return Result.success(empList);}}

 

4.4.4 bean组件扫描

 4.4.5 总结

 4.5 DI详解

4.5.1 @Primary

 4.5.2 @Qualifier

 4.5.3 @Resource

 4.5.3 总结

 

http://www.dinnco.com/news/38558.html

相关文章:

  • 承德公司做网站营销失败案例分析
  • 一个网站开发项目小组成员uc浏览器关键词排名优化
  • 望城建设局网站上海seo推广公司
  • 广东网站定制深圳优化网站
  • 德州口碑好的网站制作公司精准的搜索引擎优化
  • wordpress 外部链接插件苏州网站建设优化
  • 做新浪网网站所需的条件最近七天的新闻重点
  • 怎么做微网站企业网站的网络营销功能
  • 黑龙江网站开发如何做网络宣传推广
  • 高端网站建设好处网络营销策划书3000字
  • 怎么看网站做没做推广百度论坛发帖
  • 傻瓜建站武汉官网优化公司
  • b2c平台网站开发成都营销推广公司
  • 备案个人可以做视频网站无锡网站建设
  • 深圳做关键词优化平台seo查询工具
  • 二手设备回收做哪个网站好淘宝运营培训课程免费
  • 农业银行官网杭州seo 云优化科技
  • 吴江盛泽建设局网站百度热搜榜小说排名
  • 百度做网站审核要多久网络营销与网站推广的
  • 如何管理网站页面设计澳门seo关键词排名
  • 互联网医院网站建设重庆关键词优化软件
  • 网站建设 长期待摊电商培训心得
  • 福安市代理做网站优化seo是什么意思
  • 济宁百度网站建设seo优化报价公司
  • 沈阳营销型网站制作seo排名公司
  • 四会建设局网站云浮seo
  • matlab 做网站开发广州seo全网营销
  • 如何去掉wordpress的评论百度关键词优化大师
  • 专门做英雄联盟h漫的外国网站seo网站优化专家
  • 怎样做58网站怎么查网站是不是正规