• Servlet深入之请求HttpServletRequest


    HttpServletRquest
    1.获取客户机信息
    URI与URL的区别,URI是包含URL的,URL一定是一个完整的路径,URI可以是一个相对路径也可以写成完整路径
    getRequestURL();
    getRequestURI();
    getQueryString();获得get方式提交的查询串,即提交路径?后的参数。
    getRemoteAddr();获取客户端IP地址
    getContextPath();获取访问web工程的虚拟目录名称
    getMethod();获取请求方式
    getReuqestURI.subString(request.getContextPath().length());获取访问资源路径

    2.获取客户机头信息
    getHeader(name);根据名称获取请求的头信息内容
    getHeaders(name);对于一个头信息有多个值就通过这个方法返回一个Enumeration集合
    getHeaderNames();获取所有头信息的Enumeration集合

    3.获取请求参数
    请求参数即用户提交服务器的一些数据如链接?后的参数,表单提交的参数。
    getParameter(name);获取参数值
    getParameterValues(name);通过name获得多只checkbox值数组
    getParameterNames();获取所有name的Enumeration集合
    getParameterMap()获取请求参数的map集合
    在获取请求参数后进行处理时都需要经过判断进行非空校验
    如if(username!=null&&username.trim.length()>0)

    处理请求中文乱码,
    数据的传输都是以字节的方式实现的,需要在两端保持编码与解码的一致性。
    request.setCharaterEncoding("");//对于post请求。
    而get请求方式可以修改tomcat解码字符集 conf/server.xml中配置,也可以手动进行编码解码
    username=URLEncoding.encode(username,"");对数据进行指定编码
    username=URLDecoder.decode(username,"");对数据进行指定解码
    也可以写成username=new String(username.getBytes(),"","");

    特殊字符转义
    +表示空格
    %w2B表示+号
    %2F表示正斜杠/
    %3F表示问号?
    %25表示百分号%
    %23表示#号
    %26表示&分割参数符号

    利用请求域转发传递对象
    HttpServletRequest和ServletContext一样都是一个数据域对象,可以用来存储数据。
    两者的区别是在存活时间不一样,请求存活的时间是由响应的结束控制的,而ServletContext的村说时间是由服务器的启动与停止控制的。可以通过请求域转发传递对象,是因为请求可以在多个Servlet之间进行传递,而响应就代表一次请求的处理结束。
    在AServlet中
    request.setArrtibute(name,value)
    RequestDispatcher dispatcher=request.getRequestDispatcher(ServletUrl);//相对路径
    dispatcher.forward(request,reponse);//如果在此方法之前发生响应将数据返回给客户端此方法会报出异常。且此方法不能多次出现。
    在B中
    request.getArrtibute(name);
    应用主要是在servlet中处理数据之后传递给JSP进行展示。要注意只有最终的Servlet程序决定响应的内容,之前的对响应内容的操作在每一次转发都会被清空。
    转发与重定向的区别
    1,转发一次请求一次响应,重定向两次请求两次响应
    2,转发只能跳转站内程序,重定向定向任何站点
    3,转发URL地址不变,重定向URL地址改变
    4,转发对客户端不可见,重定向对客户端可见

    RequestDispatcher
    include方法
    用于将Dispatcher封装的资源内容作为当前响应内容的一部分包含进来,即被含的Servlet程序的响应资源被保留,由多个Servlet程序一同生成最终响应,这一点不同于forward方法。常用来页面布局,将公共部分抽取出来,通过ResquestDispatcher的include引入更加方便维护。
    request.getRequestDispatcher(.html).include(request,response);

  • 相关阅读:
    折叠Collapse插件
    data按钮
    Web设计中打开新页面或页面跳转的方法 js跳转页面
    HTML文本框
    常用端口
    node.js(八) 有趣的东西才开始哦
    node.js(七) 子进程 child_process模块
    node.js(六) UTIL模块
    node.js(五)字符串转换
    SSL证书切换
  • 原文地址:https://www.cnblogs.com/ss561/p/4618911.html
Copyright © 2020-2023  润新知