请求的转发(派发)以及请求范围

请求转发(请求派发)

整个转发过程在服务器内部完成。区分于重定向,重定向需要浏览器支持

  请求转发 重定向
执行过程 服务器内部完成 访问过程需要浏览器支持
请求与响应次数 一次请求,一次响应 两次请求,两次响应

请求转发是通过RequestDispatcher对象来进行程序分发:

//转发语句
    req.getRequestDispatcher("转发路径");
        
//转发方式
    
    forword(req,resp);
    //将处理请求的全部权利交给另外一个资源处理,并由交给的资源响应
    //(资源可以是servlet,也可以是静态页面)

    include(reqt,resp);
    //将处理请求交给另外一个资源处理,当请求资源处理完毕后,又重新交给自己处理

请求的范围

请求的范围,一次请求可以获得请求对象中的值,但是一旦请求借宿-响应回去后,值会被清空,下次无法访问(注意重定向无法获得-原因两次请求,两次响应)

//请求对象保存值(键值对)
    req.setAttribute("键名",值);
    //键是字符串,值可以是任意数据类型

//获取请求中的值
    String value = (String)req.getAttribute("键名");
    //根据存入的值的类型进行转换,如果不转换取出来的对象为Object

多文件上传核心语句

//得到所有的表单元素(part)
    Collection<Part> parts = req.getParts();

    for (Part part : parts) {
        
        //得到所有表单的name属性的值
        String  form_name =part.getName();
        
        //得到该表单元素的part部分 ,作用就是用来判断该表单元素是不是一个普通的收入控件
        Part  part1 =  req.getPart(form_name);
        
        // 得到提交文件的名字  如果是普通表单元素则为 null , 如果是文件元素则有值
        String  fileName =  part1.getSubmittedFileName();
        
        //如果不为null  则需要文件操作,为null 为普通元素
        if (fileName != null) {
            //上传文件表单处理语句
        }else{
            //普通表单文件处理语句
        }
        
    }

 

猜你喜欢

转载自www.cnblogs.com/-Archenemy-/p/12713699.html