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/

     

     

  • 相关阅读:
    增强for循环用法___ArrayList数组实现使用下标最好,LinkedList使用增强型的(转载)
    Java类加载的时机_4种主动引用会触犯类加载+剩下的被动引用不会触发类的加载
    剑指offer_面试题11 数值的整数次方_考察代码的完整性
    深入理解Java虚拟机博客参考目录
    GPU总结(1)
    牛客_Java_值传递(拷贝)不该表原来变量+传引用的话会一起改变
    Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库
    centos7 安装jdk1.8
    JPA
    javaScript获取url中的参数
  • 原文地址:https://www.cnblogs.com/javaxiaobu/p/11149151.html
Copyright © 2011-2022 走看看