2022-8-30 servlet

HttpServletRequest — request(请求)

所有的 和请求相关的操作,都用这对象来处理
当有请求来的时候 , request就被实例化

HttpServletResponse — response(响应)

所有和响应相关的操作,都用这个对象来处理
当有请求来的时候 , response 就被实例化
当你想要给出响应就使用 response ,,  我们给出的响应,必须要展示在客户端(浏览器)

init方法什么时候执行?

 * 默认当我们第一次访问servlet的时候被调用,延迟加载。
 * 初始化方法只执行一次。
public class HelloServlet extends HttpServlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("servlet初始化");
        System.out.println(config.getInitParameter("username"));
        System.out.println(config.getInitParameter("password"));
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收参数 ,处理请求
          request.getParameter("username");
          request.getParameter("password");
          // 给出响应
        // 客户端和服务器端的信息传递
        // 设置响应的字符集   一定要放在获取流之前
        // 服务器处理字符串按照UTF-8处理
        response.setCharacterEncoding("utf-8");
        // 添加响应头,告诉浏览器以HTML的格式来解析响应字符串
        response.addHeader("content-type","text/html;charset=utf-8");
        //Io流
        PrintWriter writer = response.getWriter();
        //向客户端回复数据
        writer.write("我是后台返回的数据");
           //  * writer.write---写字符。
           //  * writer.print---写字节。
        //流的操作
        writer.flush();
        writer.close();
    }
}

System.out.println(“请求的方法:” + request.getMethod());
System.out.println(“请求的根路径:” + request.getContextPath());
System.out.println(“请求的URI:” + request.getRequestURI());
System.out.println(“请求的URL:” + request.getRequestURL());
System.out.println(“请求的servletPath:” + request.getServletPath());

@WebServlet("/demo.do")
public class Demo01Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 根据key获取对应的value
       request.getParameter("");
        // 获取一个key对应的多个值,返回值为String类型的数组  例如:复选框
       String[] hobbies = request.getParameterValues("hobby");
//        System.out.println(Arrays.toString(hobbies));

    // 获取请求中传过来的参数的key值,根据key值获取对应的value值
   Enumeration<string> parameterNames = request.getParameterNames();
   while(parameterNames.hasMoreElements()){
       System.out.println(parameterNames.nextElement());
   }
    // &#x53EF;&#x4EE5;&#x83B7;&#x53D6;&#x5230;&#x8BF7;&#x6C42;&#x4E2D;&#x7684;&#x6240;&#x6709;&#x7684;&#x952E;&#x503C;&#x5BF9;&#xFF0C;&#x8FD4;&#x56DE;&#x503C;&#x662F;&#x4E00;&#x4E2A;map&#x96C6;&#x5408;
    // &#x8FD9;&#x4E2A;map&#x96C6;&#x5408;&#x7684;key&#x662F;String&#xFF0C;value&#x662F;String[]
    // username=admin,password=123456,hobby=a,b,c,gender=man
    Map<string, string[]> map = request.getParameterMap();
    for (Map.Entry<string, string[]> name : map.entrySet()) {
        String key = name.getKey();
        String[] value = name.getValue();
        System.out.println(key + "--->" + Arrays.toString(value));
    }
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request,response);
}
</string,></string,></string>

}

转发 request.getRequestDispatcher(“demo03.do”).forward(request,response);

@WebServlet("/demo02.do")
public class Demo02Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
        * &#x8BF7;&#x6C42;&#x8F6C;&#x53D1;---&#x7531;&#x591A;&#x4E2A;servlet&#x6765;&#x5904;&#x7406;&#x540C;&#x4E00;&#x4E2A;&#x8BF7;&#x6C42;
        *
        * &#x8BF7;&#x6C42;&#x8F6C;&#x53D1;&#x662F;&#x5728;&#x670D;&#x52A1;&#x5668;&#x4E0A;&#x5B8C;&#x6210;&#x7684;&#xFF0C;&#x8DDF;&#x5BA2;&#x6237;&#x7AEF;&#x662F;&#x5426;&#x65E0;&#x5173;&#xFF01;&#xFF01;&#xFF01;
        *
        *
        */
        String name = request.getParameter("name");
        System.out.println("Demo02Servlet,name:" + name);
        // getRequestDispatcher&#x53C2;&#x6570;&#xFF1A;&#x8F6C;&#x53D1;&#x7684;servlet&#x7684;&#x5730;&#x5740;
        // forward&#x53C2;&#x6570;&#xFF1A;request,response&#xFF0C;&#x628A;&#x5F53;&#x524D;servlet&#x7528;&#x7684;request&#x548C;response&#x4F20;&#x7ED9;&#x4E0B;&#x4E00;&#x4E2A;
        request.getRequestDispatcher("demo03.do").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
