JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码

在写servlet时需要实现5个方法,在一个service方法里面有两个参数request和response。 

浏览器向服务器发送请求会发送HTTP的请求数据——字符串,这些字符串会被Tomcat所解析,然后这些请求数据会被放到一个对象(request)里面保存。

相应的Tomcat也会发送一些响应数据给浏览器

Request——获取请求数据(比如用户名和密码等等)

Response——设置响应数据

JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第1张图片

JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第2张图片 

JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第3张图片

入门案例实现

创建一个如下的Servlet对象

@WebServlet("/demo99")
public class ServletDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        //使用request对象 获取请求数据
        String name=request.getParameter("name");

        //使用response对象 设置相应数据
        response.setHeader("content-type","text/html;charset=utf-8");
        response.getWriter().write("

"+name+",欢迎您!

"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { System.out.println("Post...."); } }

通过request里面的getParameter方法获取请求参数,比如//url?name=zhangsan 这种键值对的形式通过name这个键可以获取参数的值

通过response.setHeadr设置响应头。

如下通过在url中加键值对的方式获取数据并设置相应数据JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第4张图片

到此,完成了简易的客户端浏览器和服务器的交互过程。

Resquest相关

JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第5张图片

Request继承体系

JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第6张图片

 Tomcat解析了请求数据,因此由Tomcat来提供Resquest的实现类,resquest是由Tomcat创建。

JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第7张图片

 

 Request获取请求数据

请求数据分为3部分

1.请求行

请求行的组成:请求方式/访问路径?参数 请求协议JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第8张图片

2.请求头

3.请求体(只有post请求才有请求体)

post请求会把表单参数放到请求体里面封装提交

请求体数据的获取,request对象使用了流的方式

如果是纯文本使用字符输入流

用到文件上传比如图片之类就要用到字节输入流

 对上面的6个方法进行简单的演示

/**
 * request 获取请求数据
 */
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // String getMethod():获取请求方式: GET
        String method = req.getMethod();
        System.out.println(method);//GET
        // String getContextPath():获取虚拟目录(项目访问路径):/request-demo
        String contextPath = req.getContextPath();
        System.out.println(contextPath);
        // StringBuffer getRequestURL(): 获取URL(统一资源定位符):http://localhost:8080/request-demo/req1
        StringBuffer url = req.getRequestURL();
        System.out.println(url.toString());
        // String getRequestURI():获取URI(统一资源标识符): /request-demo/req1
        String uri = req.getRequestURI();
        System.out.println(uri);
        // String getQueryString():获取请求参数(GET方式): username=zhangsan
        String queryString = req.getQueryString();
        System.out.println(queryString);
        
        //------------
        // 获取请求头:user-agent: 浏览器的版本信息
        String agent = req.getHeader("user-agent");
        System.out.println(agent);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取post 请求体:请求参数
        //1. 获取字符输入流
        BufferedReader br = req.getReader();
        //2. 读取数据
        String line = br.readLine();
        System.out.println(line);
    }
}

输出如下(成功输出)

 获取请求体

准备一个html页面,准备表单使用post请求提交




    
    Title





游泳 爬山

post输出如下

常见响应状态码 

JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第9张图片

JavaWeb——Request(请求)和Response(响应)介绍还有常见相应状态码_第10张图片

你可能感兴趣的:(JavaWeb,java,servlet)