zoukankan      html  css  js  c++  java
  • servlet request

    request.getRequestURI();

    request.getRequestURL();

    getQueryString();//返回查询信息

    getRemoteAddr();//得到来访者地址。

    getRemoteHost();//返回发送请求的客户端的完整主机名。(必须DNS上注册过)

    getRemotePort();//获得来访者使用的端口

    getLocalAddr();//返回服务器的IP

    getLocalName

    getMethod();//得到客户机的请求方式

    getHader("Accept-Encoding");获取某个请求头

    Enumeration e = request.getHaders();获取某个头对应的所有

    while(e.hasMoreElements()){

      String str = (String)e.nextElement();

    }

    getHeaderNames()得到每个名称 返回的也是Enumeration

     --------------------------------------------------------

    String value = getParameter("username");//获取页面上的name属性为username的数据

    ---------------------------------------------------------

    Enumeration e = request.getParameterNames();//获取页面上所有name属性的值组成集合

    while(e.hasMoreElements()){

      Sring name = (String)e.nextElement();

      String vlaue = request.getParameter(name);

    }

    --------------------------------------------------------------

    String[] values = request.getParameterValues("username");//获取页面上所有name属性值为username的元素的value

    -----------------------------------------------------------------

    Map<String,String[]> map = request.getParameterMap();

    User user = new User();//这是一个描述页面元素name和value的Bean的实例,

    BeanUtils.populate(user,map);//将页面信息装到user对象中,比如username,页面上有两个元素,都name="username",User类中有一个字段private String[] usename;   populate

    方法的做法就是:先获取所有的username的value,然后反射User类,将获取的username的value赋值给user对象中的username[]。

    BeanUtils还有一个方法在这提一下:

    BeanUtils.copyProperties(user,formbean);这个方法可以把一个bean的内容拷贝给另一个,但是只支持基本数据类型,如果有复杂数据类型要自己写一个转换器。

    关于BeanUtils,参考http://www.cnblogs.com/flying607/p/3444459.html

    ------------------------------------------------------------------

    下面这个取数据的方法只针对发送方式是post。

    InputStream in = request.getInputStream();

    int len = 0 ;

    byte buffer[] = new byte[1024];

    while((len=in.read(buffer))>0){

      String str = new String(buffer,0,len);

    }

     ------------------------------------------------------------

    request.setCharacterEncoding("UTF-8");//关于编码 request.setCharacterEncoding("UTF-8");这样设置客户机发来数据文字格式只对post方式有效

    String line = request.getParameter("username");  

    System.out.println(line);

    -------------------------------------------------------------

      String line = request.getParameter("username");
      line=(new String(line.getBytes("iso8859-1"),"UTF-8"));//对于get方式,只能这样了。

    //超链接中的?username="中国"也是如此,并且如果是超链接的话,把request.getParameter("username")换成request.getQueryString("username")也可以。

    //但是get方式输入中文跳转时地址栏出现的username=%E4%B8%AD%E5%9B%BD,那么如果用getQueryString,这么处理是没用的。

    //那应该怎么处理??http://www.cnblogs.com/flying607/p/3451835.html
      System.out.println(line);


      response.setCharacterEncoding("UTF-8");
      response.setHeader("Content-type","text/html;charset=UTF-8");

      //response.setContentType("text/html;charset=UTF-8"); 和上边两句一样

      PrintWriter out = response.getWriter();
      out.println(line); 

     -------------------------------------------------------------------------------------------------

    request实现转发

    除了servletContext可以实现转发,request也能做到。

    Strin data = "abdsagge";

    request.setAttribute("data",data);//转发带上数据的方式。

    request.getRequestDispatcher("/message.jsp").forward(request,response);

    附ServletContext的转发:

    RequestDispatcher rd = this.getServletContext().getRequestDispatcher("1.jsp");

    rd.forward(request,response);//页面将转至1.jsp页面,与重定向不同,这样仅请求了一次服务器,而重定向是两次。

  • 相关阅读:
    数据结构与算法基础 模块七
    操作系统
    数据结构与算法基础 模块六
    数据库技术
    数据库技术
    数据库 SQL语句
    数据结构与算法基础 模块五
    同源策略和解决
    初识单例模式
    Django—内置用户权限管理
  • 原文地址:https://www.cnblogs.com/flying607/p/3451231.html
Copyright © 2011-2022 走看看