**ServletConfig对象**

1.获取初始化参数
    2.获取servlet配置文件的名称

**ServletContext对象**
    
    1.一个WEB项目只有一个ServeltContext对象——域对象
    2.在N个Servlet来传递数据
    3.与天地同寿

**缺省的Servlet(了解)**
    
    1.在Tomcat服务器中,提供一个类。
    2.在tomcat/conf/web.xml中,配置DefaultServlet。访问的路径配置的是 <url-pattern>/</url-pattern>
    3.默认去处理静态的资源。
    4.如果自己编写的配置文件    <url-pattern>/</url-pattern>     千万不要配置成/
    
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>            --   改成true
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
## ServletRequest和ServletResponse ##

1.服务器来创建request和response对象。(浏览器是创建的这两个对象吗?必须错)
    2.request请求的对象(从客户端发送过来的请求,都给我找该对象)
    3.response响应的对象(在服务器端编写代码,向客户端做出响应,找该对象)
    
**ServletResponse响应的对象(从服务器端向客户端响应的)**

**介绍一些方法**
    
    void setHeader(String name, String value)          设置响应头的信息
    void setIntHeader(String name, int value)         值是int类型
    void setDateHeader(String name, long date)      值是日期类型,参数是long 毫秒值
     void addHeader(String name, String value)          设置响应头的信息
    addIntHeader(String name, int value) 
    addDateHeader(String name, long date)
    
    * 一般的情况下,一个头对应一个值.(重要)
        * setHeader(String name, String value)      
            * setHeader("xx","yy")
            * setHeader("xx","zz")
            * 结果:xx:zz
    * 特殊的情况下,一个头对应多个值
        * addHeader(String name, String value)      
            * addHeader("xx","yy")
            * addHeader("xx","zz")
            * 结果:xx:yy,zz
    
    void setStatus(int sc)                          设置状态码(200 302 )
    void setCharacterEncoding(String charset)          设置response缓冲区的编码
    void setContentType(String type)      
    void sendRedirect(String location)              可以完成重定向的功能
    
    ServletOutputStream getOutputStream()              获取输出的字节流
    PrintWriter getWriter()                          获取输出的字符流

**案例**
    
    重定向(登陆页面)                使用302和location头完成重定向
    页面定时刷新(页面读秒操作)    有一个定时刷新的头 refresh        
    禁用浏览器缓存(三个头信息)    有三个头(不要记)
    向页面输出中文(乱码问题)        
    实现文件下载                    头Content-Dispositon
    实现验证码                    
    
    
**重定向的例子(值的写法就包含项目名称)**
    
    1.特点:访问的是demo2,但是地址栏变成了demo3。记住:两次请求,两次响应。
    2.需求:登陆的html页面,用户名和密码。判断用户名和密码是否都是admin,如果都是,登陆成功,如果都不是,登陆失败(重定向到登陆页面)。
    
    3.掌握的知识
        * 重定向先理解(借钱)
        * 会编写重定向的代码(302 location)
        * location的值的路径写法:(包含项目名称)
        * 重定向的应用

4.response对象提供了一个方法,可以直接完成重定向的功能。
        * 设置状态码302  提供地址
      
        * void sendRedirect(String location)

//第一种写法
String path = request.getContextPath();
response.sendRedirect(path+"/HTML/login.html");//path:/day10
//第二种写法
response.setStatus(302);
response.setHeader("location", "/day10/HTML/login.html");

**页面定时刷新(refresh)**
    
    1.知道refresh完成的功能
    2.refresh的值的写法。
        * response.setHeader("refresh","5;url=/day10/html/sucess.html");
    3.前台的知识。
        * span标签获取文本内容
        * 加载事件    onload
        * 定时器

package response;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 页面定时刷新* */
@WebServlet("/Refresh")
public class Refresh extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse*      response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/html;charset=UTF-8");// 设置refresh头信息,过5秒进行跳转response.getWriter().write("3s后跳转");// 设置头信息(客户端绝对路径)response.setHeader("refresh", "3;url=/day10/HTML/success.html");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse*      response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

前端数字动态变化写法:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="5;url=/day10/html/sueescc.html">
<title>Insert title here</title>
</head>
<body onload="run()"><h3>页面将在<span id="spanId">5</span>秒后跳转</h3></body><script type="text/javascript">// 页面一加载,5递减// 页面加载事件 onload// 让5数字每隔一秒,递减一次var x = 5;function run(){// 获取span标签的文本内容var span = document.getElementById("spanId");span.innerHTML = x;x--;// 每隔一秒减一次window.setTimeout("run()", 1000);}</script></html>

