您的位置:首页 > 产品设计 > UI/UE

request和response操作响应行头体信息

2016-11-04 22:26 295 查看
请求:

请求行:

1.Get方式,请求参数放在请求行上,需要一个一个转。

    new String(ss.getBytes(“iso8859-1”),”utf-8”);

    因为行、头 字符集固定为iso8859-1

    Post方式,请求参数放在请求体重,只需要修改请求体的字符集为UTF-8即可

    Request.setCharacterEncoding(“utf-8”);

    注意:请求体字符集设置,必须放在读取请求体内容之前。getParameter这类方法之前,否则无效

2.String getMethod()    该方法用于获取HTTP请求消息中的请求方式(如GET、POST等)

3.String getRequestURI()    该方法用于获取请求行中资源名称部分,即位于URL的主机和端口之后、参数部分之前的部分

4.String getContextPath()    该方法用于获取请求URL中属于WEB应用程序的路径,这个路径以“/”开头,表示相对于整个WEB站点的根目录,路径结尾不含“/”。如果请求URL属于WEB站点的根目录,那么返回结果为空字符串(””)

动态获取当前的项目名

例如:/web12_1

5.String getRemoteAddr()    该方法用于获取请求客户端的IP地址,其格式类似于“192.168.0.3”

Localhost

127.0.0.1

0:0:0:0:0:0:0:1

------------------

请求头:

Request操作请求头

方法声明    功能描述

String getHeader(String name)    该方法用于获取一个指定头字段的值,如果请求消息中没有包含指定的头字段,getHeader()方法返回null;如果请求消息中包含有多个指定名称的头字段,getHeader()方法返回其中第一个头字段的值

响应:

响应行: 响应状态码

response.setStatus(int status);

response.sendError(int status,String msg);//设置错误状态码4xx,5xx时,会将错误信息显示出来

响应头:

Response.setHeader(String name,String value);//设置响应头  如果name相同,新值覆盖旧值

    响应头是可以自定义,但是没有意义

    Name忽略大小写的

Response.addHeader(String name,String value);//追加响应头   如果name相同,值进行追加操作

重定向操作:【多练】

    状态码:302

    响应头:location【已经被response.sendRedirct(request.getContextPath()+"/register.htm"(路径名称)取代】

3、    响应体

字节流:getOutputStream();

字符流:getWriter();

String path = this.getServletContext().getRealPath("/")+"download/"+file_name;

        FileInputStream fis = new FileInputStream(path);

        ServletOutputStream out = response.getOutputStream();

注意:

    ①一山难容二虎(一个响应体中,不能同时用多个流操作)

    ②无论是response的字节流还是字符流不需要咱们手动关闭的,由服务器托管。

    ③刷新流,建议使用response.flushBuffer();

问题1:一个Servlet代码能否同时存在两种流的代码?没问题

    If(xxx){

        getOutputStream();

}else{

    getWriter();

}

修改响应体字符集,同时修改前端解码字符集

    response.setContentType("text/html;charset=utf-8");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息