当前位置:网站首页>2021.8.9 note request

2021.8.9 note request

2022-07-27 18:33:00 It's food, not shellfish

principle

 Insert picture description here

 Insert picture description here

Inheritance system

 Insert picture description here

Get request line data _ Method

 Insert picture description here One of the most important is 2. Get virtual directories and 5. Get request URI

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        String method = request.getMethod();
        System.out.println(method);
        String contextPath = request.getContextPath();
        System.out.println(contextPath);
        String servletPath = request.getServletPath();
        System.out.println(servletPath);
        String queryString = request.getQueryString();
        System.out.println(queryString);
        String requestURI = request.getRequestURI();
        StringBuffer requestURL = request.getRequestURL();
        System.out.println(requestURI);
        System.out.println(requestURL);
        String remoteAddr = request.getRemoteAddr();
        System.out.println(remoteAddr);
        String protocol = request.getProtocol();
        System.out.println(protocol);
    }

Get request header data

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    Enumeration<String> headerNames = request.getHeaderNames();
    while(headerNames.hasMoreElements()) {
    
        String name = headerNames.nextElement();
        String value = request.getHeader(name);
        System.out.println(name + "-----" + value);
    }
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    String agent = request.getHeader("user-agent");
    if(agent.contains("Firefox")) {
    
        System.out.println(" Here comes Firefox ...");
    }else if(agent.contains("Chrome")) {
    
        System.out.println(" Here comes Google ");
    }
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    String referer = request.getHeader("referer");
    if(referer != null) {
    
        if(referer.contains("/day14")) {
    
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write(" Play ");
        }else {
    
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write(" Do not give ");
        }
    }
}

By creating two tomcat And modify the virtual directory , A no /day14, One can verify

Get request body data

 Insert picture description here

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/demo4" method="post">
        <input name="username">
        <input type="submit" value=" Submit ">
    </form>
</body>
</html>
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.BufferedReader;
import java.io.IOException;

@WebServlet("/requestDemo5")
public class RequestDemo5 extends HttpServlet {
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        BufferedReader reader = request.getReader();
        String str = null;
        while((str = reader.readLine()) != null) {
    
            System.out.println(str);
        }
    }
}

Get request parameters in general

 Insert picture description here

get and post You can use

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

@WebServlet("/requestDemo6")
public class RequestDemo6 extends HttpServlet {
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        String username = request.getParameter("username");
        System.out.println("get");
        System.out.println(username);

        String[] hobbies = request.getParameterValues("hobby");
        for (String hobby : hobbies) {
    
            System.out.println(hobby);
        }

        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()) {
    
            String name = parameterNames.nextElement();
            String value = request.getParameter(name);
            System.out.println(value);
        }
        System.out.println("----------");

        Map<String, String[]> parameterMap = request.getParameterMap();
        Set<String> strings = parameterMap.keySet();
        for (String name : strings) {
    
            System.out.println(name);
            String[] value = parameterMap.get(name);
            for (String va : value) {
    
                System.out.println(va);
            }
            System.out.println("------------");
        }
    }

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

Chinese garbled

post stay input When inputting Chinese , When outputting the corresponding input data, it will be garbled , The solution is request.setCharacterEncoding(“utf-8”);

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
   request.setCharacterEncoding("utf-8");
   String username = request.getParameter("username");
   System.out.println(username);
}

Request forwarding

 Insert picture description here

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
   System.out.println("demo8 Was interviewed ...");
   request.getRequestDispatcher("/requestDemo9").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    System.out.println("demo9 Was interviewed ...");
}

Shared data ( Domain object )

 Insert picture description here
 Insert picture description here

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    request.setAttribute("msg","hello");
    request.getRequestDispatcher("/requestDemo9").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    Object name = request.getAttribute("msg");
    System.out.println(name);
    System.out.println("demo9 Was interviewed ...");
}

getServletContext

I didn't say that

原网站

版权声明
本文为[It's food, not shellfish]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/208/202207271609547426.html