**禁用浏览器的缓存**
    
    1.知道有三个头。
    2.头值的写法必须知道。
    3.知道禁用浏览器缓存有什么?
        * 网银系统
        * 页面的数据一直发生变化。(现在的浏览器避免了这个问题)
    4.头信息
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Pragma", "no-cache");
        // 第三个头是日期类型
        response.setDateHeader("Expires", -1);

package response;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.Timer;import org.apache.tomcat.jni.Time;/*** 禁用页面缓存 * Servlet implementation class CEPServlet*/
@WebServlet("/CEPServlet")
public class CEPServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stub// 设置三个头信息/*** Cache-Control : no-cache 字符串类型 * Pragma : no-cache 字符串类型 * Expires: -1* 日期类型(注意:设置头信息:setDateHeader(long 毫秒值))*/response.setHeader("Cache-Control", "no-cache");response.setHeader("Pragma", "no-cache");response.setDateHeader("Expires", -1);//获取当前时间Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String sDate = sdf.format(date);response.getWriter().write(sDate);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse*      response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

**向页面输出中文乱码的问题**
    
    1.向页面输出中文有乱码问题。
        * ServletOutputStream getOutputStream()          获取输出的字节流
        * PrintWriter getWriter()                                       获取输出的字符流
        
    2.解决字节输出中文乱码的问题
        *.设置浏览器打开文件时采用的编码。(编码一)        
                  response.setHeader("Content-Type", "text/html;charset=UTF-8");
          *.获取中文的字节数组也采用固定的编码。(编码二)    
                  "哈罗我的".getBytes("UTF-8")
          *.只需要编码一和编码二保证一致就不会乱码。

3.解决字符的中文乱码
        *.设置response缓冲区的编码(默认是ISO-8859-1)。
             response.setCharacterEncoding("UTF-8");
          *.设置浏览器的默认打开文件的编码
              response.setHeader("Content-Type", "text/html;charset=UTF-8");
    
    4.字符的中文乱码可以有简单的写法
        response.setContentType("text/html;charset=UTF-8");
    
    
    5.总结:使用respone对象向浏览器输出中文的。
        * 字节(response.getOutputStream().write())    
            * 设置浏览器打开文件时所采用的编码
                * response.setHeader("Content-Type", "text/html;charset=UTF-8");
            * 获取中文的字节数组的时候,提供一个编码。
                * "哈罗我的".getBytes("UTF-8")

        
        * 字符(response.getWriter().write())
            * 设置浏览器打开文件时所采用的编码
                * response.setHeader("Content-Type", "text/html;charset=UTF-8");
            * 设置response缓冲区的编码。
                * response.setCharacterEncoding("UTF-8");
            *直接用第三种写法:
                *response.setContentType("text/html;charset=UTF-8");

**文件下载**
    
    1.了解头信息    Content-Dispositon    值的写法:attachment;filename=文件的名称    我是作为附件形式打开。
    2.先准备一个文件,下载的文件。
    3.输入流(获取文件的输入流)和输出流(向浏览器端输出)
    4.知道下载的头信息的作用。

package response;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 文件下载后台程序* @author 无名系列*文档注释快捷键为:Alt+Shift+J*/
@WebServlet("/down")
public class DownloadServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/*** 分析怎么做?*     1.获取文件的输入流*     2.向客户端输出内容*     3.读写*/// 设置头信息,附件的形式打开该文件response.setHeader("Content-Disposition", "attachment;filename=mm.jpg");// 通过程序获取文件的绝对磁盘路径String path = this.getServletContext().getRealPath("/img/mm.jpg");//获取图片InputStream in = new FileInputStream(path);OutputStream os = response.getOutputStream();int len = 0;byte[] b = new byte[1024];while((len=in.read(b))!=-1) {os.write(b,0,len);}in.close();os.close();}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

