不加 @ResponseBody ,默认是返回一个网页
@RequestMapping("/getPage") public String getPage(){ return "index.html"; }
返回非页面的数据,必须在方法或者类上加 @ResponseBody,同时 我们返回的类型 springmvc会自动解析成对应的格式,不需要我们进行手动指定
@RequestMapping("/getText") @ResponseBody public String getHTML(String name){ return "你好,欢迎用户:"+name+""; }
访问接口,自动解析成 html格式
通过 Fiddler 进行抓包,查看返回响应的格式为 text/html。
使用map存储数据,返回map
@RequestMapping("/getmap") @ResponseBody public Object getJson(){ HashMap
自动解析称为 json 格式的数据
咱们就直接定死了写的格式
在webapp目录下创建static文件夹保存 css、js、html 资源
同时在spring-mvc.xml 文件中加入 过滤静态资源、加载静态资源的配置
我们来试一下访问静态资源
<?xml version="1.0" encoding="UTF-8" ?> springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-mvc.xml 1 20848820 418018841 1048576 springmvc /
<?xml version="1.0" encoding="UTF-8"?> text/html;charset=UTF-8 application/json;charset=UTF-8
@RequestMapping("/login") public String getLog(){ return "redirect:/static/login.html"; }
(1) 重定向 将请求重新定位到资源的位置,请求转发是服务器端进行转发的
(2)请求重定向url地址发生改变,请求转发地址不发生变化
(3)请求重定向于直接访问新地址的效果一样,不存在原来的外部资源不能访问,请求转发服务器端的转发可能会造成外部资源不能访问(js、css)
如果外部资源与转发访问的页面不在同一级目录下,会造成外部资源不可访问。
通过转发的请求资源都直接通过 8080:/a/login 这个接口的同一级目录下直接访问,当然找不到资源
请求重定向相当于 输入的url变了,直接访问到 /static/login/html,同时附带的资源在在这一目录下能够访问到。
1、请求转发: 服务器放客户进行请求转发并将结果响应给客户端,URL是不会变的
2、请求重定向:服务器端请求重新定义到要访问的地址。URL会放生改变。
总结:
@RestController
相当于 @Controller + @ResponseBody
只能加到类上
留言与评论(共有 0 条评论) “” |