servlet学习之servletAPI编程常用的接口和类

ServletConfig接口:

    SevletConfig接口位于javax.servlet包中,它封装了servlet配置信息,在servlet初始化期间被传递。每一个Servlet都有且只有一个ServletConfig对象。

   首先配置信息为:

 

 

 

 

 

 

 

  •     getInitParameter(String name)————此方法返回String类型名称为name的初始化参数值
  •     getInitParameterNames()————获取所有初始化参数名的枚举集合
  •     getServletContext()————用于获取Servlet上下文对象
  •     getServletName()————返回Servlet对象的实例名

   

public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init");
        //获取初始化参数:servlConfig
        String user=servletConfig.getInitParameter("user");
        System.out.println("user:"+user);
        Enumeration<String> names=servletConfig.getInitParameterNames();
        while(names.hasMoreElements()) {
            String name=names.nextElement();
            String value=servletConfig.getInitParameter(name);
            System.out.println("~~"+name+":"+value);
        }
        //获取servletConfig对象   servletContext
        ServletContext servletcontext=servletConfig.getServletContext();
        String driver=servletcontext.getInitParameter("driver");
        System.out.println("driver:"+driver);
        Enumeration<String> names2=servletcontext.getInitParameterNames();
        while(names2.hasMoreElements()) {
            String name=names2.nextElement();
            System.out.println("-->"+name);
        }
        //获取当前WEB应用的某一个文件在服务器上的绝对路径,而不是部署前的物理路径
        String realpath=servletcontext.getRealPath("/note.txt");
        System.out.println(realpath);
        //获取当前web应用的名称
        String contextPath = servletcontext.getContextPath();
        System.out.println(contextPath); 
        
        try {
            ClassLoader classLoader=getClass().getClassLoader();
            InputStream is=classLoader.getResourceAsStream("jdbc.servlet");
            System.out.println("1."+is);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //获取当前WEB应用的某一个文件对应的输入流:path的/为当前web应用的根目录
        try {
            InputStream is2=servletcontext.getResourceAsStream("/WEB-INF/classes/jdbc.servlet");
            System.out.println("2."+is2);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

输出结果:

GET 请求和 POST 请求:

1). 使用GET方式传递参数:

  1.  在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET。
  2. 如果网页中的<form>表单元素的 method 属性被设置为了“GET”,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。
  3. 使用GET请求方式给WEB服务器传递参数的格式: http://www.boogiever.com/counter.jsp?name=ISEE&password=777
  4. 使用GET方式传送的数据量一般限制在 1KB 以下。




2). 使用 POST 方式传递参数:

  •  POST 请求方式主要用于向 WEB 服务器端程序提交 FORM 表单中的数据: form 表单的 method 置为 POST
  •  POST 方式将各个表单字段元素及其数据作为 HTTP 消息的实体内容发送给 WEB 服务器,传送的数据量要比使用GET方式传送的数据量大得多。  


POST /counter.jsp HTTP/1.1
referer: http://localhost:8080/Register.html
content-type: application/x-www-form-urlencoded
host: localhost:8080
content-length: 43

name=wangziyi&password=777              --请求体中传递参数.

 Serlvet接口只定义了一个服务方法就是service,而HttpServlet类实现了该方法并且要求调用下列的方法之一:
doGet:处理GET请求
doPost:处理POST请求
当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操作还是POST 操作。然后它调用下面的一个方法:doGet 或 doPost。如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法。doGet和doPost都接受请求 (HttpServletRequest)和响应(HttpServletResponse)。

在实现登陆界面时发现form里面写的是post而逻辑处理页面代码都写在doget()里面依然可以正常运行,思考后发现是由于tomcat自动生成代码时,dopost()里面调用了doget()方法;

 

 

 

 

 

   

   

posted @ 2019-09-23 21:41  Boogiever  阅读(1850)  评论(0编辑  收藏  举报