黑马程序员技术交流社区

标题: 【石家庄校区】request和response [打印本页]

作者: zhangxuchang    时间: 2018-5-21 15:26
标题: 【石家庄校区】request和response
本帖最后由 小石姐姐 于 2018-5-23 14:36 编辑

request和response
Response文件下载
把一个文件从服务器读取,写到客户端
文件下载的核心思想:io 读/写的操作
InpuptStream is = new FileInputStream("服务器上的路径");
OutputStream os = response.getOutputStream();
模板代码:

int len = 0;
byte[] b = new byte[1024];
while((len = is.read(b))!= -1){
    os.write(b, 0, len);
}
is.close();
Content-Type: getServletContext().getMimiType(String filename);Content-Disposition:"attachment;filename="+filename;
响应乱码
response.getOutputStream():文件下载
下列方式:以后不常用
response.getWriter().print("");这种乱码问题如何解决:response.setContentType("text/html;charset=UTF-8");  
Request获取客户端信息
1.请求方式:request.getMethod();
2.请求ip:request.getRemoteAddr();
3.获取工程名:request.getContextPath();
获取表单参数
String request.getParameter(String name);
String [] request.getParameterValues(String name);
Map<String,String[]> request.getParameterMap();
请求乱码
get:
​        String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")
post:
​        request.setCharacterEncoding("UTF-8")
作为域对象存取数据
范围:一次请求和响应的范围
setAttribute(String name,Object value);
Object      getAttribute(String name);
removeAttribute(String name)
转发和重定向(面试点二)
转发:
​        request.getRequestDispatcher("不带工程名的路径").forward(request,response)
重定向:
​        response.sendRedirect("带工程名称的路径")
区别:
1.地址栏:转发地址栏不变,重定向会变
2.请求响应的次数:转发一次请求一次响应,重定向是两次请求和响应
​        如果给request域中存放了数据:转发能够获得到数据,重定向不能获得到数据
3.路径的编写:转发不带工程名,重定向带工程名
4.跳转的范围:转发只能在当前工程下跳转,重定向可以跳转至任意网页







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2