服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用

一,响应报头

响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息

常用的响应报头

Location

Content-Type

Referer

 二,在Servlet中设置HTTP响应报头HttpServletResponse接口

              使用HttpServletResponse的setHeader方法,参数为报头名字和报头的值。  和设置状态代码一样。必须在返回实际的文档之前指定相关的报头。

setDateHeader(String headerName,Long 毫秒数):设置含有日期和整数的报头。

setIntHeader(String header,int headerValue):将int类型的状态代码转换为String插入报头。

 Http容许相同的报头多次出现,上面3中方法将替换任何同名的已有报头。而使 addHeader,addDateHeader和addIntHeader方法添加一个报头。  可以使用containsHeader发发进行检查是否已经设置了特定的报头。

HttpServletResponse常用的设置报头的方法。

setContentType(String mimeType)方法设置Content-type报头。

setContentLength(int length)发发设置Content-length报头,用于浏览器持续性HTTP连接。

addCookie(Cookie c)方法:向set-cookie报头插入一个cookie。

sendRedirect(String url)方法,设置设置状态码和Location报头。

三,构建Excel电子表格 (响应报头Content-type的应用)

Excel至少接受3种不同格式的输出:用制表符分隔的数据,HTML表格和本地二进制格式。  使用Content-type响应报头告诉客户程序正在发送电子表格。使用setContentType设置Content-type响应头。Excel表格的MIME类型是application/vnd.ms-excel

使用制表符分隔的数据生成电子表格:

response.setContentType(“application/vnd.ms-excel;charset=gb2312”);

PrintWriter out = response.getWriter();

输出含有制表符/t的一些数据,不需要输出HTML标签。

四,servlet状态的维持和页面的自动重载。(servlet数据存储方式和Referer响应报头的应用)

servlet状态的维持,对于servlet或jsp需要较长时间来处理的请求:

1,跨请求存储数据,维护状态     不专属任意客户的数据,存储在servlet的字段中。     对于用户专属数据,存储在HttpSession对象中。     对于其他servlet或jsp需要用到的数据,存储在ServletContext中。

2,在请求发送给客户程序后,继续进行处理。     启动一个线程响应请求,响应之后自动结束线程。另个线程将继续保持运行处理请求,为保持服务器性能,将继续处理请求的线程优先级调低。

3,在需要较长时间处理的请求处理完后,指示浏览器请求更新。     由于浏览器不维护与服务器之间的连接,服务器需要主动将结果发送给浏览器。     所以使用Referer响应报头,指示浏览器请求更新。

五,使用Servlet生成图像和文字(响应报头Content-Type的应用)

    (1),把图像文件写入磁盘并提供连接。注意写在您的web服务器目录树下(不是在服务器磁盘的任何地方都行)。   

在一些servlet引擎设置中,servlet的目录不能通过web server进入,只能通过servlet引擎。   也就是说您不能通过http:// URL登录,您可以向您的servlet输出的HTML传送IMG标签,或传送HTTP重新定位来让浏览器直接下载图象。   

