zoukankan      html  css  js  c++  java
  • JavaWeb总结(六)

    获取原始表单数据

      - POST请求不仅可以传输文本信息还可以传输二进制数据 

      - 如果想得到请求中参数的原始字节数据,可以使用HttpServletRequest对象提供的getInputSteam()或getReader()方法直接访问表单数据

      获取原始表单数据的两种情况

        - 数据不是由HTML表单提交,而是来自某个客户端程序,需要自己读取和分析这些数据。

        - 数据来自于上传的文件时,需要自己读取数据

    请求派发

      - 每个客户的请求可以传递给很多Servlet以及Web应用程序中的其它资源

      - 整个过程完全是在服务器端完成

      - 不需要任何客户端浏览器的行为

      - 不需要在客户端浏览器和服务器端之间传递特殊信息 

      - 通过javax.servlet.RequestDispatcher对象实现 

    提示:重定向让客户端浏览器来完成,而请求派发是在服务器端做工作 

    请求派发的实现

      - 调用ServletRequest对象的方法:

      - getRequestDispatcher(path):方法返回给定路径的RequestDispatcher对象 

      - getNamedDispatcher(name) :返回某个名称的Servlet的RequestDispatcher对象 

    提示:RequestDispatcher对象还可以通过ServletContext对象的getRequestDispatcher()得到,路径值必须是以根目录"/"开始

    - RequestDispatcher对象提供了两种方法:

    - forward(ServletRequest, ServletResponse):派发请求和响应对象到RequestDispatcher 对象所确定的新资源(Servlet、JSP或者HTML等) 

    - include(ServletRequest, ServletResponse)该方法关键是能包含服务器端的资源 

    request.getRequestDispatcher("/sucess.html").include(request, response); 

    request.getRequestDispatcher("/sucess.html").forward(request, response); 

     

    forward跳转示意图

     

    include包含示意图

    请求范围 

      - 变量可以保存在请求范围中

      - 在请求范围之外就不能进行访问了

    public class Servlet1 extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setAttribute("key", "value");
            //重定向跳转到Servlet2,Servlet2获取的值为null
            //response.sendRedirect("Servlet2");
            //forward跳转到Servlet2,Servlet能获取值为value
            //request.getRequestDispatcher("Servlet2").forward(request, response);
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }
    
    }
    
    public class Servlet2 extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.err.println(request.getAttribute("key"));
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }
    
    }

     

    我不作恶

    但有权拒绝为善

    我不赞同

    但是我捍卫你不为善的权力

  • 相关阅读:
    Linux中hadoop配置hdfs
    linux安装配置hadoop
    Linux配置Tomcat
    虚拟机jdk(在profile.d中)配置
    SSH免密登录
    Linux配置MySQL
    虚拟机jdk(profile)配置
    解释器模式实例分析
    第七天
    第六天
  • 原文地址:https://www.cnblogs.com/HackerBlog/p/5956018.html
Copyright © 2011-2022 走看看