首页 > 其他分享 >2022-08-30 卢睿 学习心得

2022-08-30 卢睿 学习心得

时间:2022-08-30 22:12:07浏览次数:55  
标签:30 匹配 请求 08 req println 卢睿 resp String

目录

1.Servlet

除了form表单之外都是get请求

  • HttpServletRequest--- req——请求

  • 所有请求的操作都用req对象来处理

  • 当有请求来的时候,req就被实例化

  • HttpServletResponse--- resp——响应

  • 所有响应的操作都用resp对象来处理

  • 当有响应来的时候,resp就被实例化

  • 当你想要给出响应时,使用resp

  • 我们要给出的响应,必须要展示在客户端(浏览器)

  • 【servlet的匹配优先级最高】

  • 如果使用路径匹配,必须有/

  • 如果使用扩展名匹配,必须没有/

  • 扩展名匹配与路径匹配无法同时设置

  • <!--        默认匹配/缺省匹配-->
            <url-pattern>/</url-pattern>
    

生命周期

初始化

  • init方法什么时候执行
    • 默认当我们第一次访问servlet的时候被调用,——延迟加载
    • 初始化方法只执行一次

请求

  • 常用的方法
        System.out.println(req.getMethod()+"请求的方法");
        System.out.println(req.getContextPath()+"请求的根路径");
        System.out.println(req.getServletPath()+"请求的servletPath路径");
        System.out.println(req.getRequestURI()+"请求的URI");
        System.out.println(req.getRequestURL()+"请求的URL");
        System.out.println(req.getScheme()+"请求的协议");
  • 重要的方法——接受参数
 		// 接受参数,处理请求
        String username = req.getParameter("username");
        String password = req.getParameter("password");

接受参数

 // 接受参数,处理请求

        // 根据key获取value
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // 复选框返回多个值
        String[] hobbies = req.getParameterValues("hobby");


        // 获取key的值,根据key的值获取value
        Enumeration<String> parameterNames = req.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            String s = parameterNames.nextElement();
            String parameter = req.getParameter(s);
        }

        //获取请求中传过来键值对,返回值是一个map集合;
        // 这个map集合的key是String,value是String[];
        Map<String, String[]> parameterMap = req.getParameterMap();
        for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
            String key = entry.getKey();
            String[] value = entry.getValue();
        }

请求转发

  • 由多个servlet来处理一个请求
  • 请求转发是在服务器上完成的,根客户端无关

作用域

  • 起作用的区域

  • 		req.setAttribute("name","张三");
            // 获取
            System.out.println("demo04.do-------->"+req.getAttribute("name"));
            // 删除
            req.removeAttribute("name");
            req.getRequestDispatcher("/demo03.do").forward(req,resp);
    

响应

        // 给出响应
        // 客户端与服务端的信息传递
//        resp.setContentType("text/html;charset=utf-8");

        // 响应的字符集一定放在流之前
        // 添加响应头,告诉浏览器以HTML的格式来解析响应字符串
        resp.addHeader("content-type","text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.write("我是后台,已经接到你的请求了!!!");

            // 写字符
            writer.write("login success!!!");
            // 写字节
            writer.println("");

        // 流的操作
        writer.flush();
        writer.close();
  • 重定向

  •         resp.sendRedirect("index.html");
    

面试题

路径配置中【/与/*有什么区别】

  • 【/*】——属于路径匹配,可以匹配所有的请求,路径匹配的优先级仅次于精确匹配的
    • 会覆盖所有的扩展名匹配,非常恶劣的匹配规则(语法)
  • 【/】——是servlet中的特殊匹配模式,优先级最低,不会覆盖任何的【url-patter】,匹配所有的请求
  • /和/*拦截静态资源

GET和POST的区别

  • GET:请求的参数会在浏览器的地址栏中显示,不安全;请求的长度限制在1k之内
    • 没有请求体,无法通过request去设置参数。
  • POST:请求的参数不会在浏览器的地址栏中显示,安全;没有长度限制
    • 有请求体

请求转发和重定向的区别

  • 重定向——是两次请求,是客户端行为,是浏览器的地址会发生改变,【重定向可以定义到任意地址】
  • 请求转发——是一次请求,是服务器行为,浏览器地址不会发生改变,【转发只能项目内转发】

标签:30,匹配,请求,08,req,println,卢睿,resp,String
From: https://www.cnblogs.com/lurui711/p/16641059.html

相关文章

  • NC21303 删括号 问删除括号对,能否将s转变成 t 线性DP 栈
     链接:https://ac.nowcoder.com/acm/problem/21303来源:牛客网题目描述给你一个合法的括号序列s1,每次你可以删除一个"()"你可以删除0个或者多个......
  • 2022-8-30第一组孙乃宇Servlet
    Servletrequest(请求)所有和请求相关的操作,都用这个对象来处理当有请求来的时候,request就被实例化response对象所有和响应相关的操作,都用这个对象来处理 当你想要给......
  • JA学习 day06 ,day07 and day08
    day06预解析对象对象的遍历对象的常用方法预解析在代码执行前,对代码进行通读并解释预解析只会对以下两种方式进行极解析1定义变量varnum=100......
  • 2022-8-30 servlet
    HttpServletRequest---request(请求)所有的和请求相关的操作,都用这对象来处理当有请求来的时候,request就被实例化HttpServletResponse---response(响应)所有......
  • PAT Advanced 1030 Travel Plan(30)
    题目描述:Atraveler'smapgivesthedistancesbetweencitiesalongthehighways,togetherwiththecostofeachhighway.Nowyouaresupposedtowriteaprogra......
  • PAN3028 是一款采用 ChirpIoTTM调制解调技术的低功耗远距离无线收发芯片
    PAN3028是一款采用ChirpIoTTM调制解调技术的低功耗远距离无线收发芯片,支持半双工无线通信,工作频段为370~600MHz和740~1200MHz,该芯片具有高抗干扰性、高灵敏度、低......
  • 8/30 注册博客园
    8月30日下午17:05鄙人写下了第一篇博客。写博客的目的很单纯,想通过记录博客的方式以记录自己的ACM学习,大学生活什么的。另外大佬们总会说要自己写解题报告,算法分析,模板什......
  • 2022-08-30 第二小组 张晟源(javaweb,request,response)
    JavaWebHttpServletRequest//请求  所有和请求相关的操作  当请求来的时候,request就被实例化HttpServletResponse//响应   所有和响应的操作  当请求来......
  • CF808G Anthem of Berland
    给定\(s\)和\(t\),其中\(s\)中有\(k\)个?,求\(s\)补齐?后匹配\(t\)的最大次数。\(|s|\times|t|\leq10^7\)。先用一组数据\(HACK\)掉贪心做法:(贪心只......
  • JetBrains 里不为人知的秘密(17)---对比文件---最新(2022-08-30) 大飞
    JetBrains里不为人知的秘密(17)---对比文件---最新(2022-08-30)大飞比较项目文件在macOS上按 ⌘1(在Windows和Linux上按 Alt+1)打开 Project(项目)工具窗口,或者......