Request请求,常用方法

本文介绍了Servlet中处理HTTP请求的方法,包括获取请求行中的URL、方法和协议,请求头中的客户端信息,如地区和来源,以及数据体中的参数和文件上传。示例代码展示了如何读取和验证请求参数,以及处理上传的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Request请求

请求的构成部分

1.请求行
url: 统一资源定位符
method: 请求方法
protocol: http协议版本

2.请求头
浏览器帮助开发人员获取客户端的一些信息(非涉密信息)

3.数据体
用于封装用户输入的参数

常用方法

package com.javakc.web1.user;

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

@WebServlet(
        name = "UserServlet",
        urlPatterns = "/user.do",
        loadOnStartup = 0,
        initParams = {
                @WebInitParam(
                        name = "username",
                        value = "administrator"
                ),
                @WebInitParam(
                        name = "password",
                        value = "123456"
                )
        }
)
//request常用方法
public class UserServlet6 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取客户端请求方法
        String method = request.getMethod();
        System.out.println(method);  //POST

        //获取客户端请求URL
        //URL是通过多个部分拼接完成
        StringBuffer buffer = request.getRequestURL();
        System.out.println(buffer);  //http://localhost:8080/web1/user.do

        //获取客户端请求URI
        String uri = request.getRequestURI();
        System.out.println(uri);    ///web1/user.do

        //获取客户端请求协议版本
        String protocol = request.getProtocol();
        System.out.println(protocol);  //HTTP/1.1

        //获取项目名称
        String path = request.getContextPath();
        System.out.println(path);   ///web1

        //获取客户端地区
        String language = request.getHeader("Accept-Language");
        System.out.println("language:" + language);   //zh-CN,zh;q=0.9

        //拦截其他网站的非法请求
        //客户端请求来源
        String referer = request.getHeader("Referer");
        System.out.println(referer);    // http://localhost:8080/web1/

        if (!referer.equals("www.javakc90.com")) {
            response.sendError(404);
        }

        //获取客户端操作系统|设备信息|浏览器版本|
        String userAgent = request.getHeader("User-Agent");
        System.out.println("userAgent:" + userAgent); //Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36 Edg/103.0.1264.71

        //收集单个参数
        String username = request.getParameter("username");
        System.out.println("username:" + username);

        String userage = request.getParameter("userage");
        System.out.println("userage:" + userage);

        String birthday = request.getParameter("birthday");
        System.out.println("birthday:" + birthday);

        //收集一组参数
        String[] hobbys = request.getParameterValues("hobby");
        if (null != hobbys && hobbys.length > 0) {
            for (String hobby : hobbys) {
                System.out.println(hobby);
            }
        }

        //Servlet3.0+启用
        //上传单个文件
        Part part = request.getPart("loadFile");
        System.out.println(part);

        //上传多个文件
        Collection<Part> parts = request.getParts();
        for (Part p : parts) {
            System.out.println(p);
        }
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/web1/user.do" method="post">  <!--UserServlet doPost method!-->
    <table>
        <tr>
            <td>姓名:<input type="text" name="username" value=""></td>
        </tr>
        <tr>
            <td>年龄:<input type="number" name="userage" value=""></td>
        </tr>
        <tr>
            <td>日期:<input type="date" name="birthday" value=""></td>
        </tr>
        <tr>
            <td>爱好:
                <input type="checkbox" name="hobby" value="1">爱好1
                <input type="checkbox" name="hobby" value="2">爱好2
                <input type="checkbox" name="hobby" value="3">爱好3
                <input type="checkbox" name="hobby" value="4">爱好4
            </td>
        </tr>
        <tr>
            <td><input type="submit" value="提交"></td>
        </tr>
    </table>
</form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值