@RequestMapping("/simple")
public String simpleParam(HttpServletRequest request){
String name = request.getParameter("name");
String ageStr = request.getParameter("age");
Integer age = Integer.valueOf(ageStr);
System.out.println(name+":"+age);
return "OK!";
}
@RequestMapping("/simpleParam")
public String simple(@RequestParam("name") String userName, Integer age){
System.out.println(userName+":"+age);
return "OK";
}
【@RequestParam中的required属性默认为true,代表改请求参数必须传递,否则报错。如果改参数是可选的,设置required为false即可】
public class User {
private String name;
private Integer age;
}
@RequestMapping("/simpleModelParam")
public String simpleModel(User user){
System.out.println(user);
return "OK";
}
public class User {
private String name;
private Integer age;
private Address address;
}
public class Address {
private String province;
private String city;
}
@RequestMapping("/complexParam")
public String complexParam(User user){
System.out.println(user);
return "OK";
}
@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
System.out.println(Arrays.toString(hobby));
return "OK";
}
@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
System.out.println(hobby.toString());
return "OK";
}
@RequestMapping("/dateParam")
public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime dateTime){
System.out.println(dateTime);
return "OK";
}
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user.toString());
return "OK";
}
@RequestMapping("/pathParam/{id}")
public String pathParam(@PathVariable Integer id){
System.out.println(id);
return "OK";
}
@RequestMapping("/pathParam/{id}/{name}")
public String pathParam2(@PathVariable Integer id,@PathVariable String name){
System.out.println(id+":"+name);
return "OK";
}
public class Result {
private Integer code;//响应码:1 成功 0失败
private String mes;//响应的提示信息
private Object 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 mes){
return new Result(0,mes,null);
}
@Override
public String toString() {
return "Result{" +
"code=" + code +
", mes='" + mes + '\'' +
", data=" + data +
'}';
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMes() {
return mes;
}
public void setMes(String mes) {
this.mes = mes;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Result(Integer code, String mes, Object data) {
this.code = code;
this.mes = mes;
this.data = data;
}
public Result() {
}
}
@RequestMapping("/listEmp")
public Result getEmps(){
return Result.success(empService.listEmp());
}
@RequestMapping("/listEmp")
public Result getEmps(){
//1.加载并解析xml数据
String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();
System.out.println(file);
List<Emp> emps = XmlParserUtils.parse(file, Emp.class);
//2.数据转换
emps.stream().forEach(o -> {
if("1".equals(o.getGender())){
o.setGender("男");
}else if("2".equals(o.getGender())){
o.setGender("女");
}
if("1".equals(o.getJob())){
o.setJob("讲师");
}else if("2".equals(o.getJob())){
o.setJob("班主任");
}else if("3".equals(o.getJob())){
o.setJob("就业指导");
}
});
return Result.success(emps);
}
emp
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;
}
@Override
public String toString() {
return "Emp{" +
"name='" + name + '\'' +
", age=" + age +
", image='" + image + '\'' +
", gender='" + gender + '\'' +
", job='" + job + '\'' +
'}';
}
}
【Dao】数据访问
public class EmpDaoA implements EmpDao {
@Override
public List<Emp> listEmp() {
//1.加载并解析xml数据
String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();
return XmlParserUtils.parse(file,Emp.class);
}
}
【Service】逻辑处理
public class EmpServiceB implements EmpService {
EmpDao empDao = new EmpDaoA();
@Override
public List<Emp> listEmp() {
List<Emp> emps = empDao.listEmp();
//2.数据转换
emps.stream().forEach(o -> {
if("1".equals(o.getGender())){
o.setGender("男士");
}else if("2".equals(o.getGender())){
o.setGender("女士");
}
if("1".equals(o.getJob())){
o.setJob("讲师");
}else if("2".equals(o.getJob())){
o.setJob("班主任");
}else if("3".equals(o.getJob())){
o.setJob("就业指导");
}
});
return emps;
}
}
【Controller】接收请求,响应数据
@RestController
public class EmpController {
EmpService empService = new EmpServiceA();
@RequestMapping("/listEmp")
public Result getEmps(){
return Result.success(empService.listEmp());
}
}
Service层及Dao层的实现类,交给IOC容器管理(添加@Component)
@Component
public class EmpDaoA implements EmpDao {
@Override
public List<Emp> listEmp() {
//1.加载并解析xml数据
String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();
return XmlParserUtils.parse(file,Emp.class);
}
}
@Component
public class EmpServiceB implements EmpService {
@Autowired
EmpDao empDao;
@Override
public List<Emp> listEmp() {
List<Emp> emps = empDao.listEmp();
//2.数据转换
emps.stream().forEach(o -> {
if("1".equals(o.getGender())){
o.setGender("男士");
}else if("2".equals(o.getGender())){
o.setGender("女士");
}
if("1".equals(o.getJob())){
o.setJob("讲师");
}else if("2".equals(o.getJob())){
o.setJob("班主任");
}else if("3".equals(o.getJob())){
o.setJob("就业指导");
}
});
return emps;
}
}
为Controller及Service注入运行时,依赖的对象
public class EmpServiceB implements EmpService {
@Autowired
EmpDao empDao;
}
public class EmpController {
@Autowired //运行时,IOC会提供该类型的bean对象,并赋值给该变量 (依赖注入)
EmpService empService;
}
运行测试
【注意事项】
声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写
使用以上四个注解都可以声明bean,但是在springboot继承web开发中,声明控制器bean只能用@Controller
Bean组件扫描
Bean注入
解决方案
@Qualifier与@AutoWired区别