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的孩子;
现在的几乎什么都不懂,但是不代表以后的我也是这样。