我们使用SpringFramework开发web项目开发得步骤一般为
- 创建一个web项目的结构,web的资源文件和web.xml文件
- 使用Spring FrameWork配置很多web.xml文件,文件中需要配置很多内容
- 再部署到tomcat上
当使用了SpringBoot就可以简化了很多工作
- 内置了tomcat
- 然后很多xml文件的配置都可以用注释来解决
- 默认的web配置
SpringBoot中有一个启动类,启动类上的注释为@SpringBootApplication :这个在启动的时候会扫描在启动类所在的包下。
这个网站的文件可以看看http://c.biancheng.net/view/4260.html
我的git https://github.com/liyan234/SpringLeran
下面是部分代码
package com.example.demostudytwo.controller;
import com.example.demostudytwo.model.User;
import com.sun.deploy.net.HttpResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
//可以实例化多个对象 当前类注册到实列容器中,并指定为web请求
@Controller//做web请求的处理类
//用在类和方法上
@RequestMapping("/user") //路径
public class UserController {
// @Resource
@Autowired
Map<String, String> test1;
@RequestMapping("/login")
@ResponseBody//返回的啥请求格式 这个jason的格式
public Object login() {
return test1;
}
//Autowired 先根据名称来查找,若是没有找到就会根据类型来查找,若是有多个这一类型的,就会报错。
@Autowired
@Qualifier("user1")//辅助查找这个名称
private User user;
@RequestMapping("/loginTwo")
@ResponseBody
public User loginTwo() {
return user;
}
//加上这个括号里的就会辅助查找bean容器中这个名称中的对象
@Resource(name = "user2")
User user2;
@RequestMapping("/loginThree")
@ResponseBody// 返回的是一个js格式
public User loginThree() {
return user2;
}
//返回的是一个静态资源类
@RequestMapping("/m")
public String m() {
return "/main.html";//转发
}
//转发
@RequestMapping("/l1")
public String l1() {
//返回路径,不带/: 以当前请求路径为相对位置 ,查找到同一级资源
//返回路径, 带/:会去掉这个当前路径,以项目的部署路径为相对位置
return "forward:login"; //以当前请求路径/user/l1,转发到/user
//return "forward:/user/login";//以项目路径查找/login
}
//重定向
@RequestMapping("/l2")
public String l2() {
return "redirect:/user/login";
}
//rest请求方式
//在路径中使用占位符
@RequestMapping("/test/{key}")
@ResponseBody
public Object test1(@PathVariable("key") String k) {
System.out.println("========" + test1.get(k));
return test1;
}
//请求在url内
//请求get /user/test2?k1=v1&k2=v2&k3=v3
// 方法为get method = RequestMethod.GET
//v3是变量 方法为post method = RequestMethod.POST
@RequestMapping(value = "test2", method = {RequestMethod.GET,
RequestMethod.POST})//两个方法都支持
@ResponseBody
public Object test2(@RequestParam("k1") String k1,//写全
@RequestParam String k2,//省略注解
String k3) {//最省略的
System.out.println("========" + k1 +"," + k2 + " ," + k3);
return test1;
}
@RequestMapping("/test3")
@ResponseBody
protected Object test3(User user) {//请求数据自动映射到参数类型的属性中,name=xx&age=xx
System.out.println(user);
return test1;
}
//@RequestParam 定义的参数类型,可以是基础数据类型,包装类型,自定义类型,
//都可以有多个参数。自定义类型是通过请求数据的key映射到字段中去的。
@RequestMapping("/test4")
@ResponseBody
public String test4() {
return "ok";
//返回字符串内容text/plain,而不是js
}
//自动包装成响应体
@RequestMapping("/test5")
@ResponseBody
//http请求是基于Servlet的,Spring已经生成了request和response对象,可以直接在参数中使用
public Object test5(HttpServletRequest request, HttpServletResponse response) {
//Spring自动注入参数
String ret = request.getParameter("name");
return ret;
}
//解析js传过来的数据,并且是放在请求体内
@RequestMapping("test6")
@ResponseBody
public Object test6(@RequestBody User user) {
return null;
}
}