web服务器接管到客户端http申请,针对这个申请,别离创立一个代表申请的HttpServletRequest对象,代表响应的一个HttpServletResponse;
- 如果要获取客户端申请过去的参数:找HttpServletRequest
- 如果要给客户端响应一些信息:找HttpServletResponse
1、简略分类
负责向浏览器发送数据的办法
ServletOutputStream getOutputStream() throws IOException; PrintWriter getWriter() throws IOException;
负责向浏览器发送响应头的办法
void setCharacterEncoding(String var1); void setContentLength(int var1); void setContentLengthLong(long var1); void setContentType(String var1); void setDateHeader(String var1, long var2); void addDateHeader(String var1, long var2); void setHeader(String var1, String var2); void addHeader(String var1, String var2); void setIntHeader(String var1, int var2); void addIntHeader(String var1, int var2);
响应的状态码
int SC_CONTINUE = 100; int SC_SWITCHING_PROTOCOLS = 101; int SC_OK = 200; int SC_CREATED = 201; int SC_ACCEPTED = 202; int SC_NON_AUTHORITATIVE_INFORMATION = 203; int SC_NO_CONTENT = 204; int SC_RESET_CONTENT = 205; int SC_PARTIAL_CONTENT = 206; int SC_MULTIPLE_CHOICES = 300; int SC_MOVED_PERMANENTLY = 301; int SC_MOVED_TEMPORARILY = 302; int SC_FOUND = 302; int SC_SEE_OTHER = 303; int SC_NOT_MODIFIED = 304; int SC_USE_PROXY = 305; int SC_TEMPORARY_REDIRECT = 307; int SC_BAD_REQUEST = 400; int SC_UNAUTHORIZED = 401; int SC_PAYMENT_REQUIRED = 402; int SC_FORBIDDEN = 403; int SC_NOT_FOUND = 404; int SC_METHOD_NOT_ALLOWED = 405; int SC_NOT_ACCEPTABLE = 406; int SC_PROXY_AUTHENTICATION_REQUIRED = 407; int SC_REQUEST_TIMEOUT = 408; int SC_CONFLICT = 409; int SC_GONE = 410; int SC_LENGTH_REQUIRED = 411; int SC_PRECONDITION_FAILED = 412; int SC_REQUEST_ENTITY_TOO_LARGE = 413; int SC_REQUEST_URI_TOO_LONG = 414; int SC_UNSUPPORTED_MEDIA_TYPE = 415; int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416; int SC_EXPECTATION_FAILED = 417; int SC_INTERNAL_SERVER_ERROR = 500; int SC_NOT_IMPLEMENTED = 501; int SC_BAD_GATEWAY = 502; int SC_SERVICE_UNAVAILABLE = 503; int SC_GATEWAY_TIMEOUT = 504; int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
1.1、常见利用
1、向浏览器输入音讯
2、下载文件
1)要获取下载文件的门路
2)下载的文件名是啥?
3)设置想方法让浏览器可能反对下载咱们须要的货色
4)获取下载文件的输出流
5)创立缓冲区
6)获取输入流对象
7)将FileOutputStream流写入到buffer缓冲区
8)应用OutputStream将缓冲区中的数据输入到客户端!
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1)要获取下载文件的门路 String realPath = this.getServletContext().getRealPath("/1.png"); System.out.println("下载文件的门路:"+realPath); //2)下载的文件名是啥? String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);// 3)设置想方法让浏览器可能反对下载咱们须要的货色 URLEncoder.encode(fileName,"UTF-8")中文文件名编码,否则没有乱码 resp.setHeader("Context-Disposition", "attachment;fileName"+ URLEncoder.encode(fileName,"UTF-8"));// 4)获取下载文件的输出流 FileInputStream fis = new FileInputStream(realPath);// 5)创立缓冲区 int len = 0; byte[] buffer = new byte[1024];// 6)获取输入流对象 ServletOutputStream os = resp.getOutputStream();// 7)将FileOutputStream流写入到buffer缓冲区 8)应用OutputStream将缓冲区中的数据输入到客户端! while((len = fis.read(buffer))>0){ os.write(buffer,0,len); } fis.close(); os.close();// }