• Javaweb之request对象


    目录

    浏览器与servlet交互 

    request获取请求数据

    request通用方法请求参数的使用

    idea快速创建servlet

    解决中文乱码问题(post解决方案)


     浏览器与servlet交互 

    1. package com.mwy.web;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. //http和servlet进行数据交互,动态显示页面内容
    9. @WebServlet("/demo03")
    10. public class ServletDemo03 extends HttpServlet {
    11. @Override
    12. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    13. String name = req.getParameter("username");
    14. resp.setHeader("content-type","text/html;charset=utf-8");
    15. resp.getWriter().write("

      "+name+"欢迎您!

      "
      );
    16. }
    17. }

    request获取请求数据

    get方法:使用getQueryString方法获取参数

    post方法:使用字符输入流获取参数 

    1. package com.mwy.web;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.BufferedReader;
    8. import java.io.IOException;
    9. //request请求方式,获取请求行
    10. //输出结果:
    11. //GET
    12. // /Tomcat_demo1_war
    13. // http://localhost:8085/Tomcat_demo1_war/req1
    14. // /Tomcat_demo1_war/req1
    15. // usernamezhangsan&password=123456
    16. @WebServlet("/req1")
    17. public class ServletDemo04 extends HttpServlet {
    18. @Override
    19. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    20. // 获取方法:get或者post
    21. String method = req.getMethod();
    22. System.out.println(method);
    23. //获取访问资源路径
    24. String contextPath = req.getContextPath();
    25. System.out.println(contextPath);
    26. StringBuffer url = req.getRequestURL();
    27. System.out.println(url);
    28. String uri = req.getRequestURI();
    29. System.out.println(uri);
    30. // 参数
    31. String queryString = req.getQueryString();
    32. System.out.println(queryString);
    33. //--------------获取请求头,user-agent:浏览器的版本信息-----------
    34. String header = req.getHeader("user-agent");
    35. System.out.println(header);
    36. //输出:
    37. // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.70
    38. }
    39. @Override
    40. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    41. //获取post参数
    42. // 获取字符输入流
    43. BufferedReader br = req.getReader();
    44. // 读取数据
    45. String line=br.readLine();
    46. System.out.println(line);
    47. // 输出:username=111&password=111
    48. }
    49. }

    request通用方法请求参数的使用

    使用的最多的方法是getParameter()获取单个参数值

    get和post中方法一样,所以可以只写get中的方法,然后在doPost使用this.doGet(res,req)来直接使用get中已经写好的方法,提高效率。 

    1. package com.mwy.web;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. import java.util.Map;
    9. //request通用方法请求参数的使用
    10. @WebServlet("/demo2")
    11. public class ServletDemo2 extends HttpServlet {
    12. @Override
    13. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    14. //get请求逻辑
    15. System.out.println("get...");
    16. // 1. 获取所有参数的map集合
    17. Map map = req.getParameterMap();
    18. for(String key:map.keySet()){
    19. System.out.println(key+":");
    20. String[] values=map.get(key);
    21. for(String value:values){
    22. System.out.println(value+" ");
    23. }
    24. }
    25. System.out.println("------------------");
    26. //2. 获取对应的参数值
    27. String hobbies[]=req.getParameterValues("hobby");
    28. for(String hobby:hobbies){
    29. System.out.println(hobby);
    30. }
    31. // ------------------
    32. // 1
    33. // 2
    34. // 3. 根据key获取单个参数值
    35. String psw = req.getParameter("password");
    36. String usn = req.getParameter("username");
    37. System.out.println(psw+" "+usn);
    38. }
    39. // get...
    40. //username:
    41. //19120543075
    42. //
    43. //password:
    44. //111
    45. //
    46. //hobby:
    47. //1
    48. @Override
    49. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    50. //post请求逻辑
    51. //get请求逻辑
    52. System.out.println("post...");
    53. //直接使用get中的方法
    54. this.doGet(req, resp);
    55. 1. 获取所有参数的map集合
    56. // Map map = req.getParameterMap();
    57. // for(String key:map.keySet()){
    58. // System.out.println(key+":");
    59. //
    60. // String[] values=map.get(key);
    61. // for(String value:values){
    62. // System.out.println(value+" ");
    63. // }
    64. // }
    65. // System.out.println("------------------");
    66. //
    67. // //2. 获取对应的参数值
    68. // String hobbies[]=req.getParameterValues("hobby");
    69. // for(String hobby:hobbies){
    70. // System.out.println(hobby);
    71. // }
    72. //
    73. ------------------
    74. 1
    75. 2
    76. //
    77. 3. 根据key获取单个参数值
    78. // String psw = req.getParameter("password");
    79. // String usn = req.getParameter("username");
    80. // System.out.println(psw+" "+usn);
    81. }
    82. //post
    83. // username:
    84. //19120543075
    85. //password:
    86. //qqqq
    87. //hobby:
    88. //1
    89. //2
    90. //------------------
    91. //1
    92. //2
    93. //qqqq 19120543075
    94. }

    idea快速创建servlet

    new中没有servlet的解决方法:

    (163条消息) idea中右键new列表里面没有Servlet选项的问题_佐月儿的博客-CSDN博客

    修改模板

     

     

    解决中文乱码问题(post解决方案)

    1. package com.mwy.web;
    2. import javax.servlet.*;
    3. import javax.servlet.http.*;
    4. import javax.servlet.annotation.*;
    5. import java.io.IOException;
    6. @WebServlet("/RequestDemo1")
    7. public class RequestDemo1 extends HttpServlet {
    8. @Override
    9. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    10. // 1. 解决乱码:getReader()
    11. request.setCharacterEncoding("UTF-8");
    12. // 2. 获取username
    13. String username = request.getParameter("username");
    14. System.out.println(username);
    15. }
    16. @Override
    17. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    18. this.doGet(request, response);
    19. }
    20. }

  • 相关阅读:
    JC/T 482-2022 聚氨酯建筑密封胶检测
    如何下载huggingface的模型和权重
    电脑翻译软件-大家都觉得好用的免费电脑翻译软件
    什么是ADC测试,能进行自动化测试吗?
    Android OKHTTP发起请求提示:SSLException: Unable to parse TLS packet header
    AI实战营第二期 第十节 《MMagic 代码课》——笔记11
    在Unity中用UGUI制作可输入下拉框
    计组笔记1-计算机系统概论
    JDBC-02:操作访问数据库时使用Statement操作数据表的弊端
    qt软件正常运行的崩溃了定位行号方法
  • 原文地址:https://blog.csdn.net/weixin_45662399/article/details/126675284