一、request二、response

一、request

一、request二、response_第1张图片

post和get统一的对参数的操作:

一、request二、response_第2张图片

Tomcat8后get没有乱码问题,post则通过如下方法设置编码,图中get也设置了输入流编码,保证能正确获取浏览器请求的parameter:req.setCharacterEncoding("UTF-8");

一、request二、response_第3张图片

如果服务器响应给浏览器的是字符串类型,则需要设置响应的字符集

//作用:告诉浏览器响应类型,如果浏览器不认识,则会开始下载的功能

        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);


二、response

 一、request二、response_第4张图片

重定向

(服务器接受到请求后响应浏览器,让浏览器去请求别的服务器)重定向:服务器无法处理浏览器的请求,响应后让浏览器重新发起请求,到别的servlet服务器中,是由浏览器重新提起的新的请求,不限制于原本项目的资源:

        response.sendRedirect("资源的路径");

//向请求域中添加键和值

        request.setAttribute("name", "NewBoy");

//麻烦的重定向

       //response.setStatus(302);

        //response.setHeader("location", "two");

 //重定向有专门的方法,这句话相当于上面2句话

        response.sendRedirect("two");

一、request二、response_第5张图片

在后续的服务器响应中,有使用如下方法来将数据反馈给浏览器处理的,具体快捷键为rout:
//作用:告诉浏览器响应类型,如果浏览器不认识,则会开始下载的功能
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//print方法底层调用了write方法,print方法重载多了很多,使用起来更方便
out.print("你好, Servlet!");

响应的其他操作——把图片响应给浏览器

设置响应类型,读本地图片为输入流,再创建输出流,用commons.io包下的IOUtils的copy方法进行读写操作。

    

      commons-io

      commons-io

      2.7

一、request二、response_第6张图片

使用commons.beanutils.BeanUtils来接收ParameterMap后,封装成类:

        BrandService brandService = new BrandService();

        Map parameterMap = request.getParameterMap();

        Brand brand = new Brand();

        try {

            BeanUtils.populate(brand,parameterMap);

        } catch (Exception e) {

            e.printStackTrace();

        }

        brandService.add(brand);

从前端获取ParameterMap后,封装成类放入数据库

你可能感兴趣的:(servlet,服务器,java)