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

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

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

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

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

Response——设置响应数据

 

入门案例实现

创建一个如下的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("<h1>"+name+",欢迎您!</h1>");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException , IOException
    {
        System.out.println("Post....");
    }
}

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

通过response.setHeadr设置响应头。

如下通过在url中加键值对的方式获取数据并设置相应数据

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

Resquest相关

Request继承体系

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

 

 Request获取请求数据

请求数据分为3部分

1.请求行

请求行的组成:请求方式/访问路径?参数 请求协议

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请求提交

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="/request-demo/req1" method="post">
    <input type="text" name="username"><br>
    <input type="password" name="password"><br>
    <input type="checkbox" name="hobby" value="1"> 游泳
    <input type="checkbox" name="hobby" value="2"> 爬山 <br>
    <input type="submit">
</form>

post输出如下

常见响应状态码 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值