南昌专业的企业网站建设公司,一二三四免费观看高清视频,凤翔网站制作,adminlte wordpress目录
1. 返回静态页面
2. 返回非静态页面
2.1 ResponseBody 返回页面内容 2.2 RestController ResponseBody Controller
2.3 示例:实现简单计算的功能
3. 返回JSON对象 3.1 实现登录功能#xff0c;返回 JSON 对象
4. 请求转发(forward)或请求重定向(redirect)
4.1 请…目录
1. 返回静态页面
2. 返回非静态页面
2.1 ResponseBody 返回页面内容 2.2 RestController ResponseBody Controller
2.3 示例:实现简单计算的功能
3. 返回JSON对象 3.1 实现登录功能返回 JSON 对象
4. 请求转发(forward)或请求重定向(redirect)
4.1 请求转发forward 4.2 请求重定向redirect 4.3 请求转发和请求重定向的区别
4.4 区别 我们知道默认请求下无论是Spring MVC或者是Spring Boot返回的是视图(xxx.html)而现在都是前后端分离的后端只需要返给给前端数据即可这个时候我们就需要使用ResponseBody 注解了。 1. 返回静态页面
直接在这里返回的那么返回的就是静态页面的名称比如
RequestMapping(/resp)
Controller
//ResponseBody
public class RespController {RequestMapping(/Hi)public String sayHi(){return /hello.html;}
}
!doctype html
html langen
headmeta charsetUTF-8meta nameviewportcontentwidthdevice-width, user-scalableno, initial-scale1.
0, maximum-scale1.0, minimum-scale1.0meta http-equivX-UA-Compatible contentieedgetitlehello,spring mvc/titlescript srcindex.js/script
/head
body
h1Hello,Spring MVC./h1
/body
/html
可以看到前面返回的内容是 hello.html这里通过一级目录 sayhi也可以访问到这个页面说明返回的虽然是 String 类型但实际上是一个页面 2. 返回非静态页面
2.1 ResponseBody 返回页面内容 ResponseBody 可以修饰类也可以修饰方法 修饰类 表示当前类中的所有方法都会返回一个非静态页面的数据修饰方法表示当前方法返回的是一个非静态页面的数据 Controller
ResponseBody
public class TestController {RequestMapping(/Hi)public String sayHi() {return hello.html;}
}2.2 RestController ResponseBody Controller
RequestMapping(/resp)
//Controller
//ResponseBody
RestController
public class RespController {RequestMapping(/Hi)public String sayHi(){return /hello.html;}
} 2.3 示例:实现简单计算的功能
!doctype html
html langen
headmeta charsetUTF-8meta nameviewportcontentwidthdevice-width, user-scalableno, initial-scale1.
0, maximum-scale1.0, minimum-scale1.0meta http-equivX-UA-Compatible contentieedgetitledocument/titlescript srcindex.js/script
/head
body
form action/calcdiv stylemargin-top:100px;text-align: center;h1计算器/h1数字1input namenum1 typetextbr数字2input namenum2 typetextbrinput typesubmit value 点击相加 /div
/form
/body
/html
Controller
ResponseBody
public class CalcController {RequestMapping(/calc)public String calc(Integer num1,Integer num2){if (num1 num2 || num2 null){return 参数错误;}return 结果 (num1 num2);}
} 3. 返回JSON对象 RequestMapping(/respjson)public HashMapString, String respJson() {HashMapString, String map new HashMap();map.put(Java, Java Value);map.put(MySQL, MySQL Value);map.put(Redis, Redis Value);return map;} 我们写的明明是HashMap到前端就变成json了 这要归功于框架 3.1 实现登录功能返回 JSON 对象
!doctype html
html langen
headmeta charsetUTF-8meta nameviewportcontentwidthdevice-width, user-scalableno, initial-scale1.
0, maximum-scale1.0, minimum-scale1.0meta http-equivX-UA-Compatible contentieedgescript srcjs/jquery-2.1.4.min.js/scripttitleDocument/titlescript// ajax 提交function mysub() {// 判空// var username $(#username);//这里注意如果在js中有多个 jquery 那么这里的$是不合适的$相当于小名jQuery相当于大名最好使用大名var username jQuery(#username);var password jQuery(#password);if(jQuery.trim(username.val()) ) {alert(请先输入用户名!);username.focus; // 让光标重置到此元素return;}if(jQuery.trim(password.val()) ) {alert(请先输入密码!);password.focus();return;}jQuery.ajax({url:/user/login2,type:POST,data:{username:username.val(),password:password.val()},success:function(result) {alert(JSON.stringify(result));}});}/script
/head
body
div styletext-align: center;h1登录/h1⽤户input idusernamebr密码input idpassword typepasswordbrinput typebutton value 提交 onclickmysub() stylemargin-top: 20px;margin-left: 50px;
/div
/body
/htmlSlf4j
Controller
ResponseBody
RequestMapping(/user)
public class UserController {RequestMapping(/login2)public HashMapString, Object login2(String username, String password) {HashMapString, Object result new HashMap();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;}
}4. 请求转发(forward)或请求重定向(redirect) forward vs redirect return不但可以返回一个视图还可以实现跳转跳转的方式有两种: forward是请求转发; redirect:请求重定向。请求转发和重定向的使用对比: 4.1 请求转发forward 请求转发是服务器端帮用户实现的 Controller
public class TestController {//请求转发方式1RequestMapping(/fw)public String myForward() {return forward:/hello.html;}//请求转发方式2RequestMapping(/fw2)public void myForward2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.getRequestDispatcher(/hello.html).forward(request,response);}
}4.2 请求重定向redirect 重定向的请求发生在客户端浏览器端 Controller
public class TestController {//请求重定向方式1RequestMapping(/rd)public String myRedirect() {return redirect:/hello.html;}//请求重定向方式2RequestMapping(/rd2)public void myRedirect2(HttpServletResponse response) throws IOException {response.sendRedirect(/hello.html);}
}4.3 请求转发和请求重定向的区别 跳转的实现方式有两种请求转发Forward和请求重定向Redirect 请求转发就像你(客户端)对你妈妈(服务端)说你饿了你妈妈帮你点了外卖在这个过程中你(客户端)只接触到你妈妈剩下的事都是你妈妈(服务端)来完成的这就是请求转发 请求重定向就像你(客户端)对你妈妈(服务端)说你饿了你妈妈说她没时间你找你爸去然后你找了你爸爸这就变成了你找你爸爸帮忙了这就是请求重定向 4.4 区别 1.定义 请求转发发生在服务器端的程序当中当服务器收到客户端请求后会先将请求转发给目标地址然后再将地址返回的结果转发给客户端 请求重定向服务器接收到客户端的请求后会给客户端一个临时响应头这个临时响应头中记录了客户端需要再次发送请求(重定向)的URL地址客户端收到地址后会将请求发送到新的地址中 2.数据共享 请求转发是服务器端实现的整个执行过程客户端只需要发送一次请求所以整个交互过程中使用的都是同一个 Request 请求对象和 Response 响应对象因此请求和返回的数据是共享的请求重定向客户端发送两次完全不同的请求所以两次请求中的数据是不同的 3.请求方 请求转发是服务器端的行为 请求重定向是客户端的行为(浏览器) 4.代码实现不同 5.最终的URL地址 请求转发是服务器端代为请求所以整个请求过程中 URL 地址是不变的 请求重定向是服务器端告诉客户端访问另一个地址所以浏览器会重新再发送一个请求因此 URL 地址放生了改变