(CookieDetector (http://www.purpletech.com/code/CookieDetector.html) has an example, with source code, of sending a redirect.)     (CookieDetector (http://www.purpletech.com/code/CookieDetector.html)   有一个例子,有传送重新定位源代码。    图象可以被保存在浏览器的cache中,当再次请求时不必重新运行servlet,因此减轻了服务器的负担。    

图象不能从磁盘中删除,因此您必须写一段程序来定期清理图象目录,或进入目录 后用手工删除。(或买一张大点的硬盘)

(2),用Java 2 JPEGCodec类,或Acme Labs‘ GIFEncoder类将Java Graphics 转换成图象文件或二进制流。

在<img>的src属性中调用实现上述功能的 Servlet并传递相关的参数,如背景图片路径、输出文字、文字输出的位置、字体、大小等,   由该Servlet进行图文处理,并返回处理后的图像数据,从而在网页上显示出加上文字的图像。    这个原理也是实现将数据库中的图像数据显示到网页上所用的原理。

实现方法:   

1,设置Content-Type响应报头为“images/jpeg”或“image/gif”或其他图片类型的报头。

使用HttpServletResponse的setContentType方法设置。必须在返回实际的内容之前指定相关的报头。

2,获取原始的输出流。

使用ServletResponse接口的getOutputSteam方法。    注意:request的getOutputStream和getWriter不能同时使用 也不能重复调用。前者为输出流后者为打印流!

3,获取图片的真实路径,封装为File对象。

使用ServletContext接口的getRealPath方法指定虚拟路径,把虚拟路径映射为真实路径。    File类

4,获取二进制文件流。

图片大多数是二进制数据,所以使用字节输入流读入图片文件的。使用FileInputSteam类。

5,创建图片在程序内的缓冲对象:BufferedImage对象。

通过构造函数创建一个BufferedImage对象。给出宽度,高度,以及由BufferedImage类中定义的常量所定义的图像类型。

**可以在BufferedImage上绘制内容。调用图像的getGraphics方法,将得到的Graphics对象转换成Graphics2D,使用Graphics2D 来进行绘画操作。  

6,对图片进行解编输入码输出处理的二种方法。

【1】,使用专门的API处理jpg图片或gif图片:读入文件解码输入,放入BufferedImage缓冲对象后编码输出。

JPG和GIF图片文件可以使用com.sun.image.codec.jpeg.JPEGImageDecoder类和Acme Labs的GIFEncoder类。

对输入流数据进行解码后输入

JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(二进制文件流)方法 返回将读入的二进制文件流按jpg图片格式进行解码的解码器对象。

图片缓冲对象临时存储解码图片       

BufferedImage image = decoder.decodeAsBufferedImage()方法将解码后的图片放入BufferedImage缓冲对象 中。

对输出流数据进行编码后输出

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(输出流)方法 返回 jpg格式图片的编码器对象。

对输出流进行编码器的封装。  

encoder.encode(BufferedImage缓冲对象),将BufferedImage缓冲对象进行编码后让输出流输出。

[java] view plaincopy

  1. package com.qu.servlet.responseHeaders.contentType;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.image.*;
  6. import java.io.File;
  7. import java.io.FileInputStream;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import javax.servlet.ServletConfig;
  11. import javax.servlet.ServletException;
  12. import javax.servlet.ServletOutputStream;
  13. import javax.servlet.http.HttpServlet;
  14. import javax.servlet.http.HttpServletRequest;
  15. import javax.servlet.http.HttpServletResponse;
  16. import com.sun.image.codec.jpeg.*;
  17. public class JpegImageServlet extends HttpServlet {
  18. private String text = "";               //要嵌的文字
  19. private String imagePath = "";          //被嵌的图片的虚拟路径
  20. private int x = 0;                      //坐标
  21. private int y = 0;
  22. private String fontColor = "";          //字体颜色
  23. private int fontSize = 0;               //字体大小
  24. private String fontStyle = "";          //字体风格(斜体,粗体等)
  25. private String fontName = "";           //字体名称
  26. private String realPath;                //图片绝对路径
  27. public JpegImageServlet() {
  28. super();
  29. }
  30. /* (non-Javadoc)
  31. * @see javax.servlet.GenericServlet#destroy()
  32. */
  33. @Override
  34. public void destroy() {
  35. super.destroy();
  36. }
  37. /* (non-Javadoc)
  38. * @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
  39. */
  40. @Override
  41. public void init(ServletConfig config) throws ServletException {
  42. System.out.println("11111111111");
  43. text = this.getStrParameter(config,"text","");
  44. imagePath = this.getStrParameter(config,"imagePath","");
  45. x = this.getIntParameter(config,"x",0);
  46. y = this.getIntParameter(config,"y",0);
  47. fontColor = this.getStrParameter(config,"fontColor","");
  48. fontSize = this.getIntParameter(config,"fontSize",16);
  49. fontStyle = this.getStrParameter(config,"fontStyle","‘");
  50. fontName = this.getStrParameter(config,"fontName","");
  51. realPath = config.getServletContext().getRealPath(imagePath);
  52. }
  53. /* (non-Javadoc)
  54. * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  55. */
  56. @Override
  57. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  58. throws ServletException, IOException {
  59. /*请求处理*/
  60. request.setCharacterEncoding("gb2312");
  61. /*响应处理*/
  62. response.setContentType("image/jpeg; charset=gb2312");
  63. ServletOutputStream output = response.getOutputStream();
  64. File imageFile = new File(realPath);
  65. InputStream input = new FileInputStream(imageFile);
  66. JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(input);
  67. BufferedImage bufimg = decoder.decodeAsBufferedImage();
  68. /**/
  69. Graphics g = bufimg.createGraphics();
  70. g.setColor(Color.white);//设置颜色
  71. Font mFont = new Font(fontName,Font.PLAIN,fontSize);//设置字体为默认字体
  72. if(fontStyle.equalsIgnoreCase("italic")) {
  73. mFont=new Font(fontName,Font.ITALIC,fontSize);
  74. }
  75. if(fontStyle.equalsIgnoreCase("bold")) {
  76. mFont=new Font(fontName,Font.BOLD,fontSize);
  77. }
  78. if(fontStyle.equalsIgnoreCase("plain")){
  79. mFont=new Font(fontName,Font.PLAIN,fontSize);
  80. }
  81. g.setFont(mFont);
  82. g.drawString(text,x,y);//输出文字
  83. System.out.println("33333");
  84. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
  85. encoder.encode(bufimg);
  86. input.close();
  87. output.close();
  88. }
  89. /* (non-Javadoc)
  90. * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  91. */
  92. @Override
  93. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  94. throws ServletException, IOException {
  95. this.doGet(req, resp);
  96. }
  97. public String getStrParameter(ServletConfig config, String parameter, String defaultValue){
  98. String paraValue = config.getInitParameter(parameter);
  99. if (paraValue != null && !paraValue.equals("")){
  100. //需要的话将参数值转码
  101. }else{
  102. paraValue = defaultValue;
  103. }
  104. return paraValue;
  105. }
  106. public int getIntParameter(ServletConfig config, String parameter, int defaultValue){
  107. int paraValue;
  108. String temp = config.getInitParameter(parameter);
  109. if (temp != null && !temp.equals("")){
  110. paraValue = Integer.parseInt(temp);
  111. }else{
  112. paraValue = defaultValue;
  113. }
  114. return paraValue;
  115. }
  116. }

【2】,使用javax.imageio.ImageIO类对响应报头中指定的图片类型进行解编码处理。     使用ImageIO类的write方法,该方法根据不同用途进行了重载。  

使用ImageIO类的Read方法读入一个输入流获得一个BufferedImage对象。

使用ImageIO类的write方法,该方法进行了重载。

使用ImageIO类的write,传递一个BufferedImage缓冲对象(进行了自定义的绘图操作和缓冲了读入的图片),指定一个String的图片格式类型,一个输出流对象。

[java] view plaincopy

  1. package com.qu.servlet.responseHeaders.contentType;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.image.BufferedImage;
  6. import java.io.File;
  7. import java.io.FileInputStream;
  8. import java.io.IOException;
  9. import javax.imageio.ImageIO;
  10. import javax.servlet.ServletConfig;
  11. import javax.servlet.ServletException;
  12. import javax.servlet.ServletOutputStream;
  13. import javax.servlet.http.HttpServlet;
  14. import javax.servlet.http.HttpServletRequest;
  15. import javax.servlet.http.HttpServletResponse;
  16. public class ImageIOServlet extends HttpServlet {
  17. private String text = "";               //要嵌的文字
  18. private String imagePath = "";          //被嵌的图片的虚拟路径
  19. private int x = 0;                      //坐标
  20. private int y = 0;
  21. private String fontColor = "";          //字体颜色
  22. private int fontSize = 0;               //字体大小
  23. private String fontStyle = "";          //字体风格(斜体,粗体等)
  24. private String fontName = "";           //字体名称
  25. private String realPath;                //图片绝对路径
  26. public ImageIOServlet() {
  27. super();
  28. }
  29. /* (non-Javadoc)
  30. * @see javax.servlet.GenericServlet#destroy()
  31. */
  32. @Override
  33. public void destroy() {
  34. super.destroy();
  35. }
  36. /* (non-Javadoc)
  37. * @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
  38. */
  39. @Override
  40. public void init(ServletConfig config) throws ServletException {
  41. System.out.println("11111111111");
  42. text = this.getStrParameter(config,"text","");
  43. imagePath = this.getStrParameter(config,"imagePath","");
  44. x = this.getIntParameter(config,"x",0);
  45. y = this.getIntParameter(config,"y",0);
  46. fontColor = this.getStrParameter(config,"fontColor","");
  47. fontSize = this.getIntParameter(config,"fontSize",16);
  48. fontStyle = this.getStrParameter(config,"fontStyle","‘");
  49. fontName = this.getStrParameter(config,"fontName","");
  50. realPath = config.getServletContext().getRealPath(imagePath);
  51. System.out.println(realPath);
  52. }
  53. /* (non-Javadoc)
  54. * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  55. */
  56. @Override
  57. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  58. throws ServletException, IOException {
  59. /*请求处理*/
  60. request.setCharacterEncoding("gb2312");
  61. /*响应处理*/
  62. response.setContentType("image/gif; charset=gb2312");
  63. ServletOutputStream output = response.getOutputStream();
  64. File imageFile = new File(realPath);
  65. FileInputStream imgInput = new FileInputStream(imageFile);
  66. //Image img = ImageIO.read(imgInput);
  67. BufferedImage bimg = ImageIO.read(imgInput);
  68. /**/
  69. Graphics g = bimg.getGraphics();
  70. g.setColor(Color.red);//设置颜色
  71. Font mFont = new Font(fontName,Font.PLAIN,fontSize);//设置字体为默认字体
  72. if(fontStyle.equalsIgnoreCase("italic")) {
  73. mFont=new Font(fontName,Font.ITALIC,fontSize);
  74. }
  75. if(fontStyle.equalsIgnoreCase("bold")) {
  76. mFont=new Font(fontName,Font.BOLD,fontSize);
  77. }
  78. if(fontStyle.equalsIgnoreCase("plain")){
  79. mFont=new Font(fontName,Font.PLAIN,fontSize);
  80. }
  81. g.setFont(mFont);
  82. g.drawString(text,x,y);//输出文字
  83. ImageIO.write(bimg, "gif", output);
  84. bimg.flush();
  85. imgInput.close();
  86. output.close();
  87. }
  88. /* (non-Javadoc)
  89. * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  90. */
  91. @Override
  92. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  93. throws ServletException, IOException {
  94. this.doGet(req, resp);
  95. }
  96. public String getStrParameter(ServletConfig config, String parameter, String defaultValue){
  97. String paraValue = config.getInitParameter(parameter);
  98. if (paraValue != null && !paraValue.equals("")){
  99. //需要的话将参数值转码
  100. }else{
  101. paraValue = defaultValue;
  102. }
  103. return paraValue;
  104. }
  105. public int getIntParameter(ServletConfig config, String parameter, int defaultValue){
  106. int paraValue;
  107. String temp = config.getInitParameter(parameter);
  108. if (temp != null && !temp.equals("")){
  109. paraValue = Integer.parseInt(temp);
  110. }else{
  111. paraValue = defaultValue;
  112. }
  113. return paraValue;
  114. }
  115. }

【3】,不使用解码和编码来处理输入流和输出流。直接BufferedOutputStream输出缓冲流,输出BufferedImage缓冲对象。

[java] view plaincopy

  1. response.setContentType("images/jpeg"); //设置响应报头
  2. OutputStream output = response.getOutputStream();//得到输出流
  3. ServletContext context = getServletContext();//得到上下文对象
  4. InputStream imageIn=context.getResourceAsStream(imagePath);//文件流
  5. BufferedInputStream bis=new BufferedInputStream(imageIn);//使用输入流初始化输入缓冲流。
  6. BufferedOutputStream bos=new BufferedOutputStream(output);//使用输出流构造输出缓冲流。
  7. byte data[]=new byte[4096];//缓冲字节数
  8. int size= bis.read(data); //初始化读入
  9. while (size!=-1)
  10. {
  11. bos.write(data,0,size);//输出读入的字节数数据
  12. size=bis.read(data);//读取字节数数据
  13. }//end while
  14. bis.close();//关闭输入缓冲流
  15. bos.flush();//清空输出缓冲流
  16. bos.close();
  17. output.close();//关闭输出流

WEB.XML

[xml] view plaincopy

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <web-app version="2.4"
    3. xmlns="http://java.sun.com/xml/ns/j2ee"
    4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    7. <welcome-file-list>
    8. <welcome-file>imageIO</welcome-file>
    9. </welcome-file-list>
    10. <!-- Servlet start -->
    11. <servlet>
    12. <servlet-name>ExcelServlet</servlet-name>
    13. <servlet-class>com.qu.servlet.responseHeaders.contentType.ExcelServlet</servlet-class>
    14. </servlet>
    15. <servlet>
    16. <servlet-name>JpegImageServlet</servlet-name>
    17. <servlet-class>com.qu.servlet.responseHeaders.contentType.JpegImageServlet</servlet-class>
    18. <init-param>
    19. <param-name>text</param-name>
    20. <param-value>新闻</param-value>
    21. </init-param>
    22. <init-param>
    23. <param-name>imagePath</param-name>
    24. <param-value>/images/bg.jpg</param-value>
    25. </init-param>
    26. <init-param>
    27. <param-name>x</param-name>
    28. <param-value>20</param-value>
    29. </init-param>
    30. <init-param>
    31. <param-name>y</param-name>
    32. <param-value>20</param-value>
    33. </init-param>
    34. <init-param>
    35. <param-name>fontColor</param-name>
    36. <param-value>red</param-value>
    37. </init-param>
    38. <init-param>
    39. <param-name>fontSize</param-name>
    40. <param-value>16</param-value>
    41. </init-param>
    42. <init-param>
    43. <param-name>fontStyle</param-name>
    44. <param-value>bold</param-value>
    45. </init-param>
    46. <init-param>
    47. <param-name>fontName</param-name>
    48. <param-value>宋体</param-value>
    49. </init-param>
    50. </servlet>
    51. <servlet>
    52. <servlet-name>ImageIOServlet</servlet-name>
    53. <servlet-class>com.qu.servlet.responseHeaders.contentType.ImageIOServlet</servlet-class>
    54. <init-param>
    55. <param-name>text</param-name>
    56. <param-value>漫画美女!</param-value>
    57. </init-param>
    58. <init-param>
    59. <param-name>imagePath</param-name>
    60. <param-value>/images/MM.gif</param-value>
    61. </init-param>
    62. <init-param>
    63. <param-name>x</param-name>
    64. <param-value>50</param-value>
    65. </init-param>
    66. <init-param>
    67. <param-name>y</param-name>
    68. <param-value>30</param-value>
    69. </init-param>
    70. <init-param>
    71. <param-name>fontColor</param-name>
    72. <param-value>black</param-value>
    73. </init-param>
    74. <init-param>
    75. <param-name>fontSize</param-name>
    76. <param-value>20</param-value>
    77. </init-param>
    78. <init-param>
    79. <param-name>fontStyle</param-name>
    80. <param-value>bold</param-value>
    81. </init-param>
    82. <init-param>
    83. <param-name>fontName</param-name>
    84. <param-value>隶书</param-value>
    85. </init-param>
    86. </servlet>
    87. <!-- servlet end -->
    88. <!-- servlet mapping start -->
    89. <servlet-mapping>
    90. <servlet-name>ExcelServlet</servlet-name>
    91. <url-pattern>/excel</url-pattern>
    92. </servlet-mapping>
    93. <servlet-mapping>
    94. <servlet-name>JpegImageServlet</servlet-name>
    95. <url-pattern>/jpegImage</url-pattern>
    96. </servlet-mapping>
    97. <servlet-mapping>
    98. <servlet-name>ImageIOServlet</servlet-name>
    99. <url-pattern>/imageIO</url-pattern>
    100. </servlet-mapping>
    101. <!-- servlet mapping end -->
    102. </web-app>

服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用,布布扣,bubuko.com

时间: 2024-10-09 17:00:44

服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用的相关文章

服务器响应的生成:HTTP状态代码——HttpServletResponse接口应用

一 HTTP响应的格式              web服务器对客户端的响应一般包含:一个状态行,一些响应报头,一个空行和相应的文档构成.               1,状态行: 状态行由HTTP版本,一个状态代码以及一段对应状态代码的简短消息组成,表示请求是否被理解或被满足.HTTP版本由服务器决定.状态码一般由系统自动设置为200.也可以用Servlet设置状态码.消息巍峨自定义. 2,响应报. 3,空行 4,文档 二 如何设置状态代码 在向客户程序发送任何文档内容之前调用方法设置状态代码

HTTP/NSURLConnection(请求、响应)、http响应状态码大全

一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻视频:优酷.百度视频.搜狐视频.爱奇艺视频音乐:QQ音乐.百度音乐.酷狗音乐.酷我音乐LBS:百度地

如何合理高效地设置响应式设计的响应点

你可以轻易找到许多如何设置响应式设计响应点的攻略,但是这些过时的设计方法都是以主流屏幕尺寸为依据的,效果并不理想.其实并没有"主流"屏幕尺寸这一概念.另外一个主流的方法是当布局被打破时设置响应点.这个方法听起来好一些.但是仍有疑问,我们怎么判断是否布局被打破了呢?其中一个合理回答是依照经典可读性理论定义响应点. 多种因素决定理想尺寸 许多因素决定了理想尺寸的大小.比如,德语的长度比英语长,那就需要更宽的位置了.你理解对了:对于需要多种语言的国际网站你必须有不同的栅格.字体.字号.背景对

服务器唯一id生成规则

在使用hashCode的时候,发现会出现相同id,虽然几率很小.虽然发现并不是hashCode的原因,而是其他逻辑的问题. 但是还是试着自己写了一个id生成器,有些id是int的,比如说任务id:有些id是long的,比如说玩家id. 先贴代码来看: private static AtomicInteger id = new AtomicInteger(0); public static long getId() { return (ServerKit.getServerId() & 0xFFF

C#如何生成JSON字符串提交给接口(服务器)

第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) 第四章:C#如何生成JSON字符串提交给接口(服务器)? 上一篇文章中我们写的C#生成JSON字符串,那么我们生成的字符串要干嘛呢?当然是将数据提交给服务器啦.一般用过接口来接受这个JSON. 这里我们会用到第一章中的一个 类.HttpUitls里面的Post方法. 非常简单: public static string Post(string

(10)响应式宣言、响应式系统与响应式编程——响应式Spring的道法术器

本系列文章索引<响应式Spring的道法术器>前情提要 响应式编程 | 响应式流 1.5 响应式系统 1.5.1 响应式宣言 关注"响应式"的朋友不难搜索到关于"响应式宣言"的介绍,先上图: 这张图凝聚了许多大神的智慧和经验,见官网,中文版官网,如果你认可这个宣言的内容,还可以签下你的大名.虽然这些内容多概念而少实战,让人感觉是看教科书,但是字字千金,不时看一看都会有新的体会和收获. 这也是新时代男朋友的行为准则: Responsive,要及时响应,24

Servlet--HttpServletRequest接口,HttpServletResponse接口

HttpServletRequest接口 定义 public interface HttpServletRequest extends ServletRequest; 用来处理一个对 Servlet 的 HTTP 格式的请求信息. 方法 1.getAuthType public String getAuthType(); 返回这个请求的身份验证模式. 2.getCookies public Cookie[] getCookies(); 返回一个数组, 该数组包含这个请求中当前的所有 cookie

Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用

对请求报头的访问,使Servlet可以执行许多优化,创建高效的Servlet. 一,在Servlet 中读取HTTP请求报头 —— HttpServletRequest接口  在Servlet中读取HTTP头,调用HttpServletRequest的getHeader方法. getHeader(String  报头名)方法:返回客户请求中提供的指定头信息.结果为字符,参数不区分大小写:否则,返回null.   在调用该方法获取结果之前确保HOST不为空. 查看请求头信息:  getCookie

Mybatis自动生成实体类、dao接口和mapping映射文件

由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到工程中稍微修改就可以直接使用了. 生成器目录如下: 首先进入lib文件夹中,该目录如下: (图上文件下载地址:http://download.csdn.net/detail/qiwei31229/9790909) 主要修改generatorConfig.xml <?xml version="1