request和其一些应用

HttpServletRequst对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户端信息。

Request

request常用方法

getMethod()返回请求方法。                                                                                                                                       getHeader()返回特定头的值。                                                                                                                                 getHeaders()如果某个头有多个值,用这个方法。                                                                                       getHeaderNames()获得所有请求头的名称。


  • request获取表单提交的数据
<body>
    <a href="/day06/servlet/RequestDemo2?username=yjnb">点</a>
    <form action="/day06/servlet/RequestDemo2" method="get">
    	用户名1:<input type="text" name="username"/><br/>
    	用户名2:<input type="text" name="username"/><br/>
    	密     码:<input type="password" name="password"/><br/>
    	<input type="submit" value="提交"/>
    </form>
  </body>
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		System.out.println("获取数据方式1");
		String value = request.getParameter("username");
		if(value!=null && !value.trim().equals("")){
			System.out.println(value);
		}
		System.out.println("获取数据方式2");
		Enumeration e = request.getParameterNames();
		while(e.hasMoreElements()){
			String name = (String) e.nextElement();
			value = request.getParameter(name);
			System.out.println(name+"="+value);
		}
		System.out.println("获取数据方式3");
		String[] values = request.getParameterValues("username");
		for(int i=0;values!=null && i<values.length;i++){
			System.out.println(values[i]);
		}
	}
  • request乱码问题

浏览器通过表单提交“中国”,使用的是UTF-8码表,而request获取时使用的是ISO-8859码表。


解决方法:在post方法中,

request.setCharacterEncoding("UTF-8");

在get方法中,需要手工处理。先获得数据,在对数据换一个码表表示。

String username = request.getParameter("username");
username = new String(username.getBytes("ISO-8859"),"UTF-8");

request.getAttribute是获取之前存在域中的数据,request,getParameter是获取客户机传过来的数据。



猜你喜欢

转载自blog.csdn.net/weufengwangshi_/article/details/79984350