zoukankan      html  css  js  c++  java
  • servlet中Request与response使用

    服务器根据请求自动创建传入HttpServletRequest对象和HttpServletResponse对象

    @Override

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

             ……处理代码

    }

    HttpServletRequest(请求)

    处理请求行(http:localhost:8080prohaha?name=zs&age=18)

        getRequestURL()   获取?前的路径  (http:localhost:8080prohaha)

        getRequestURI()   获取站点名到?前的路径 (prohaha)

        getQueryString() 获取请求参数(name=zs&age=18)

        getMethod()       获取请求类型(get post)

    其他:getProtocol获取http版本号,getContexPath获取webapp名(项目名)

    处理请求头

        getHeader(String) 获取单个请求头内容 string为key值不区分大小写

        getHeaderName() 获取请求头名的枚举集合通过Enumeration<String>接收

    获取请求参数

        getParameter(“key”)      获取客户端上传的参数

        getParameterValues(“key”) 若一个key对应多个值(多选框等)返回数组对象

        getParameterNames()      获取所有请求参数的名称, 枚举类集合接收

           getParametermap()        获取所有请求参数,Map<String,String[]>接收

    设置请求的参数(用于对象传递中使用)

        setAttribute(“key”,value)    设置域对象内容

        getAttribute(“key”)          获取域对象内容

        removeAttribute(“key”)       删除域对象内容

     

    解决请求参数乱码问题

    request接收的参数,在解析过程中使用了默认的编码方式为 (ISO-8859-1)不支持中文

    post请求在Tomcat中都存在报错,get在Tomcat7中存在报错

    解决方式

    post解决方式

        request.setCharacterEncoding("UTF-8")   直接设置解析编码 对get无效

    get解决

    new String(request.getParameter(key).getBytes("ISO-8859-1"),"UTF-8")

    只能一次处理一个参数值的编码错误

    若参数本身无编码错误,反而会造成编码错误

     

    请求转发

    用于服务内部的资源跳转,浏览器的地址不会变更

    request.getRequestDispatcher(“目标资源”).forward(request,response)

    指定转发路径,并传递请求对象和响应对象.实现对象共享.

    目标资源使用外部访问名

     

    request 作用域只在一次请求中有效中有效,包含请求转发

     

       

    HttpServletResponse(响应)

    处理响应头

        addHeader(“key”, “value”)    增加响应头参数

        setHeader(“key”, “value”)    设置响应头参数

           设置自动刷新或重定向(不设url可自刷新)

           setHeader("refresh", "3;http://www.baidu.com") 3秒后刷新至百度

    sendError(500, “错误描述”)    设置页面报错(响应头)

    输出响应数据

        setContentType(“参数;参数”)      设置响应数据类型和编码格式

    参数在Tomcat 的 web.xml 文件中<mime-mapping>查找获取

    text/html类型为html类型

    image/jpeg响应jpg图片

        getOutputStream()     获取输出的字节流

        getWriter()           获取输出的字符流

        注: 两个流不能同时使用 否者报错(java.lang.IllegalStateException)

           流需要关闭.close()

           常用文本输出getWriter().write("输出文本")

    sendRedirect(“url”)   重定向

           服务器指导客户端的行为,客户端根据重定向立即重新请求对应的数据

           http://www.baidu.com或者 端口之后的绝对路径/相对

     

    乱码处理

        服务器响应的数据编码与客户端解析编码方式存在差异

        setContentType("text/html;charset=UTF-8")  

    设置响应头中数据类型和编码类型

     

    响应图片

        获取当前项目路径,获取图片的绝对路径

    拼接得到图片完整路径,生成file, io传输

    String realPath = getServletContext().getRealPath("/")

    获取项目在服务器中的真实路径

        String filePath = realPath + "/WEB-INF/images/jay.jpg"

           获取图片路径,并完成拼接

        File file = new File(filePath)

           获取文件

     

    请求转发和重定向区别

    请求转发

    request.getRequestDispatcher(“url”).forward(request,response)

    返回请求地址栏不发生改变,只执行一次请求

    服务端内部跳转, request作用域共享,

    转发对象为当前项目资源()

    地址站点名后的不完全路径,从项目名之后开始

    重定向

    1、地址栏发生改变  2、客户端跳转  3、存在两次请求request作用域不共享

    4、指定任意地址,可跨域 若是本服务内容 地址从端口号之后开始

     

    路径问题

    相对路径    相对于当前资源的路径开头不设/

    绝对路径(完整路径)

    1完整绝对路径

    以 http://开头的,能够跨域

    2部分绝对路径

    "/"开头,从当前域名|IP|主机后的端口号开始的

    "/"的含义:

     请求转发:

    代表的是 http://localhost:8080/站点名/

    重定向(客户端跳转):

    代表的是   http://localhost:8080/

     

     

  • 相关阅读:
    Median Value
    237. Delete Node in a Linked List
    206. Reverse Linked List
    160. Intersection of Two Linked Lists
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    477. Total Hamming Distance
    421. Maximum XOR of Two Numbers in an Array
    397. Integer Replacement
    318. Maximum Product of Word Lengths
  • 原文地址:https://www.cnblogs.com/javaxiaobu/p/11149151.html
Copyright © 2011-2022 走看看