新建项目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);