程序员社区

【Servlet-2】HttpServletRequest接口

在这里插入图片描述

文章目录

      • 1.HttpServletRequset请求参数的获取
      • 2.HttpServletRequest设置域属性
      • 3.HttpServletRequest接口中的其他方法:
      • 4.HttpServletRequest请求端中文乱码

1.HttpServletRequset请求参数的获取

根据表单中的name获取表单中的value,注意是针对请求参数而言的。
在这里插入图片描述

package HttpServlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

@WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取指定名称的请求参数值
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println("name="+name);
        System.out.println("age="+age);


        //获取所有请求名称的请求参数值
        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()){
            String eleName = parameterNames.nextElement();
            String eleValue = request.getParameter(eleName);
            System.out.println(eleName+"="+eleValue);
        }

        //获取指定参数的所有值
        String[] hobbies = request.getParameterValues("hobby");
        for(String hobby:hobbies){
            System.out.println(hobby);
        }

        //获取存放请求参数的Map
        Map<String, String[]> parameterMap = request.getParameterMap();
        Set<String> set = parameterMap.keySet();
        for(String key:set){
            System.out.println(key+"="+request.getParameter(key));
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

在这里插入图片描述

2.HttpServletRequest设置域属性

ServletRequestDemo1文件:在其中设置域属性,如果想在其他Servlet中获取域属性就要使用请求转发,否则不能获取到域属性的值。request对象的生命周期是一次请求。
而ServletContext中设置的域属性,可以在任何一个Servlet中获取。

在这里插入图片描述
在这里插入图片描述

package HttpServletRequest;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/ServletRequestDemo1")
public class ServletRequestDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("username","zhangsan");
        request.setAttribute("password","123");

        //从请求中删除域属性
        request.removeAttribute("password");

        //将请求转发给ServletRequestDemo2
     	request.getRequestDispatcher("/ServletRequestDemo2").forward(request,response);

    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

ServletRequestDemo2文件:

package HttpServletRequest;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

@WebServlet("/ServletRequestDemo2")
public class ServletRequestDemo2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object username = request.getAttribute("username");
        Object password = request.getAttribute("password");
        System.out.println("username="+username);
        System.out.println("password="+password);

        Enumeration<String> attributeNames = request.getAttributeNames();
        while (attributeNames.hasMoreElements()){
            String name = attributeNames.nextElement();
            System.out.println(name+"="+request.getAttribute(name));
        }
    }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request,response);
        }
}

3.HttpServletRequest接口中的其他方法:

package HttpServletRequest;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/ServletRequestDemo3")
public class ServletRequestDemo3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取请求的URL
        StringBuffer requestURL = request.getRequestURL();
        System.out.println("requestURL="+requestURL);

        //获取请求的URI
        String requestURI = request.getRequestURI();
        System.out.println("requestURI="+requestURI);

        //获取当前web应用的根路径
        String contextPath = request.getContextPath();
        System.out.println("contextPath="+contextPath);

        //获取客户端IP
        String remoteAddr = request.getRemoteAddr();
        System.out.println("remoteAddr="+remoteAddr);

        //获取ServletPath
        String servletPath = request.getServletPath();
        System.out.println("servletPath="+servletPath);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

在这里插入图片描述

4.HttpServletRequest请求端中文乱码

乱码.html:表单Post方式提交

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/34/ServletErrorCode1" method="post">
    姓名: <input type="text" name="name"><br>
    年龄: <input type="text" name="age"><br>
    爱好:
    <input type="checkbox" name="hobby" value="running">跑步
    <input type="checkbox" name="hobby" value="reading">看书
    <input type="checkbox" name="hobby" value="listening">听歌
    <input type="submit" value="提交">
</form>
</body>
</html>

ServletErrorCode1文件:

package 中文乱码;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/ServletErrorCode1")
public class ServletErrorCode1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println("name="+name);
        System.out.println("age="+age);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

在这里插入图片描述
解决Post提交时的中文乱码问题,该方法设置了请求体中的编码
request.setCharacterEncoding("UTF-8");

		//解决Post提交时的中文乱码问题,该方法设置了请求体中的编码
        request.setCharacterEncoding("UTF-8");
        
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println("name="+name);
        System.out.println("age="+age);

在这里插入图片描述

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【Servlet-2】HttpServletRequest接口

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区