@WebServlet("/demo04.do")
public class Demo04Servlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    /*
    * &#x4F5C;&#x7528;&#x57DF;&#xFF1A;&#x8D77;&#x4F5C;&#x7528;&#x7684;&#x533A;&#x57DF;
    *
    * &#x5F80;request&#x4F5C;&#x7528;&#x57DF;&#x4E2D;&#x6DFB;&#x52A0;&#x4E86;&#x4E00;&#x4E2A;&#x5C5E;&#x6027;name&#xFF0C;&#x503C;&#x662F;zhangsan
    *
    * &#x8BF7;&#x6C42;&#x8F6C;&#x53D1;&#x7684;&#x65F6;&#x5019;&#x662F;&#x540C;&#x4E00;&#x4E2A;request
    *
    */
    request.setAttribute("name","zhangsan");
    // name&#x600E;&#x4E48;&#x53D6;&#x51FA;&#x6765;&#xFF1F;
    System.out.println("demo04.do---name&#xFF1A;" + request.getAttribute("name"));
    request.getRequestDispatcher("demo05.do").forward(request,response);

//        &#x6839;&#x636E;&#x6307;&#x5B9A;&#x7684;key&#xFF0C;&#x5220;&#x9664;&#x5BF9;&#x5E94;&#x7684;value
//        request.removeAttribute("name");
        // &#x83B7;&#x53D6;request&#x4F5C;&#x7528;&#x57DF;&#x4E2D;&#x7684;&#x6240;&#x6709;&#x7684;key
//        Enumeration<string> attributeNames = request.getAttributeNames();

}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}
}

    request.getRequestDispatcher("demo03.do").forward(request,response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}
}
</string>

重定向 response.sendRedirect(“success.html”);

@WebServlet("/demo06.do")
public class Demo06Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       response.getWriter()
       response.setCharacterEncoding("utf-8");
       response.addHeader("content-type","text/html;charset=utf-8");
       response.sendRedirect("success.html");

}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}
}

请求转发和重定向的区别:

        1.&#x91CD;&#x5B9A;&#x5411;&#x662F;&#x4E24;&#x6B21;&#x8BF7;&#x6C42;&#xFF0C;&#x8BF7;&#x6C42;&#x8F6C;&#x53D1;&#x662F;&#x4E00;&#x4E2A;&#x8BF7;&#x6C42;
        2.&#x91CD;&#x5B9A;&#x5411;&#x662F;&#x5BA2;&#x6237;&#x7AEF;&#x884C;&#x4E3A;&#xFF0C;&#x8BF7;&#x6C42;&#x8F6C;&#x53D1;&#x662F;&#x670D;&#x52A1;&#x5668;&#x884C;&#x4E3A;
        3.&#x91CD;&#x5B9A;&#x5411;&#x6D4F;&#x89C8;&#x5668;&#x5730;&#x5740;&#x4F1A;&#x53D1;&#x751F;&#x6539;&#x53D8;&#xFF0C;&#x8F6C;&#x53D1;&#x4E0D;&#x4F1A;

最常见的客户端传参的方式两种,get,post

 * &#x6D4F;&#x89C8;&#x5668;&#x5730;&#x5740;&#x680F;&#x76F4;&#x63A5;&#x8F93;&#x5165;&#xFF1A;&#x4E00;&#x5B9A;&#x662F;get&#x8BF7;&#x6C42;
 * &#x8D85;&#x7EA7;&#x94FE;&#x63A5;&#xFF1A;&#x4E00;&#x5B9A;&#x662F;get&#x8BF7;&#x6C42;
 * &#x8868;&#x5355;&#xFF1A;&#x53EF;&#x4EE5;&#x662F;get&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x662F;post&#xFF0C;&#x53D6;&#x51B3;&#x4E8E;method
 *
 * GET&#x8BF7;&#x6C42;&#x548C;POST&#x8BF7;&#x6C42;&#x7684;&#x533A;&#x522B;&#xFF1A;
 * GET&#xFF1A;&#x8BF7;&#x6C42;&#x7684;&#x53C2;&#x6570;&#x4F1A;&#x5728;&#x6D4F;&#x89C8;&#x5668;&#x7684;&#x5730;&#x5740;&#x680F;&#x4E2D;&#x663E;&#x793A;&#xFF0C;&#x4E0D;&#x5B89;&#x5168;&#xFF1B;&#x8BF7;&#x6C42;&#x7684;&#x957F;&#x5EA6;&#x9650;&#x5236;&#x5728;1K&#x4E4B;&#x5185;&#x3002;
 *      &#x6CA1;&#x6709;&#x8BF7;&#x6C42;&#x4F53;&#xFF0C;&#x65E0;&#x6CD5;&#x901A;&#x8FC7;request&#x53BB;&#x8BBE;&#x7F6E;&#x4E00;&#x4E9B;&#x53C2;&#x6570;&#x3002;
 * POST&#xFF1A;&#x8BF7;&#x6C42;&#x7684;&#x53C2;&#x6570;&#x4E0D;&#x4F1A;&#x5728;&#x6D4F;&#x89C8;&#x5668;&#x7684;&#x5730;&#x5740;&#x680F;&#x4E2D;&#x663E;&#x793A;&#xFF0C;&#x76F8;&#x5BF9;&#x5B89;&#x5168;&#x3002;
 *       &#x628A;&#x8BF7;&#x6C42;&#x7684;&#x53C2;&#x6570;&#x5C01;&#x88C5;&#x6210;&#x51E0;&#x4E2A;&#x6570;&#x636E;&#x62A5;&#x6587;&#xFF08;&#x8BF7;&#x6C42;&#x4F53;&#xFF09;&#x3002;&#x8BF7;&#x6C42;&#x53C2;&#x6570;&#x7684;&#x957F;&#x5EA6;&#x6CA1;&#x6709;&#x9650;&#x5236;&#x3002;

