当前位置: 首页 > wzjs >正文

网站建设服务器配置用dedecms 做门户网站

网站建设服务器配置,用dedecms 做门户网站,昆明网站优化建设,网店美工主要负责目录 前言 请求 获取cookie和session 获取cookie 获取session 获取请求头header 响应 返回静态页面 返回数据 返回HTML代码片段 返回JSON 设置状态码 设置Header 设置响应的类型Content-Type 前言 在上一篇中,我们已经了解了什么是MVC、Spring MVC&…

目录

前言

请求

获取cookie和session

获取cookie

获取session 

获取请求头header

响应

返回静态页面

返回数据

返回HTML代码片段

返回JSON

设置状态码

设置Header

设置响应的类型Content-Type


前言

在上一篇中,我们已经了解了什么是MVC、Spring MVC,以及对Spring MVC中的一些注解的学习,学习了Sring MVC项目中如何传递单个、多个参数、传递对象、数组、集合、JSON数据、文件等,那么本篇我们就接着上一篇的内容继续往下讲。

请求

获取cookie和session

在前面,我们已经学习了有关cookie和session的相关知识,那么现在我们就来学习如何获取cookie和session。

获取cookie

cookie是由浏览器在发送请求的时候带上的,所以这里我们需要用 HttpServletRequest 类来获取cookie。在HttpServletRequest 中存储着请求的所有内容,简单来说,如果我们想要获取到请求中的内容,都可以通过HttpServletRequest 来获取。

@RequestMapping("/param")
@RestController
public class ParamController {@RequestMapping("/getCookie")public String getCookie(HttpServletRequest request){Cookie[] cookies=request.getCookies();//空指针检验if(cookies==null){return "cookie获取失败";}for(Cookie cookie:cookies){System.out.println(cookie.getName()+"--"+cookie.getValue());}return "cookie获取成功";}
}

将上面的代码运行请来后,我们利用postman来构建请求,看能不能获取到cookie:

可以看到,当我们运行起来后,构建请求并不能获取到cookie,是因为当前还没有设置cookie。

我们来设置一下:

在选框中填上域名,但这里我们使用的是本地服务器,所以用环回IP

点击add admin后,在下面点击add cookie进行添加cookie。

 我们将cookie改一下:

当点击保存后,我们可以在Headers中看到cooki中存储的键值对。

 接着我们再来发送请求试试:

可以看到,我们现在能成功的获取到cookie,再后端控制台看一下是不是我们想要的结果:

除了上面的通过 HttpServletRequest 类获取cookie外,Spring MVC还给我们提供了一种更加便捷的方式来获取cookie。

/*** 处理获取特定cookie的请求* 该方法通过请求中的Cookie来获取用户信息* * @param name Cookie中名为"name"的值,用于标识用户* @return 返回包含用户信息的字符串*/@RequestMapping("/getCookie2")public String getCookie2(@CookieValue("name") String name){return "接收到参数 name:" + name;}

这种方式一个注解只能获取一个cookie,如果我们需要获取多个,那么就需要使用第一种方式。

获取session 

由于session是服务器端的机制,我们需要先存储,才能获取,session也是基于 HttpServletRequest 类来存储和获取的。服务端如果想要获取到session,需要浏览器发来的请求中的cookie携带的sessionId来进行获取。

