一、request
post和get统一的对参数的操作:
Tomcat8后get没有乱码问题,post则通过如下方法设置编码,图中get也设置了输入流编码,保证能正确获取浏览器请求的parameter:req.setCharacterEncoding("UTF-8");
如果服务器响应给浏览器的是字符串类型,则需要设置响应的字符集
//作用:告诉浏览器响应类型,如果浏览器不认识,则会开始下载的功能
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//print方法底层调用了write方法,print方法重载多了很多,使用起来更方便
out.print("你好, Servlet!");
//out.write("你好,这是write方法");
转发
(由服务器把请求转发给别的服务器)转发:服务器servlet将浏览器的请求转发给本资源内、别的servlet去处理,再由原本的servlet响应给浏览器,这个过程中请求内容不变,url不变,整个过程属于一个请求;
request.getRequestDispatcher("/资源路径").forward(request,response);
另外,getRequestDispatcher还有include方法,两者区别如下:
//转发请求,forward方法是把请求的内容转发到另外的一个servlet/jsp,原先对象中的内容会被清除
request.getRequestDispatcher("/Demo1Servlet").forward(request, response);
//包含指定的资源,被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在原来的Servlet,被调用的Servlet的响应将会并入原来的对象
request.getRequestDispatcher("/Demo1Servlet").include(request, response);
重定向
(服务器接受到请求后响应浏览器,让浏览器去请求别的服务器)重定向:服务器无法处理浏览器的请求,响应后让浏览器重新发起请求,到别的servlet服务器中,是由浏览器重新提起的新的请求,不限制于原本项目的资源:
response.sendRedirect("资源的路径");
//向请求域中添加键和值
request.setAttribute("name", "NewBoy");
//麻烦的重定向
//response.setStatus(302);
//response.setHeader("location", "two");
//重定向有专门的方法,这句话相当于上面2句话
response.sendRedirect("two");
在后续的服务器响应中,有使用如下方法来将数据反馈给浏览器处理的,具体快捷键为rout:
//作用:告诉浏览器响应类型,如果浏览器不认识,则会开始下载的功能
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//print方法底层调用了write方法,print方法重载多了很多,使用起来更方便
out.print("你好, Servlet!");
响应的其他操作——把图片响应给浏览器
设置响应类型,读本地图片为输入流,再创建输出流,用commons.io包下的IOUtils的copy方法进行读写操作。
使用commons.beanutils.BeanUtils来接收ParameterMap后,封装成类:
BrandService brandService = new BrandService();
Map
Brand brand = new Brand();
try {
BeanUtils.populate(brand,parameterMap);
} catch (Exception e) {
e.printStackTrace();
}
brandService.add(brand);
从前端获取ParameterMap后,封装成类放入数据库