首页 > 编程知识 正文

request的用法总结,request的用法及例句

时间:2023-05-04 21:37:24 阅读:217354 作者:725

HttpServletRequest:


消息行:getMethod(),getRequestURL(),getRequestURI(),getContextPath(), getQueryString()的方法

消息头:getHeader(),getHeaderNames(),getHeaders()

消息体:

getParameter(String name) getParameterValues(String name),getParameterNames(), Map<String,String[]>getParameterMap() PropertyDiscriptor ServletInputStream in = getInputStream()--URLDecoder.decode()



上面的这些方法我们挨个使用一下
消息行中的信息df

//获取请求消息行中的信息的方法 System.out.println(request.getMethod());//获取请求方式 System.out.println(request.getRequestURL());//获取请求的路径 System.out.println(request.getRequestURI());//获取请求的资源路径 System.out.println(request.getContextPath());//获取当前应用的目录 /day34_request System.out.println(request.getQueryString());//获取地址后跟的参数

消息头的方法:

String value = request.getHeader("User-Agent");

获取的是浏览器的信息

//getHeaderNames()方法的使用 Enumeration enu = request.getHeaderNames(); while(enu.hasMoreElements()) { String name = (String) enu.nextElement(); String v = request.getHeader(name); System.out.println(name+":"+v); }

获取头信息中的所以信息



处理消息体的方法

//告诉服务器客户端使用的编码,以post方式提交表单数据的乱码问题 request.setCharacterEncoding("utf-8"); //得到用户名--表单中的数据默认都是字符串的 String username = request.getParameter("username"); //得到密码 String psw = request.getParameter("pwd"); //得到性别 String sex = request.getParameter("sex"); //得到爱好 String[] hobbys = request.getParameterValues("hobby"); //得到所在城市 String city = request.getParameter("city"); System.out.println(username+" "+psw+" "+sex+" "+city); for(String ss:hobbys) { System.out.print(ss+" "); }

上面说了以post方式提交数据解决乱码的方式,就是告诉服务器客户端使用的编码方式。
request.setCharacterEncoding(“utf-8”);

下面我们看一下getParameterNames(),获得所有属性的名字

request.setCharacterEncoding("utf-8"); Enumeration en = request.getParameterNames();//得到所有的name while(en.hasMoreElements()) { String name = (String) en.nextElement();//得到一个参数名 //根据名字获取值 String[] values = request.getParameterValues(name); System.out.print(name); for(int i=0;values!=null && i<values.length;i++) { System.out.print(values[i]+" "); } System.out.println(); }

下面我们将获取来的数据封装起来,然后展示

try { request.setCharacterEncoding("utf-8"); //getParameterMap的使用 Map<String,String[]> maps = request.getParameterMap();//一次性得到表单上提交过来的所有名称值对儿 User user = new User(); //遍历Map集合 for(Map.Entry<String, String[]> en:maps.entrySet())// username=zzdsn { String name = en.getKey();//得到键 username String[] value = en.getValue();//得到值 //属性描述器 getUsername() setUsername()---Method PropertyDescriptor des = new PropertyDescriptor(name, User.class); //从属性描述器中得到set方法 Method m = des.getWriteMethod(); //执行 set方法 if(value.length==1) m.invoke(user, value[0]); else m.invoke(user, (Object)value); } System.out.println(user); } catch (Exception e) { e.printStackTrace(); }

这是我们自己写的方法来实现这个功能,User类就不展示了。
当然,也有封装好的类实现了这个功能。

try { request.setCharacterEncoding("utf-8"); User user = new User(); BeanUtils.populate(user, request.getParameterMap()); System.out.println(user); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }

需要用到两个包
使用commons-beanutils.jar和commons-logging.jar实现上边的功能
包去我的资源里下载。


ServletInputStream

//使用getInputStream()获取表单提交的数据 ServletInputStream in = request.getInputStream(); int len = 0; byte[] arr = new byte[1024]; while((len = in.read(arr))!=-1) { //System.out.println(new String(arr,0,len)); System.out.println(URLDecoder.decode(new String(arr,0,len,"utf-8"), "utf-8")); } in.close();


以get方式提交表单时,乱码问题的解决,之前说了post提交时乱码问题。
get方式解决乱码需要先解码,然后再编码。

//再编码,再解码功能的函数 public String fun(String str) { String result = ""; try { result = new String(str.getBytes("ISO8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return result; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //以get方式提交表单数据的乱码处理---tomcat默认用iso8859-1进行解码,所以乱码 //获取用户名 String name = request.getParameter("username");// //再编码// byte[] arr = name.getBytes("ISO8859-1");// //再解码// String ss = new String(arr,"utf-8"); String ss = fun(name); System.out.println(ss); }

这里我们将编码解码的过程封装到了一个函数里。
其他的看代码注释把。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。