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