返回数据
默认情况
默认情况下返回的是静态页面的名称
@Controller
public class TestController {
@RequestMapping("/sayhi")
public String sayHi(){
return "hello";
}
}
返回非静态页面的数据
(1)使用@ResponseBody注解
@Controller
@ResponseBody
public class TestController {
@RequestMapping("/sayhi")
public String sayHi(){
return "hello";
}
}
@ResponseBody可以修饰类,表示当前类中的所有方法都会返回一个非静态页面的数据, 可以修饰方法,表示当前方法返回的是一个非静态页面的数据。
(2)使用@RestController
@RestController
public class TestController {
@RequestMapping("/sayhi")
public String sayHi(){
return "hello";
}
}
idea 热部署(热加载)
自动帮开发者重启spring boot 项目,已达到修改代码之后能够“实时”的看到新效果的目的。
(1)在pom.xml中添加spring boot 的开发者框架支持。
(2)settings开启项目自动编译
(3)开启程序运行中热部署
不同的版本配置方法不同配置分为2021.2之前的版本配置和2021.2之后的版本配置
以我的版本为例(高版本)
在settings中
(4)启动项目使用debug而非run运行
实现计算器功能
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initialscale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>计算器示例</title>
</head>
<body>
<form action="/calc">
<h1>计算器</h1>
数字1:<input name="num1" type="text"><br>
数字2:<input name="num2" type="text"><br>
<input type="submit" value=" 点击相加 ">
</form>
</body>
</html>
@RestController
public class CalcController {
@RequestMapping("/calc")
public String calc(Integer num1,Integer num2){
if(num1 ==null || num2==null){
return "<h1>参数错误!</h1><a href='javascript:history.go(-1);'>返回</a>";
}
return "<h1>结果:"+(num1+num2)+"</h1><a href='javascript:history.go(-1);'>返回</a>";
}
}
返回json对象
<script>
//ajax 提交
function mysub(){
// 1. 判空
var username=jQuery("#username");
var password=jQuery("#password");
if(jQuery.trim(username.val())==""){
alert("请先输入用户名");
username.focus();//光标重置到此元素
return;
}
if(jQuery.trim(password.val())==""){
alert("请先输入密码");
passworde.focus();//光标重置到此元素
return;
}
jQuery.ajax({
url:"/user/login4",
type:"POST",
data:{"username":username.val(),
"password":password.val()},
success:function(result){
alert(JSON.stringify(result));
}
});
}
</script>
@RequestMapping("/login4")
public HashMap<String,Object> login4(String username,String password){
HashMap<String,Object> result=new HashMap<String,Object>();
int state=200;
int data=1;//等于1登录成功,否则失败
String msg="";
if(StringUtils.hasLength(username) && StringUtils.hasLength(password)){
if(username.equals("admin") && password.equals("admin")){
data=1;
msg="";
}else {
msg="用户名或密码失败";
}
}else{ //参数为空
msg="非法参数";
}
result.put("state",state);
result.put("data",data);
result.put("msg",msg);
return result;
}
请求转发或请求重定向
请求转发:forward【服务器帮用户实现的】
(1)方式1
//请求转发实现方式1
@RequestMapping("/fw")
public String myForward(){
return "forward:/calc.html";
}
方式1可以直接省略forward
//请求转发实现方式1-1
@RequestMapping("/fw1")
public String myForward1(){
return "/calc.html";
}
(2)方式2
//请求转发实现方式2
@RequestMapping("/fw2")
public void myForward2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/calc.html").forward(request,response);
}
请求重定向:redirect 【客户端的行为】
(1)方式1
//重定向实现方式1
@RequestMapping("/rd")
public String myRedirect(){
return "redirect:/calc.html";
}
(2)方式2
//重定向实现方式2
@RequestMapping("/rd2")
public void myRedirect2(HttpServletResponse response) throws IOException {
response.sendRedirect("calc.html");
}