笔记--servlet基础复习2

来源:互联网 发布:宝贝上淘宝首页 编辑:程序博客网 时间:2024/05/22 08:43
/**response对象*想要获取客户端的内容,使用request对象,对客户端做出响应使用response对象*响应:*响应行*状态码:void setStatus(int sc) 设置状态码*响应头*设置头信息*void setHeader(name,value);*eg:setHeader("aa","bb") aa:bb*void setIntHeader(name,value);*void setDateHeader(name,value);int value是秒,long value是毫秒*void addHeader(name,value);*eg:setHeader("aa","cc"); aa:bb,cc,即add是追加。*响应体*ServletOutputStream getOutputStream()  字节输出流*PrintWriter getWriter()                字符输出流*案例:*重定向:状态码302  响应头location *登录页面重定向// 设置302的状态码response.setStatus(302);// 设置地址response.setHeader("location", "/day10/response/login.html");// response对象提供了一个方法,可以完成重定向。response.sendRedirect("/day10/response/login.html");*页面定时刷新*refresh *禁用浏览器缓存*应用:网银,页面的数据是发生变化的*Cache-Control : no-cache*Expires: -1值是日期类型(setDateHeader())*Pragma : no-cache*向页面输出中文*字节输出流:不一定会产生乱码*设置浏览器打开文件时采用的编码 response.setHeader("Content-type","text/html;charset=utf-8" );*获取字符串byte数组时编码和打开文件时编码一致*字符输出流:一定会产生乱码,因为response缓冲区编码,默认ISO-8859-1,这个编码方式不支持中文,所以一定乱码*解决:*设置response缓冲区编码 response.setCharacterEncoding("utf-8");*设置浏览器打开文件时的编码 response.setHeader("Content-type","text/html;charset=utf-8" );*简写,下面这一句等于上面的两句 response.setContentType("text/html;charset=utf-8");*输出 response.getWriter().write("大家好");*实现文件的下载*超链接,浏览器可以解析直接打开*弹出下载窗口*前提条件:先准备一个文件 通过输入流读取文件 通过response读出到浏览器端 设置头信息:Content-Disposition  attachment;filename=文件名*以附件的形式打开*实现验证码*在内存中生产一张图片(画布)。*BufferedImage(width,height,imageType)*获取画笔*Graphics getGraphics()*随机生产数字或者字母的组合,但是数据是准备好的*随机生产四个字符  Math.Random类*通过画笔对象数据画到图片上*drawString()*画干扰线*drawLine()*需要把内存中的图片输出到客户端*ImafeIO.write()*request对象*ServletRequest|HttpServletReqsuest*获取客户机信息****getRemoteAddr     获取IP地址*用法:网上的游客用户投票,根据id判断是否投过票****getMethod()       获取请求方式****getContextPath()  获取虚拟路径(默认是项目名称)*getQueryString()(不常用)  *获取请求头信息*String getHeader(name)*long getDateHeader(name)*int getIneHeader(name)*请求头:*referer                当前网页的来源*User-Agent             判断是什么浏览器*if-modified-since      控制缓存*获取请求参数*String getParameter(name)*String [] getParameterValues(name):复选框,可以选多个值*Map getParameterMap():*Enumeration getParameterNames():用得少*request中文乱码*post:*response.setCharacterEncoding("utf-8");  设置request缓冲区的编码*但是必须在获取前端数据之前做这个操作,不然无效*get:*修改tomcat/conf/server.xml下面的服务器编码方式(不要轻易修改这个)*必须有修改服务器配置文件的权限*逆向编解码*username=URLEncoder.encode(username,"iso8859-1");*username=URLDecoder.decode(username,"utf-8");*简写形式,string构造方式*username=new String(username.getBytes("iso8859-1"),"utf-8");*利用请求域传递对象(request域对象)*域对象:ServletContext: request:一次请求的范围*getAttribute()*setAttribute()*removeAttribute()*重定向和转发的区别*getRequestDispatcher();返回的是一个RequestDispatcher对象*RequestDispatcher:*forward()*include()*1)转发:是在请求的资源没有的情况下,服务器内部帮你从其他地方找到资源,给予客户端响应,          期间客户端只发了一次请求(304)*2)重定向:是在请求的资源没有的情况下,服务器返回客户端一个信息,里面包含客户端需要资源的地址,然后客户端自行发起请求去寻找资源    期间客户端需要两次请求(302)*区别:*重定向两次请求,两次响应 转发一次请求,一次响应*重定向地址栏发生改变 转发地址栏没有发生改变*转发可以通过request传递数据 重定向不能使用request传递数据*重定向可以定向到其他系统 转发只能转到自己系统内部*/
原创粉丝点击