Request&Response

基本使用

Request:获取Web请求数据

Response:设置响应数据

新建maven web项目,pom.xml文件里导入坐标:

<dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!--                    端口号-->
                    <port>9090</port>
                    <!--                    访问路径-->
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

新建一个类:

package org.example;

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("/demo")
public class demo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //获取request对象 获取请求数据
        String name=req.getParameter("name");//url?name="??"
        //使用response对象,设置响应数据
        resp.setHeader("content-type","text/html;charset=utf-8");
        resp.getWriter().write("<h1>"+name+"访问..</h1>");

    }

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

启动tomcat服务器,访问:

不同参数,页面产生不同效果。

Request获取请求数据

获取请求行

新建样例:

package org.example;

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("/req1")
public class req1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //返回请求方式
        String method= req.getMethod();
        System.out.println("method = " + method);
        //返回虚拟目录(项目访问路径)
        String contextPath=req.getContextPath();
        System.out.println("contextPath = " + contextPath);
        //获取URL(统一资源路径)
        StringBuffer url=req.getRequestURL();
        System.out.println("url.toString() = " + url.toString());
        //获取URI(同一资源标识符)
        String uri= req.getRequestURI();
        System.out.println("uri = " + uri);
        //获取请求参数
        String queryString = req.getQueryString();
        System.out.println("queryString = " + queryString);


    }

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

启动服务器,访问路径添加数据,查看控制台输出:

 获取请求头

在上述代码后添加:

//获取请求头:user-agent:浏览器版本信息
        String agent = req.getHeader("user-agent");
        System.out.println("agent = " + agent);

启动服务器,访问资源,查看控制台输出:

 

获取请求体

编写一个表单:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/req1"  method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit">

</form>

</body>
</html>

在上述代码doPost方法下编写:

 @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        获取字符输入流
        BufferedReader br=req.getReader();
        //获取数据
        String line = br.readLine();
        System.out.println(line);

    }

 开启服务器,访问资源,查看控制台信息:

填写表单:

 提交:

控制台:

Request通用方式获取请求参数

新建类:

package org.example;

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.BufferedReader;
import java.io.IOException;
import java.util.Map;


@WebServlet("/req2")
public class req2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("GET..");
        //获取所有Map集合
        Map<String,String[]> map=req.getParameterMap();
        for(String key:map.keySet()){
            //
            System.out.print(key+" ");
            String vals[] = map.get(key);
            for(String value: vals){
                System.out.print(value+" ");
            }
            System.out.println();

        }


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

启动服务器,访问路径:

查看控制台输出:

GET..
username zs 
password 123 
hobby 2 

 url数据以键值对出现。

编写req.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/req2"  method="get">
    <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>

</body>
</html>

在上述Java代码doGet后面添加:

  //根据key参数
        String[]hobbies=req.getParameterValues("hobby");
        for(String hobby:hobbies){
            System.out.println(hobby);
        }

启动服务器,进入req.html,填写数据:

提交后url:

查看控制台输出:

GET..
username admin 
password abc 
hobby 1 2 
1
2

 将req.html提交方式编程post提交,走doPost逻辑,在上述java代码的doPost方法下编写程序:

 @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("POST..");
        //获取所有Map集合
        Map<String,String[]> map=req.getParameterMap();
        for(String key:map.keySet()){
            //
            System.out.print(key+" ");
            String vals[] = map.get(key);
            for(String value: vals){
                System.out.print(value+" ");
            }
            System.out.println();

        }
        System.out.println("**********");
        //根据key参数获取数组
        String[]hobbies=req.getParameterValues("hobby");
        for(String hobby:hobbies){
            System.out.println(hobby);
        }
        System.out.println("**********");
        //根据key参数获取元素
        String passwords = req.getParameter("password");
        System.out.println("passwords = " + passwords);

    }

然后重新启动tomcat服务器,访问页面:

以表单形式提交,没有url信息在其后:

 

查看控制台输出:

POST..
username admin 
password abc 
hobby 1 2 
**********
1
2
**********
passwords = abc

 发现数据已经被接收到,同时也发现doget和dopost的代码内容几户相同,可以通用,就可以在dopost里的直接调用doget方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值