**验证码分析**
    
    /**
     * 1.获取画布对象(纸)
     * 2.获取画笔的对象    
     *     2.1 画一个实心的矩形,大小和画布的大小。产生了覆盖。
     *     2.2 画一个有边框,画一个空心的矩形,
     * 3.提前准备好数据(大小写字母和数字)    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890
     *     3.1 随机的4个获取数据
     *     3.2 把随机获取的数据画到画布上
     * 4.画干扰线
     * 5.把内存中验证码输出客户端
     * 
     * 6.如果向要完成旋转的效果使用  Graphics2D对象  void rotate(double theta, double x, double y) 
     *         double theta :代表的是弧度
     *         弧度 = 角度 * Math.PI / 180;
     *         随机获取正负30之间的角度 = random.nextInt(60) - 30;
     */
    
    
**验证码**
    
    1.先知道画布的对象(BufferedImage) 画笔对象(Graphics) 把内存中的图片输出到客户端(ImageIO)
    2.相关类的一些方法,也知道。
    3.提前准备好一些数据(英文和中文也提前准备好的),随机能获取到这些字符(Random随机类)

package response;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.GrayFilter;/**编写验证码* */
@WebServlet("/CheckCode")
public class CheckCode extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse*      response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/*** 1.获取画布对象(纸)* 2.获取画笔的对象    *   2.1 画一个实心的矩形,大小和画布的大小。产生了覆盖。*    2.2 画一个有边框,画一个空心的矩形,* 3.提前准备好数据(大小写字母和数字)   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890*     3.1 随机的4个获取数据*  3.2 把随机获取的数据画到画布上* 4.画干扰线* 5.把内存中验证码输出客户端* * 6.如果向要完成旋转的效果使用  Graphics2D对象  void rotate(double theta, double x, double y) *         double theta :代表的是弧度*        弧度 = 角度 * Math.PI / 180;*      随机获取正负30之间的角度 = random.nextInt(60) - 30;*/int width = 120;int height = 30;//获取画布对象BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//获取画笔对象Graphics2D g = (Graphics2D)image.getGraphics();//设置画笔颜色g.setColor(Color.GRAY);//画一个实心矩形g.fillRect(0, 0, width, height);//画一个边框——一个空心矩形g.drawRect(0, 0, width-1, height-1);//准备数据String words="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";//随机获取数据Random random = new Random();g.setColor(Color.RED);// 设置字体(字体样式,粗体,大小)g.setFont(new Font("隶书", Font.BOLD, 20));//获取4个数据int x=20;int y=20;for(int i = 0;i<4;i++) {// 完成旋转的效果/***     double theta :代表的是弧度*    弧度 = 角度 * Math.PI / 180;*  随机获取正负30之间的角度 = random.nextInt(60) - 30;*/// 随机获取正负30之间的角度int jiaodu = random.nextInt(60)-30;double hudu = jiaodu*Math.PI/180;//画弧线g.rotate(hudu,x,y);int index = random.nextInt(words.length());char ch = words.charAt(index);// 画到画布上区g.drawString(ch+"", x, y);g.rotate(-hudu,x,y);x=x+20;}//画干扰线g.setColor(Color.GREEN);int x1,x2,y1,y2;for(int i = 0;i<4;i++) {x1=random.nextInt(width);x2=random.nextInt(width);y1=random.nextInt(height);y2=random.nextInt(height);g.drawLine(x1, y1, x2, y2);}//释放资源g.dispose();//把图片输出到客户端ImageIO.write(image,"jpg", response.getOutputStream());}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse*      response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

**ServletRequest请求的对象(从客户端来的)**
    
    * String getParameter(String name)              获取请求的参数(文本框,密码框)
    * String[] getParameterValues(String name)         获取请求的参数(复选框)
     * Map<String,String[]> getParameterMap()         获取请求参数(封装数据,使用该方法)
     
    * Object getAttribute(String name)                 通过元素节点的属性名称获取属性的值
     * void setAttribute(String name, Object o)    设置属性的值
     * void removeAttribute(String name)             删除
      
    * String getHeader(String name)                 获取请求头    referer  user-agent

**获取客户端的一些信息**
    
    1.重点:getContextPath()  -- 获取虚拟路径的名称(默认和项目名称相同)
    http://localhost:8080/day10/AServlet?username=xxx&password=yyy
    > String getScheme():获取协议,http
    > String getServerName():获取服务器名,localhost
    > String getServerPort():获取服务器端口,8080
    > *****String getContextPath():获取项目名,/day10
    > String getServletPath():获取Servlet路径,/AServlet
    > String getQueryString():获取参数部分,即问号后面的部分。username=xxx&password=yyy
    > String getRequestURI():获取请求URI,等于项目名+Servlet路径。/day10/AServlet
    > String getRequestURL():获取请求URL,等于不包含参数的整个请求路径。http://localhost:8080/day10/AServlet

