设为首页 加入收藏

TOP

day16-Servlet05(一)
2023-07-25 21:32:33 】 浏览:50
Tags:day16-Servlet05

Servlet05

14.HttpServletRequest

  1. HttpServletRequest对象代表客户端的请求
  2. 当 客户端/浏览器 通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中
  3. 通过这个对象的方法,可以获取客户端的信息
  • HttpServletRequest类图
image-20221112160803071

image-20221112161006386 image-20221112161332903

14.1HttpServletRequest常用方法

  1. getRequestURI():获取请求的资源路径

    http://localhost:8080/servlet/loginServlet

  2. getRequestURL():获取请求的统一资源定位符(绝对路径)

    http://localhost:8080/servlet/loginServlet

  3. getRemoteHost():获取客户端的主机

  4. getRemoteAddr():获取客户端的ip

  5. getHeader():获取请求头

  6. getParameter():获取请求的参数

  7. getParameterValues():获取请求的参数(多个值的时候使用)

  8. getMethod():获取请求的方式get或post

  9. setAttribute(key,value):设置域数据

  10. getAttribute(key):获取域数据

  11. getRequestDispatcher():获取请求转发对象(请求转发的核心对象)

14.2HttpServletRequest应用实例

需求:在一个表单提交数据给Servlet,在该Servlet中通过HttpServletRequest对象获取相关数据

package com.li.servlet.request;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "HttpServletRequestMethods", value = "/requestMethods")
public class HttpServletRequestMethods extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //这里我们使用request对象,获取表单提交的各种数据
        //System.out.println("HttpServletRequestMethods doPost()被调用...");

        //1.获取和http请求头相关的信息
        System.out.println("请求的资源URI= " + request.getRequestURI());
        System.out.println("请求的统一资源定位符(绝对路径)URL= " + request.getRequestURL());
        System.out.println("请求的客户端ip地址= " + request.getRemoteAddr());
        /*
        getRemoteAddr()应用:发现某个ip在10s内访问的次数超过100次,就封ip
        实现思路:1用一个集合concurrentHashMap[k=ip v=访问次数] 2启动线程定时扫描 3做出相应处理
        */
        //如果我们希望得到请求的头的相关信息,可以直接使用request.getHeader("请求头字段名")
        System.out.println("http请求头HOST= " + request.getHeader("Host"));
        System.out.println("该请求发起的地址是= " + request.getHeader("Referer"));
        //请获取访问网站的浏览器是什么?
        String userAgent = request.getHeader("User-Agent");
        //User-Agent= Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
        String[] s = userAgent.split(" ");//使用空格分割
        //取最后一个字符,再用 /分割,取第一个字符
        System.out.println("浏览器的种类= " + s[s.length - 1].split("\\/")[0]);
        System.out.println("http请求方式= " + request.getMethod());

        //2.获取和请求参数相关的信息,要去在返回数据前获取参数
        //username=&pwd=&hobby=lb&hobby=cc
        //2.1获取表单的数据[单个数据]
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String pwd = request.getParameter("pwd");
        //2.2获取表单一组数据[多个数据]
        String[] hobbies = request.getParameterValues("hobby");
        System.out.println("username= " + username);
        System.out.println("pwd= " + pwd);
        //增强for循环的快捷键 iter->回车即可
        for (String hobby : hobbies) {
            System.out.println("hobby= " + hobby);
        }
        //推而广之,如果是单选,下拉框等,获取数据的方法大同小异
    }
}

html页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title&g
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇day07-OpenFeign-服务调用 下一篇每日算法题之买卖股票的最好时机(..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目