servlet的配置、HTTP与Request介绍

本文深入讲解了Servlet的体系结构,包括如何通过HttpServlet简化方法实现。接着介绍了HTTP协议的基本概念、请求数据格式,详细阐述了请求行、请求头、请求体等组成部分。此外,还探讨了HttpServletRequest对象的使用,如获取请求信息、请求头和表单参数。最后,通过一个简易的登录案例展示了如何处理和验证用户输入。
摘要由CSDN通过智能技术生成

前言:接上一篇文章Tomcat&Servlet的搭建,不会安装tomcat与servlet的小伙伴可以着重的去了解一下

 

目录

一.servlet的体系结构

1.servlet的体系结构

2.MyServlet类

1.doGet

2.doPost

二.HTTP的介绍

1.简介

2.请求数据格式

1.请求行

2.请求头

3.请求空行

4.请求体

三.Request的介绍

1.通过Request方法获取用户请求Request的属性

 2.通过Request方法获取用户请求头的键值对

3. 通过Request方法获取用户提交的表单参数

4.页内跳转

四.简易登陆案例


一.servlet的体系结构

在之前的servlet入门里去写servlet类的时候,我们是直接实现的servle的接口,实现接口的时候就必须要写接口的全部方法,但是一般在使用过程中只需要一两个方法即可,我们可以通过了解servlet的体系结构来选择继承相关的servlet类

1.servlet的体系结构

2.MyServlet类

这是我们一般时候需要写的一个类,继承自HttpServlet类,只需要重写HTTPServlet的几个方法即可

常用方法

1.doGet

该方法处理get请求

2.doPost

该方法处理post请求

二.HTTP的介绍

1.简介

超文本传输协议:规定了客户端与服务器沟通时,发送的数据格式

基于tcp/ip

                请求 :       请求信息        http协议

客户端————————————————————>服务器

                响应:        响应信息        http协议

客户端<————————————————————服务器

无状态协议

就像是人类说话一样,客户端与服务器端也有自己的语言

2.请求数据格式

1.请求行

请求的地址

请求的方法

2.请求头

简单说几个参数

accept:当前浏览器支持接受什么类型的数据

cookie:保留用户的会话信息

referer:从哪里跳转过来的(一般用于防盗链与统计工作) 

user——agent:当前系统版本,浏览器版本

3.请求空行

什么都没有,区分请求行与请求体

4.请求体

一些表单什么的数据

三.Request的介绍

1.通过Request方法获取用户请求Request的属性

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //1. 获取请求方式 :GET
        String method = request.getMethod();
        System.out.println(method);
        //2.(*)获取虚拟目录:/day11
        String contextPath = request.getContextPath();
        System.out.println(contextPath);
        //3. 获取Servlet路径: /demo1
        String servletPath = request.getServletPath();
        System.out.println(servletPath);
        //4. 获取get方式请求参数:name=zhangsan
        String queryString = request.getQueryString();
        System.out.println(queryString);
        //5.(*)获取请求URI:/day11/demo1
        String requestURI = request.getRequestURI();
        StringBuffer requestURL = request.getRequestURL();
        System.out.println(requestURI);
        System.out.println(requestURL);
        //6. 获取协议及版本:HTTP/1.1
        String protocol = request.getProtocol();
        System.out.println(protocol);
        //7. 获取客户机的IP地址:
        String remoteAddr = request.getRemoteAddr();
        System.out.println(remoteAddr);
    }

 2.通过Request方法获取用户请求头的键值对

public class ServletDome01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取所有请求头名称
        Enumeration<String> headerNames = req.getHeaderNames();
        //2.遍历
        while(headerNames.hasMoreElements()){
            String name = headerNames.nextElement();
            //根据名称获取请求头的值
            String value = req.getHeader(name);
            System.out.println(name+":"+value);
        }
    }
}

3. 通过Request方法获取用户提交的表单参数

访问事先准备好的html登录页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="/demo01">
  账号:
  <input type="text" name="username" ><br>
  密码:
  <input type="password" name="password" ><br>
  <input type="submit" value="登录">
</form>
</body>
</html>
public class ServletDome01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.设置流的编码
        req.setCharacterEncoding("utf-8");

        //获取请求参数username
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        System.out.println(username);
        System.out.println(password);
    }
}

 

 成功获取到前端输入的找好密码

4.页内跳转

使用场景:登陆成功或者失败的跳转

req.getRequestDispatcher("/demo03").forward(req,resp);

这个跳转对用户来说是不可见的,就相当于函数内部的跳转一样

public class ServletDome01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.设置流的编码
        req.setCharacterEncoding("utf-8");

        //获取请求参数username
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        System.out.println(username);
        System.out.println(password);
        
        
//        跳转到Demo03,可以使用setAttribute,把键值对放进request域,可以随时提取
        req.setAttribute("msg","参数");
        req.getRequestDispatcher("/demo03").forward(req,resp);
    }
}

 成功跳转到Demo03,并收到参数

四.简易登陆案例

登陆案例 v1.0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豪豪喜欢吃猪肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值