**获取请求头的信息**
    
    1.String getHeader(String name)     获取头信息
    2.请求头
        * if-modified-since        控制缓存
        * referer                记住当前网页的来源(防止盗链)
        * user-agent                判断浏览器的版本

refer的简单例子:

package request;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**获取请求头信息* */
@WebServlet("/HeaderServlet")
public class HeaderServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String agent = request.getHeader("user-agent");//System.out.println(agent);//获取跳转到这里的源网址String referer = request.getHeader("referer");//System.out.println(referer);//referer作用:防盗链response.setContentType("text/html;charset=UTF-8");if(referer.equals("http://localhost:8080/day10/HTML/good.html")) {response.getWriter().write("正在播放....");}else {response.getWriter().write("不能播放....");}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse*      response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

**获取请求的参数(表单)**
    
    * String getParameter(String name)              获取请求的参数(文本框,密码框)
    * String[] getParameterValues(String name)         获取请求的参数(复选框)
     * Map<String,String[]> getParameterMap()         获取请求参数(封装数据,使用该方法)
    
    1.注意:getParameter获取是一个key对应一个value的情况。(文本框、密码框)
    2.注意:getParameterValues获取第一个key对应多个value的情况。(复选框)
    3.注意:getParameter(参数:表单的name属性的值)
     
    4.总结:request对象获取中文乱码的问题(注意和response区分)
        * post提交
            * 设置request缓冲区的编码(注意:放在获取参数的方法之前)
            * request.setCharacterEncoding("UTF-8");
        * get提交
            * 先获取请求参数
            * username = new String(username.getBytes("ISO-8859-1"),"UTF-8");

**request域对象**
    
    1.ServletContext对象:代表整个WEB应用。服务器一启动,就创建一个ServletContext对象。
    2.request域对象:就是一次请求的范围内。(重定向是两次请求,可不可以使用request域在重定向中进行传递数据呢?)答:不能。
    
    * Object getAttribute(String name)                 获取属性的值
     * void setAttribute(String name, Object o)         设置属性值
     * void removeAttribute(String name)                删除属性值
    
**转发和重定向的区别(面试题)**

1.重定向:借钱。
    2.转发:也是借钱。
    
    3.想完成转发的操作
        * RequestDispatcher getRequestDispatcher(String path) 
        * request.getRequestDispatcher(path);返回是RequestDispatcher的对象。在这个对象有两个方法,
        * void forward(ServletRequest request, ServletResponse response)  就是转发的方法
         
    4.转发和重定向的区别
        * 重定向的地址栏发生变化,转发地址栏不会发生变化。
        * 重定向是两次请求和响应,转发是一次请求和响应。
        * 重定向不能使用request域对象传值,转发可以使用request域对象传值。
        * 重定向的路径(/day10/request2),转发的路径(/request2)
        * 重定向可         以定向到任何页面(网络上的资源),转发只能在web应用内部。

例子:

package request;import java.io.IOException;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**转发* Servlet implementation class RequestDemo1*/
@WebServlet("/request1")
public class RequestDemo1 extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub//转发:RequestDispatcher//向request域存入值request.setAttribute("msg", "小风");// 一访问request1的话,使用转发的代码,转发到request2中// 获取RequestDispatcher对象RequestDispatcher dispatcher = request.getRequestDispatcher("/request2");// 一个forward方法就是转发dispatcher.forward(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
package request;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class RequestDemo2*/
@WebServlet("/request2")
public class RequestDemo2 extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stub// 从request的域中获取值String msg = (String) request.getAttribute("msg");// 向页面输出一句内容response.setContentType("text/html;charset=UTF-8");// 输出中文response.getWriter().write("已经访问到了:" + msg);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse*      response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

**细节**
    
    1.字节流和字符流互斥的,不能一起使用。
    2.在完成的时候,会把response的缓冲区清空。
    
**RequestDispatcher类**
    
    1.void forward(ServletRequest request, ServletResponse response)  转发(重点)
    2.void include(ServletRequest request, ServletResponse response)  包含(了解) 可以把几个页面包含到一起,完成页面的布局工作。

