zoukankan      html  css  js  c++  java
  • Request对象和Response对象

    再上一节我们写了HttpServelt类,我们发现我们写的实现类中的dopost方法和doget方法中有两个参数request,response,他们是Resquest的对象和Response的对象,都是由服务器创建

    Request对象  获取请求消息,

    Response对象   响应

    在HttpServelt类中,我们发现方法中的参数是HttpServletResquest对象,这里写一下继承顺序,

      Request---->ServletRequset---->HttpServletRequest,根据多态的性质可以知道参数request也是Request对象,

      这个对象不需要我们创建,由tomcat创建

    下面我们来写一下这个Request对象的方法:

    首先建立一个html页面,放在web文件夹下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="/zs/login" method="post">
            <input type="text" name="username" placeholder="请输入用户名"><br/>
            <input type="password" name="password" placeholder="请输入密码"><br/><input type="checkbox" name="hobby" value="chi"><input type="checkbox" name="hobby" value="he"><input type="checkbox" name="hobby" value="wan"><input type="checkbox" name="hobby" value="le"><br/>
            <input type="submit">
        </form>
    </body>
    </html>

    然后我们运行tomcat,用浏览器输入地址查看是否可以查看该文件,下面我们编写Servelt文件:

    package com.zs.servelt;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Enumeration;
    import java.util.Map;
    import java.util.Set;
    
    @WebServlet("/login")
    /*这里需要注意的是,我们之前在html文件的action属性中写的是"/zs/login",里面前面是配置的服务器地址的url,后面代表虚拟路径,
        在这里只需要输入虚拟路径*/
    public class ServletDemo1 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         /*获取请求行的数据*/
    //        1.获取请求的方式
            String method = request.getMethod();
            System.out.println(method);//   POST
    //        2.获取目录的路径
            String conpath = request.getContextPath();
            System.out.println(conpath);//    /zs
    //        3.获取servelt的路径
            String servletPath = request.getServletPath();
            System.out.println(servletPath);//  /login
    //        4.获取请求参数
            String queryString = request.getQueryString();
            System.out.println(queryString);//      null
    //        5.获取请求的url
            String requestURI = request.getRequestURI();
            System.out.println(requestURI);//       /zs/login
            StringBuffer requestURL = request.getRequestURL();
            System.out.println(requestURL);//       http://localhost/zs/login
    //        6.获得协议版本
            String protocol = request.getProtocol();
            System.out.println(protocol);//     HTTP/1.1
    //        7.获得客户的id
            String remoteAddr = request.getRemoteAddr();
            System.out.println(remoteAddr);//       0:0:0:0:0:0:0:1
        /*获取请求参数的通用方式(post,get都可以使用的方法),下面的方法必须记住,会常用*/
    //        1.根据参数的名称获得参数,括号内参数为标签的name值
            String username = request.getParameter("username");
            System.out.println(username);//  结果:      165
    //        2.根据参数的名成获得参数的数据,例如html标签中checkbox有多个值,就会把这些值放进一个数组中,
            String[] hobbies = request.getParameterValues("hobby");
            System.out.println(Arrays.toString(hobbies));
            //结果:      [chi, he, wan]
    //        3.获得所有的请求参数的名称
            Enumeration<String> parameterNames = request.getParameterNames();
            while (parameterNames.hasMoreElements()) {
                String s = parameterNames.nextElement();
                System.out.println(s);
                //结果:
                //username
                //password
                //hobby
            }
    //        4.获得所有参数的集合
            Map<String, String[]> parameterMap = request.getParameterMap();
    //        遍历集合
            Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
            for (Map.Entry<String, String[]> entry : entries) {
    //            这里可以看出参数的值为数组格式
                String[] value = entry.getValue();
                System.out.println(entry.getKey()+Arrays.toString(value));
                //username[165]
                //password[131]
                //hobby[chi, he, wan]
            }
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            /*get方式和post提交方式,只是一个显示提交,一个隐式提交示,内部方法是一样的,所以我们这里调用post方法就好了*/
            this.doPost(request,response);
        }
    }
  • 相关阅读:
    Docker删除某个容器时失败解决方案
    Docker搭建redis
    Django优雅集成MongoDB
    MongoDB学习笔记:文档Crud Shell
    MongoDB学习笔记:MongoDB 数据库的命名、设计规范
    MongoDB学习笔记:快速入门
    MongoDB学习笔记:Python 操作MongoDB
    在Docker中安装MongoDB
    Linux 挂载盘
    java中Array/List/Map/Object与Json互相转换详解(转载)
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/10686069.html
Copyright © 2011-2022 走看看