zoukankan      html  css  js  c++  java
  • JSP-request(httpServletRequest)

    HttpServletRequest

    1 HttpServletRequest概述

     

    2 request运行流程

    3 通过抓包工具抓的http请求

    4 请求行信息的相关方法

            //1、获得请求方式
            String method = request.getMethod();
            System.out.println("method:"+method);
            //2、获得请求的资源相关的内容
            String requestURI = request.getRequestURI();
            StringBuffer requestURL = request.getRequestURL();
            System.out.println("uri:"+requestURI);
            System.out.println("url:"+requestURL);
            //获得web应用的名称
            String contextPath = request.getContextPath();
            System.out.println("web应用:"+contextPath);
            //地址后的参数的字符串
            String queryString = request.getQueryString();
            System.out.println(queryString);
            //3、获得客户机的信息---获得访问者IP地址
            String remoteAddr = request.getRemoteAddr();
            System.out.println("IP:"+remoteAddr);

    结果:

    5 获得请求头

     

            //1、获得指定的头
            String header = request.getHeader("User-Agent");
            System.out.println(header);
            //2、获得所有的头的名称
            Enumeration<String> headerNames = request.getHeaderNames();
            while(headerNames.hasMoreElements()){
                String headerName = headerNames.nextElement();
                String headerValue = request.getHeader(headerName);
                System.out.println(headerName+":"+headerValue);
            }

    6 获得请求体

        //1、获得单个表单值
            String username = request.getParameter("username");
            System.out.println(username);
            String password = request.getParameter("password");
            System.out.println(password);
            //2、获得多个表单的值
            String[] hobbys = request.getParameterValues("hobby");
            for(String hobby:hobbys){
                System.out.println(hobby);
            }
            //3、获得所有的请求参数的名称
            Enumeration<String> parameterNames = request.getParameterNames();
            while(parameterNames.hasMoreElements()){
                System.out.println(parameterNames.nextElement());
            }
            System.out.println("------------------");
            //4、获得所有的参数 参数封装到一个Map<String,String[]>
            Map<String, String[]> parameterMap = request.getParameterMap();
            for(Map.Entry<String, String[]> entry:parameterMap.entrySet()){
                System.out.println(entry.getKey());
                for(String str:entry.getValue()){
                    System.out.println(str);
                }
                System.out.println("---------------------------");
            }

    7 request的其他功能

    7.1 request是域对象

     

    7.2 请求转发

    图解

    请求和重定向

    7.3 request的细节

    8 完成用户的注册

    8.1 注册分析

    8.2 基本实现

            //使用BeanUtils进行自动映射封装
            //BeanUtils工作原理:将map中的数据 根据key与实体的属性的对应关系封装
            //只要key的名字与实体的属性 的名字一样 就自动封装到实体中
            Map<String, String[]> properties = request.getParameterMap();
            User user = new User();
            try {
                BeanUtils.populate(user, properties);
            } catch (IllegalAccessException | InvocationTargetException e) {
                e.printStackTrace();
            }
    
            //现在这个位置 user对象已经封装好了
            //手动封装uid----uuid---随机不重复的字符串32位--java代码生成后是36位
            user.setUid(UUID.randomUUID().toString());
    
            //3、将参数传递给一个业务操作方法
            try {
                regist(user);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            //4、认为注册成功跳转到登录页面
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            
    
        }
    
        //注册的方法
        public void regist(User user) throws SQLException{
            //操作数据库
            QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
            String sql = "insert into user values(?,?,?,?,?,?,?,?,?,?)";
            
            runner.update(sql,user.getUid(),user.getUsername(),user.getPassword(),user.getName(),
                    user.getEmail(),null,user.getBirthday(),user.getSex(),null,null);
        }

    8.3 乱码问题

     

    代码实现

    //设置request的编码---只适合post方式
            request.setCharacterEncoding("UTF-8");
            
            //get方式乱码解决
            //String username = request.getParameter("username");//乱码
            //先用iso8859-1编码 在使用utf-8解码
            //username = new String(username.getBytes("iso8859-1"),"UTF-8");


    作者:8亩田
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.

    本文如对您有帮助,还请多帮 【推荐】 下此文。
    如果喜欢我的文章,请关注我的公众号
    如果有疑问,请下面留言

    学而不思则罔 思而不学则殆
  • 相关阅读:
    Shell笔记——文本操作
    Shell笔记——加密命令
    conda,pip 安装指定版本的指定包
    如何检查tensorflow环境是否能正常调用GPU
    Windows10中使用Anaconda安装keras-gpu版本(遇到的坑)
    canvas一些属性
    块级元素,行内元素,行内块级元素都有哪些
    面向对象版Tab栏切换
    注册事件的兼容性处理
    常见的移动端问题
  • 原文地址:https://www.cnblogs.com/liu-wang/p/8595734.html
Copyright © 2011-2022 走看看