    @RequestMapping("setSession")public String setSession(HttpServletRequest request){//获取Session对象HttpSession session=request.getSession();if(session!=null){session.setAttribute("name","zhangsan");}return "Session存储成功";}

当我们设置完session后,我们可以查看cookie,会发现多了一个cookie,里面就存储着sessionId。 

当设置完后,我们就可以来尝试获取session。

  @RequestMapping("getSession")public String getSession(HttpServletRequest request){HttpSession session=request.getSession();if(session!=null){String name=(String)session.getAttribute("name");return "Session存储成功,name:"+name;}return "Session获取失败";}

 

在Spring MVC中,提供了几种更为简便的方法来帮助我们获取到session中的属性值。

   @RequestMapping("getSession2")public String getSession2(HttpSession session){if(session!=null){String name=(String)session.getAttribute("name");return "name:"+name;}return "获取失败";}

 

 //法三@RequestMapping("getSession3")public String getSession3(@SessionAttribute("name") String name){return "name:"+name;}

获取请求头header

传统获取header也是通过 HttpServletRequest 类来获取的。

 @RequestMapping("getHeader")public String getHeader(HttpServletRequest request){String header=request.getHeader("user-agent");return "获取到请求头:"+header;}

 我们可以从postman中Headers来查看是否一样:

当然,在Spring MVC中,给我们提供了一种更加便捷的方式来获取header中的值。

 @RequestMapping("getHeader2")public String getHeader2(@RequestHeader("user-agent") String header){return "获取到请求头:"+header;}

 

通过以上的内容,我们能够初步掌握spring mvc的一些基本操作和注解。

响应

在前面的学习以及讲解中,我们返回的都是一些数据类型,或者文件等,但在返回响应的时候,其实也可以返回一些HTML界面、设置状态码、Header信息等。

返回静态页面

在某些情况下,我们希望接收到的响应是一个静态页面,那么这个时候后端应该如何返回?

我们先来写一个简单的HTML页面。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>你好</title>
</head>
<body><h1>欢迎登录界面</h1>
</body>
</html>

后端代码:

@RestController
public class ResponseController {/*** 处理根路径的请求** 该方法响应根路径的HTTP请求,返回一个字符串,指示客户端访问的资源* 这里使用了Spring框架的@RequestMapping注解,将HTTP请求映射到这个方法** @return 返回字符串"/index.html",通常这表示重定向或指示客户端请求该资源*/@RequestMapping("/index")public Object index(){return "/index.html";}
}

我们来测试一下能不能获得HTML界面:

可以看到并不能获取到html界面,我们来抓下包:

我们可以看到内容类型,Content-Type: text/html;charset=UTF-8:表示响应的内容类型是HTML文档,字符编码为UTF-8。简单来说,就是Spring MVC将“/index.html”当成了一个数据返回,这是为什么?

其实这是注解 @RestController 作用的结果,这个注解会将响应内容都看成hi数据,如果我们想要返回一个html界面,我们需要使用 @Controller 注解。


@Controller
public class ResponseController {/*** 处理根路径的请求** 该方法响应根路径的HTTP请求,返回一个字符串,指示客户端访问的资源* 这里使用了Spring框架的@RequestMapping注解,将HTTP请求映射到这个方法** @return 返回字符串"/index.html",通常这表示重定向或指示客户端请求该资源*/@RequestMapping("/index")public Object index(){return "/index.html";}
}

这两个注解有什么联系?

我们可以看下 @RestController 和 @Controller 的源码:

可以看到:

@RestController 注解可以写成是 @Controller 和 @ RespouseBody

  • @Controller :定义一个控制器,Spring框架启动时加载,把这个对象交给Spring管理。
  • @ResponseBody:定义返回的数据格式为非视图,返回一个 text/html 信息。

所以,如果我们想要返回视图的话,就将 @ResponseBody 注解去掉即可。

返回数据

要返回数据,其实就是在 @Controller 注解的基础上再加上 @ResponseBody 注解即可。

@ResponseBody 既是类注解,也是方法注解。

如果作用在类上,表示该类的所有方法,返回的都是数据;如果作用在方法上,表示该方法返回的是数据。

简单来说:在类上加@ResponseBody 相当于在所有的方法上都添加该注解;同样,如果类上有 @RestController 也是同理。

如果一个类的方法里,既有返回数据的,也有返回界面的,就将 @ResponseBody 加在对应的方法上。

@Controller
public class ResponseController {@ResponseBody@RequestMapping("/index")public Object index(){return "/index.html";}
}

返回HTML代码片段

当后端返回数据的时候,如果数据中有HTML带吗,也会被浏览器解析。

    @RequestMapping("/returnHtml")@ResponseBodypublic String returnHtml(){return "<h1>Hello,world~</h1>";}

那么如果我们用postman构建请求,获取到的是什么呢?

 我们可以发现,通过postman构建的请求,获取到的类型是 text/plain 而不是html 类型。

这个是取决于发送方的所能接收的数据类型,postman可以接收任意类型的数据,而我们用浏览器发送的请求是有限制的。浏览器能接收的类型没有 text/plain,所以浏览器会对返回的数据进行解析,这里由于我们返回的是一个html片段,所以会被解析为 html 类型。

响应中 Content-Type 常见取值有以下几种:

  • text/html:body 数据格式是html;
  • text/css:body 数据格式是css;
  • application/javaScript:body数据格式是 JavaScript;
  • application/json:body 数据格式是JSON。

返回JSON

Spring MVC不仅可以接收SON数据,还可以返回 JSON 数据。

@ResponseBody@RequestMapping("returnJson")public HashMap<String,String> returnJson(){HashMap<String,String> map=new HashMap<>();map.put("name","张三");map.put("age","20");return map;}

可以看到,返回的数据类型为json:

 

设置状态码

Spring MVC 设置状态码需要使用 HttpServletResponse 类 中的serStatus() 方法。

 @RequestMapping("setStatus")@ResponseBodypublic String setStatus(HttpServletResponse response){response.setStatus(444);return "状态码设置成功";}

设置Header

 Http响应报头也会向客户端传递一些附加信息,如服务程序的名称,请求的资源已移动到新地址等。在Spring MVC 设置请求头要使用 HttpServletResponse 类中的setHeader() 方法。

     @RequestMapping("/setHeader")@ResponseBodypublic String setHeader(HttpServletResponse response){response.setHeader("name","zhangsan");return "头设置成功";}

设置响应的类型Content-Type

在我们返回响应的时候,SpringMVC会自动将我们返回的数据或者视图设置对应的数据类型,当然,我们也可以通过代码来对返回类型进行设置。在Spring MVC中,我们设置响应的类型需要更改 @RequsetMapping 中的 produes 参数的值。

  • name():指定注解的名称,默认值为空字符串。
  • value() 和 path():这两个属性是互为别名的,它们指定了请求映射的路径。如果未指定,默认为空数组。
  • method():这个属性指定了请求方法类型,例如 GET、POST、PUT 等。默认为空数组。
  • params():这个属性指定了请求参数,默认为空数组。
  • headers():这个属性指定了请求头信息,默认为空数组。
  • consumes():这个属性指定了请求内容类型,默认为空数组。
  • produces():这个属性指定了响应内容类型,默认为空数组。

假设现在我们要返回一个指定类型为JSON的字符串:

    @ResponseBody@RequestMapping(value = "setType",produces = "application/json")public String setType(){return "{\"name\":\"zhangsan\"}";}

 

 

那么如果我们不设置这个参数,会是什么样的?

@ResponseBody@RequestMapping(value = "setType")public String setType(){return "{\"name\":\"zhangsan\"}";}

可以看到,此时返回的数据类型是text/plain 类型。 


以上就是本篇所有内容~

若有不足,欢迎指正~

http://www.dtcms.com/wzjs/543407.html

相关文章:

  • 做网站的方法及措施百度网盘app
  • 网站开发多少人工作服定制无锡帛裳 服饰实力
  • 网站备案怎么取消上海app开发制作
  • 同城网站建设潍坊网站建设咨询
  • 网站产品管理模块中国建设信用卡网站首页
  • 郑州百度网站建设做网站要分几部分完成
  • 付费内容网站百度学术查重
  • 做网站推广引流效果好吗成都全案设计公司
  • 365网站深圳龙江网站设计
  • 建设网站策划案国家正规网站查询
  • wordpress 下拉刷新六安网站优化
  • 廊坊哪里有做网站建设的网站建设方案 百度文库
  • 网站开发建设步骤设迹官网
  • 盛成广告传媒做网站的卖芒果的网络营销策划
  • 循化网站建设公司用jsp做电影网站的界面
  • 做我女朋友好不好套路网站北京网站制作招聘
  • 开发定制网站公司网页和网站设计
  • .net和php那个做网站好wordpress慢 排查
  • 只会后端不会前端如何做网站苏州做网站便宜的公司哪家好
  • 工程建设国家标准网站智能建站技术
  • 宁乡网站建设uuv9制作企业网站教程
  • 自动seo系统seo营销是什么意思
  • 做网站流行的网络公司取名字大全
  • c2c的网站有哪些东莞市手机网站建设哪家好
  • 资源网站排名优化seo公司网站建设行为规定
  • 抚州北京网站建设书店中文网站模板
  • 做网站需要做什么页面APP开发网站建设哪家好
  • 企业网站和信息化建设麦片网站建设
  • 互联网网站开发创业计划书海外域名注册网站
  • 安全网站建设的研究方法网站做友情链接的用途