request.getParameter()    获取参数列表(和form表单或者超链接提交有关的)

request.getAttribute()  获取request域对象中的值的

**路径的问题**
    
    1.ServletContext域对象有两个方法
        * getResourceAsStream("路径的写法不包含项目名称  /WEB-INF/classes/xxx ")
        * getRealPath("路径的写法不包含项目名称   /WEB-INF/classes/xxx")
    

    2.重定向
        * 路径的写法:必须包含项目名称    response.setHeader("location","包含项目名称   /day10/demox");
    
    3.转发的路径
        * 路径的写法:不包含项目名称    request.getRequestDispatcher("不包含项目名称   /demox").forward(request, response);
    
    4.refresh定时刷新路径
        * response.setHeader("refresh","5;url=/day10/demox");

WEB——Request与Response相关推荐

  1. PWA(Progressive Web App)入门系列:Fetch Request Headers Response Body

    前言 在 WEB 中,对于网络请求一直使用的是 XMLHttpRequest API 来处理,XMLHttpRequest 也很强大,传统的 Ajax 也是基于此 API 的.那么为什么 W3C 标准 ...

  2. golang web 服务器 request 与 response 处理

    golang web 服务器 request 与 response 处理 介绍常见 web 服务的实现与输入.输出数据处理.包括:静态文件服务.js 请求支持.模板输出.表单处理.Filter 中间件 ...

  3. Web——Request转发和Response重定向

    • Request请求转发 ○ 请求转发§ 请求转发(forward):一种在服务器内部的资源跳转方式§ ○ 实现方式:§ request.getRequestDispatcher("资源B ...

  4. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  5. 简单了解request与response

    本文对 request. response 简单描述,未涉及到具体的浏览器缓存.重定向.请求转发等代码部分. 一.Web服务器,浏览器,代理服务器 在看 response.request 对象之前,先 ...

  6. request 和response

    当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...

  7. request和response一览

    1.HTTP SERVLETRESPONSE简介 set heade set int head set data head add haed add int head add int head 字节流 ...

  8. request、response 中文乱码问题与解决方式

    request.response 中文乱码问题与解决方式 request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码: response乱码指的是:服务器向 ...

  9. ASP.NET之Request和Response对象

    经过了牛腩新闻公布系统和html的学习对B/S开发的流程有了些理解.前面尽管用到了非常多知识.但对制作网页仅仅能说知其然.当学到asp.net视频中的解说才干够说開始知其所以然了. 今天来说说clie ...

最新文章

  1. 使用Node.js快速搭建WebSocket server
  2. 安装Exchange2003时出0XC1037AE6错误的解决方法.
  3. CentOS挂载NTFS移动硬盘
  4. 上传一批动画教程(链接已失效)
  5. word把选择答案弄到题目里_word中把选择题的正确答案自动填到括号里技巧
  6. python编程高手教程_写给编程高手的Python教程(01) 数据结构
  7. 手把手系列|实操市场风险Var
  8. 可用性测试的权衡之道
  9. python之路-基础篇-002
  10. 【JAVA错误笔记】 - Unable add facets project AnnotationWebService CXF 2-x Web Services
  11. 《YUI 3 Cookbook 中文版》
  12. DZ X页头主菜单背景图片透明自由更换页头背景图片的方法
  13. 10家不错的iphone编程资源站
  14. 拼写错误python能正常启动吗_拼写检查
  15. linux系统开发安卓应用,在 Linux 里搭建 Android App 开发环境
  16. csma研究背景_CSMA/CD协议的特点
  17. (译)使用Go语言从零编写PoS区块链
  18. Codeforces 1612C. Keshi Is Throwing a Party
  19. 嵌入式基础学习-U-Boot使用
  20. 图像保边滤波算法集锦系列

热门文章

  1. NET6使用PaddleOCR识别图片中的文字信息
  2. C# Process.HasExited准确性
  3. c# IE浏览器清除缓存没用
  4. OCJP(1Z0-851) 模拟题分析(三)
  5. 百家讲坛_我读经典17_《易经》与人生-曾仕强(转)
  6. 使用dynamic_cast报错source type is not polymorphic
  7. JAVA使用barcode4j生成条形码和二维码图片以及带logo的二维码,验证码图片
  8. 火灾报警设计multisim仿真
  9. MATALB运用——最小二乘法拟合
  10. Handle Protocol