HttpServletRequest

HttpServletRequest对象代表客户端的请求,当客户端通过http协议访问服务器的时,
http请求中的所有信息都封装到这个对象中,开发人员可以通过这个对象的方法,获得客户这些信息
解决中文乱码:
    way1:
        request.setCharacterEncoding("UTF-8");//改方法之对post方法有效(<a href="URL"></a>是get)
    way2:
        String username=request.getParameter("username");
        String name=new String(username.getBytes("ISO-8859-1"),"UTF-8");
Servlet内置:
    request.getRequestDispatcher("top.jsp").include(request,response);
盗连接(referer):
    String referer=request.getHeader("referer");
        if(referer==null|| !referer.startsWith("http://localhost:")){
            response.sendRedirect("/day_06/referer/index.jsp");
            return;//注意当有多个重定向的时候,不用if——else的方法实现的时候不要忘记return
        }
        response.setRedirect(URL);
        
****案例:使用HttpServletRequest的使用:
            Header的name与value
                //该方法只会获得该头名的一个值
                String value=request.getHeader("Accept-Encoding");
                System.out.println(value);
                
                //获得一个头名的所有值
                Enumeration<String> v=request.getHeaders("Accept-Encoding");
                while(v.hasMoreElements()){
                    System.out.println(v.nextElement());
                }
                
                //获得所有的头名
                Enumeration<String> name=request.getHeaderNames();
                while(name.hasMoreElements()){
                    String HeaderName=name.nextElement();
                    System.out.println(HeaderName+"|"+request.getHeader(HeaderName));
                    
                }
            }
            
    //获得请求数据(一般是先检查在使用)
                //如果有多个,则只会获得一个头一个
                String username=request.getParameter("username");
                System.out.println(username);
                System.out.println("----------22222--------");
                
                //获得是参数相同的所有值
                String[] name=request.getParameterValues("username");
                for(String e:name){
                    System.out.println(e);
                }
                        
                System.out.println("---------3333---------------");
                /*获得所有参数的名字(但是相同的只会获得开始的那个,
                若要获得所有的,则String[] name=request.getParameterValues(name1);*/
                Enumeration<String> e=request.getParameterNames();
                while(e.hasMoreElements()){
                    String name1=e.nextElement();
                    System.out.println(name1+"|"+request.getParameter(name1));
                }
                
                /*
                    将名字与参数存Map,注意是Map<String,String[]>,因为一个name可能对应几个值。如果是
                    String的话会导致无法获取一个name对应多个值后边的值
                    
                */
                Map<String,String[]> m=request.getParameterMap();
                BeanUtils n=new BeanUtils();
                Test test=new Test();
                try {
                    n.populate(test,m);
                } catch (IllegalAccessException e1) {
                    e1.printStackTrace();
                } catch (InvocationTargetException e1) {
                    e1.printStackTrace();
                }
如果给服务器看的表示当前应用,如果给浏览器看的表示网站
    
URL是URI的孩子;

 

posted @ 2016-04-18 12:41  戒。  阅读(85)  评论(0编辑  收藏  举报