Original: https://www.cnblogs.com/ychptz/p/16640749.html
Author: 阿萨德菩提子
Title: 2022-8-30 servlet

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611131/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Oracle 有排序的分页SQL写法

    第一种: 第二种: 第一种比第二种效率会高,这是因为:CBO 优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询…

    数据库 2023年6月16日
    088
  • Yapi安装配置(CentOs)

    环境要求 nodejs(7.6+)mongodb(2.6+)git 准备工作 清除yum命令缓存 sudo yum clean all 卸载低版本nodejs yum remove…

    数据库 2023年6月11日
    073
  • 代码随想录-数组篇

    上次刷没刷完整,和李哥做字节的题感觉先前刷的题白刷了,故打算从头到尾完整走一遍。 二分法 1-1.二分查找 力扣题目链接 给定一个 n 个元素有序的(升序)整型数组 nums 和一…

    数据库 2023年6月14日
    0110
  • 多商户商城系统功能拆解22讲-平台端分销商品

    多商户商城系统,也称为B2B2C(BBC)平台电商模式多商家商城系统。可以快速帮助企业搭建类似拼多多/京东/天猫/淘宝的综合商城。 多商户商城系统支持商家入驻加盟,同时满足平台自营…

    数据库 2023年6月14日
    0100
  • 详谈 MySQL 8.0 原子 DDL 原理

    柯煜昌 青云科技研发顾问级工程师 目前从事 RadonDB 容器化研发,华中科技大学研究生毕业,有多年的数据库内核开发经验。 文章字数 3800+,阅读时间 15 分钟 背景 My…

    数据库 2023年6月11日
    0143
  • MAC Golang环境搭建

    下载golang 下载地址:https://golang.google.cn/dl/ 根据MAC左上角苹果图标->关于本机,即可查看芯片类型 安装golang 在 下载 中双…

    数据库 2023年6月14日
    092
  • 4_爬NMPA药监总局_动态加载_传ID

    http://scxk.nmpa.gov.cn:81/xk/ import requests url = ‘http://scxk.nmpa.gov.cn:81/xk/itowne…

    数据库 2023年6月11日
    092
  • 关于在vue项目中引入<el-img>标签失败的问题

    问题如下 语法没有写错,但是冒号错了,不能在img后面紧接着冒号 只能在src前面紧接着冒号 Original: https://www.cnblogs.com/ly-heker/…

    数据库 2023年6月11日
    088
  • 设计模式之(5)——原型模式

    上篇文章中我们提到单例模式可以避免重复创建消耗资源的对象,但是却不得不共用对象。若是对象本身也不让随意访问修改时,怎么办?那么我们就可以采用原型模式来创建新的实例。 定义:原型模式…

    数据库 2023年6月14日
    067
  • VSCode 常用插件

    自定义相关 语言包、主题、快捷键等 plugins description Chinese 中文简体语言包 Material Theme Google Material 主题(附带…

    数据库 2023年6月6日
    097
  • day42-反射01

    Java反射01 1.反射(reflection)机制 1.1反射机制问题 一个需求引出反射 请看下面问题: 根据配置文件 re.properties 指定信息,创建Cat对象并调…

    数据库 2023年6月11日
    0126
  • 数据库治理的云原生之道 —— Database Mesh 2.0

    2018 年 3 月,一篇《Service Mesh 是大方向,那 Database Mesh 呢?》迅速火爆技术圈。在这篇文章中,Apache ShardingSphere 创始…

    数据库 2023年6月16日
    096
  • 实验:非GTID 级联复制架构变为一主多从

    个个原创文章 欢迎讨论https://www.cnblogs.com/konggg/欢迎转载收藏,转载请注明来源,谢谢支持! Original: https://www.cnblo…

    数据库 2023年6月16日
    0111
  • 数据专家最常使用的 10 大类 Pandas 函数 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:http://www.showmeai.tech/tutorials/40📘 本文地址:http://www.showmea…

    数据库 2023年6月14日
    083
  • 部署zabbix监控服务

    部署zabbix监控服务 部署zabbix监控服务 什么是zabbix zabbix的特点 zabbix的配置文件 部署zabbix zabbix服务端安装 准备工作 数据库操作 …

    数据库 2023年6月14日
    097
  • [springmvc]从前端获取参数以及显示

    6.接收请求参数以及数据回显 接收普通参数 参数名与前端传递的参数名相同时 前端表单名name=name $Title$ username: 后端收到的参数名String name…

    数据库 2023年6月16日
    0103
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球