HttpServletRequest相关

新建项目amie-servlet

写一个HTML用来发请求:

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hi</title>
</head>
<body>
<!-- 提交请求的方式1-->
<a href="/amie-servlet/Demo1?username=xxx">click!</a>

<!-- 提交请求的方式2-->
<form action="/amie-servlet/Demo1" method="post">
   NAME: <input type="text" name="username">
   <input type="submit" value="SUBMIT IT">
</form>
</body>
</html>

 

 

接受客户端发过来的请求:

方式一:

 

String value = request.getParameter("username");
if(value!=null&&!value.trim().equals(""))//要先check		
{
    System.out.println(value);
}

 

 

方式二:

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		
	Enumeration e = request.getParameterNames();
	while(e.hasMoreElements()){
	     String param = (String )e.nextElement();
	     String v = request.getParameter(param);
	     System.out.println(v);
		}

	}

 

 

方式三:

 

String[] values = request.getParameterValues("username");
//得到parameterName=‘username’的所有值
		for(String v : values){
		  System.out.println(v);
		}
		//注:尽量避免用上述方式遍历。如果取到的values为空,便发生了空指针异常。
		//应采用下述方式:
		for(int i=0;values!=null&&i<values.length;i++){
			System.out.println(values[i]);
		}

方式四:

将所有的参数导入到一个Map中,再通过beanUtils  populate 进我们自己的domain类中。

Beanutil需要log4j的支持。

如果不使用maven,那么直接将beanUtils 和log4j的jar包放到WEB-INF/lib中即可

Map map = request.getParameterMap();
BeanUtils.populate(user, map);

我们自己也可以通过反射实现BeanUtils的populate方法。BeanUtils另一个比较实用的方法:

copyProperties(userBean,formBean)

将formBean中的属性拷贝到userBean中。

--------------关于request中得到数据的乱码问题----------------

1. 对客户端提交方式为get的数据

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

username = new String(username.getBytes("iso8859-1"),"UTF-8");

2. 对提交方式为post的数据

request.setCharacterEncoding("UTF-8");//只对post提交有效

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

-------------------关于地址的写法------------------

任何地址都以/ 开头,如果此地址给服务器使用,那么/代表当前web应用,

如果此地址给浏览器使用,那么/代表网站 (一个网站下有多个web应用)

当获取url中的某个资源(服务中的某个资源)通通使用/,

若获取硬盘中的某个资源时, 用\\

关于httpServletresponse

服务器提供了两种方式让我们输出东西到HttpServletResponse :

response.getOutputStream();--写字节流

response.getWriter();--写字符流

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String data="大象";
		ServletOutputStream out = response.getOutputStream();		
		//注: 服务器将内容(以数字的形式)发给浏览器浏览器默认查的码表是gb2312.但我们发送的是UTF-8, 所以应该通知浏览器,用UTF-8打开我们发过去的这个东东。
		//通知浏览器的方式有一下两种;
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		out.write(data.getBytes("UTF-8"));
		//法二:<meta>标签可以控制浏览器的行为
		out.write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());
		out.write(data.getBytes("UTF-8"));
		
		//向浏览器写数字:
		out.write((1+"").getBytes());
		
		//用PrintWriter来输出。
                PrintWriter outWriter = response.getWriter();
		//当用PrintWriter时,服务器会将response对象中的“大象”拿出来,默认用ISO8859码写给浏览器。
		//所以应设置,让服务器用TUF-8的编码写东西给浏览器
		response.setCharacterEncoding("UTF-8");;
		//另外也要通知浏览器:用UTF-8解析这个data:
               response.setHeader("Content-type", "text/html;charset=UTF-8");
                //将data写入response对象
		 outWriter.write(data);
		
	}

 利用 HttpServletResponse 定时刷新页面:

response.setHeader("refresh","3");
String data = new Random(1000000).nextInt() +"";
response.getWriter().write(data);

 

猜你喜欢

转载自arual.iteye.com/blog/2182002