请求行:
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");