HttpRequestServlet学习

HttpServletRequest:

HttpServletRequest对象代表用户端浏览器发来的请求,当用户通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

常用方法

方法名 描述
String getHeader(string name) 以 String 的形式返回指定请求头的值(根据键获取对应的值)。如果该请求不包含指定名称的头,则此方法返回 null。如果有多个具有相同名称的头,则此方法返回请求中的第一个头。头名称是不区分大小写的。可以将此方法与任何请求头一起使用
String getContextPath() 获取项目路径,防止写死后要修改很多访问路径
String getParameter(String name) 通过指定名称(页面的name值)获取参数值
String[] getParameterValues(String name) 通过指定名称获取参数值数组,例如表单中的多个复选框使用相同的name时
Enumeration getParameterNames() 获取所有参数的名字
Map getParameterMap() 获取所有参数对应的Map,其中key为参数名,value为参数值 ,很少单独用

请求头

    servlet代码


@WebServlet("/LoginServlet")
public class RequestSevlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("dopost");
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doGet");

        //1、 获取请求行中的请求方式method
        String method = request.getMethod();
        System.out.println("请求方式method = " + method + "\n");

        //2、获取请求行中的项目访问路径【***】
        String path = request.getContextPath(); //获取项目路径,防止写死后要修改很多
        System.out.println("项目路径path = " + path + "\n");

        //3、获取当前啊浏览器的类型(谷歌/火狐...) 做浏览器兼容
        String type = request.getHeader("User-Agent");
        System.out.println("当前浏览器类型 :" + type + "\n");

        //4、获取请求头中所有的key 返回枚举类型
        //Enumeration 迭代器  两个方法hasNext() next()
        Enumeration<String> headerNames = request.getHeaderNames();
        System.out.println("返回请求头中的所有的key");
        while(headerNames.hasMoreElements()){
            String key = headerNames.nextElement();//请求头的键key
            String value = request.getHeader(key);
            System.out.println(key + " : " + value);
        }

    }
}

    运行结果

HttpRequestServlet学习_第1张图片

请求体

    servlet

@WebServlet("/body")
public class RequestBodySevlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("dopost");
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doGet");

        //Tomcat 默认可以处理Get请求的中文提交(不乱码),但是不能处理Post请求的中文的提交(会乱码)
        //设置post请求的编码格式
        /*if("Post".equalsIgnoreCase(request.getMethod())){
            //设置请求体的数据编码为UTF-8
            request.setCharacterEncoding("UTF-8");
        }*/
        //get没有请求体,设置不设置对这个这个没影响,所以不需要对其判断(判断也行)
        request.setCharacterEncoding("UTF-8");

        System.out.println("getParameter()一般获取单个值");
        //获取请求体中的参数,这才是真正要传递给后台的数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username + " : " + password);

        System.out.println("getParameterValues()方法,一般用于复选框,一个key多个值");
        //getParameterValues()获取所有参数的值
        String[] hobbys = request.getParameterValues("hobbys");
        //Arrays.toString(list[]) 将数组转换为字符串
        System.out.println(Arrays.toString(hobbys));

        //getParameterMap()  key-value value可能有多个(复选框等)
        System.out.println("getParameterMap()方法获取所有的key-value键值对");
        Map<String, String[]> map = request.getParameterMap();
        Set<String> keys = map.keySet();//获取map的所有key
        for(String key : keys){
            System.out.println(key + " : " + Arrays.toString(map.get(key)));
        }
    }
}

    html

<html>
<head>
    <title>登录界面title>
head>
<body>
    <h3>post请求包h3>
    <form action="body" method="post">
        <table>
            <tr>
                <td>账号:td>
                <td><input type="text" name="username">td>
            tr>
            <tr>
                <td>密码:td>
                <td><input type="password" name="password">td>
            tr>
            <tr align="center"><input type="submit" value="登录">tr>
            <tr>
                <td>爱好:td>
                <td>
                    <input type="checkbox" name="hobbys" value="敲代码"/>敲代码
                    <input type="checkbox" name="hobbys" value="写博客"/>写博客
                    <input type="checkbox" name="hobbys" value="看底层"/>看底层
                    <input type="checkbox" name="hobbys" value="学操作"/>学操作
                td>
            tr>
        table>

    form>

    <h3>get请求包h3>
    <form action="body" method="get">
        <table>
            <tr>
                <td>账号:td>
                <td><input type="text" name="username">td>
            tr>
            <tr>
                <td>密码:td>
                <td><input type="password" name="password">td>
            tr>
            <tr align="center"><input type="submit" value="登录">tr>
            <tr>
                <td>爱好:td>
                <td>
                    <input type="checkbox" name="hobbys" value="敲代码"/>敲代码
                    <input type="checkbox" name="hobbys" value="写博客"/>写博客
                    <input type="checkbox" name="hobbys" value="看底层"/>看底层
                    <input type="checkbox" name="hobbys" value="学操作"/>学操作
                td>
            tr>
        table>
    form>
body>
html>

    测试截图
HttpRequestServlet学习_第2张图片
HttpRequestServlet学习_第3张图片

你可能感兴趣的:(每日学习,java,intellij,idea,经验分享)