Javaweb Servlet核心接口学习记录(3)—HttpServletRequest接口

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

| getMethod() | 获取请求使用的HTTP方法,例如,GET、POST、PUT |

| getRequestURI() | 获取请求行中的资源名部分 |

| getProtocol() | 获取使用的协议及版本号。例如,HTTP/1.1 、HTTP/1.0 |

| getQueryString() | 获取请求URL后面的查询字符串,只对GET有效 |

| getServletPath() | 获取Servlet所映射的路径 |

| getContextPath() | 获取请求资源所属于的Web应用的路径 |

演示:

创建RequestLineServlet

package com;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class RequestLineServlet

*/

@WebServlet(“/RequestLineServlet”)

public class RequestLineServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

  • @see HttpServlet#HttpServlet()

*/

public RequestLineServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

  • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse

  •  response)
    

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

// 设置响应编码

response.setContentType(“text/html; charset=UTF-8”);

// 获取请求使用http的方法

String method = request.getMethod();

// 获取请求行的uri部分

String uri = request.getRequestURI();

// 获取使用的协议及版本

String protcol = request.getProtocol();

// 获取uri后面拼接的字符串(参数)

String queryString = request.getQueryString();

// 获取servlet映射路径

String servletPath = request.getServletPath();

// 获取应用的上下文路径

String contextPath = request.getContextPath();

PrintWriter out = response.getWriter();

out.print(“

请求使用http的方法:” + method + “

”);

out.print(“

获取请求行的uri部分:” + uri + “

”);

out.print(“

获取使用的协议及版本:” + protcol + “

”);

out.print(“

获取uri后面拼接的字符串(参数):” + queryString + “

”);

out.print(“

获取servlet映射路径:” + servletPath + “

”);

out.print(“

获取应用的上下文路径:” + contextPath + “

”);

out.flush();

out.close();

}

/**

  • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

  •  response)
    

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

在这里插入图片描述

2.获取请求正文

  • HTTP协议请求正文内容为POST请求参数名称和值所组成的一个字符串;而对于GET请求,其请求参数附属在请求行中,没有请求正文。

  • HTTP协议的POST请求,主要通过Form表单向Web服务器端程序提交数据请求的方式实现。

  • <form>表单元素的enctype属性用于指定浏览器使用哪种编码方式将表单中的数据传送给Web服务器,该属性有两种取值:

application/x-www form-urlencoded

multipart/form-data

  • enctype属性默认的值为“ application/x-www-form-urlencoded ”

  • 使用"application/x-www-form-urlencoded“编码方式的请求正文,HttpServletRequest接口提供的获取方法如下:

| 方法 | 方法描述 |

| — | — |

| String getParameter(String name) | 返回由name指定的用户请求参数的值 |

| Enumeration getParameterNames() | 返回所有客户请求的参数名 |

| String[] getParameterValues(String name) | 返回由name指定的用户请求参数的值 |

| Map getParameterMap() | 返回一个请求参数的Map,Map中的键为参数的名称,值为参数名对应的参数值 |

演示:

创建register.jsp

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

Insert title here

用户名:
密码:<input

type=“password” name=“pwd” />
性别:<input type=“radio”

name=“gender” value=“1” checked=“checked” />男 <input type=“radio”

name=“gender” value=“2” />女
爱好:<input type=“checkbox”

name=“hobby” value=“lq” checked=“checked”>篮球 <input

type=“checkbox” name=“hobby” value=“code”>编程 <input

type=“checkbox” name=“hobby” value=“sing”>唱歌
所在城市: <select

name=“city”>

---请选择---- 北京 广州 上海


运行

在这里插入图片描述

后端,创建RegisterServlet

package com;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class RegisterServlet

*/

@WebServlet(“/RegisterServlet”)

public class RegisterServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

  • @see HttpServlet#HttpServlet()

*/

public RegisterServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

  • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse

  •  response)
    

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding(“UTF-8”);

response.setContentType(“text/html;charset=utf-8”);

String name = request.getParameter(“userName”);

String pwd = request.getParameter(“pwd”);

String gender = request.getParameter(“gender”);

String[] hobbys = request.getParameterValues(“hobby”);

String city = request.getParameter(“city”);

System.out.println(“姓名为:” + name);

System.out.println(“密码为:” + pwd);

if (gender != null && gender.equals(“1”)) {

System.out.println(“姓名为:男”);

} else if (gender != null && gender.equals(“2”)) {

System.out.println(“姓名为:女”);

} else {

System.out.println(“请选择性别”);

}

System.out.print(“兴趣爱好:”);

for (String hobby : hobbys) {

System.out.print(hobby + “\t”);

}

System.out.println();

System.out.println(“所在城市:” + city);

}

/**

  • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

  •  response)
    

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

运行

在这里插入图片描述

查看控制台获取数据

在这里插入图片描述

enctype属性只有在<form>表单向服务器上传文件时才会设置值为“multipart/form-data”,并且此属性值只适用于POST请求方式。

<input name=”文件城名称”type=“file”>

<input type= submit" value=" 提交">

演示:

创建upLoad.jsp

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

Insert title here

文件名称:

上传文件:

运行

在这里插入图片描述

创建UploadServlet

package com;

import java.io.IOException;

import java.io.InputStream;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class UploadServlet

*/

@WebServlet(“/UploadServlet”)

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

  • @see HttpServlet#HttpServlet()

*/

public UploadServlet() {

super();

// TODO Auto-generated constructor stub

总结

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

大厂面试场景

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

知识点总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
super();

// TODO Auto-generated constructor stub

总结

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

[外链图片转存中…(img-aZBxcRiH-1713409318097)]

大厂面试场景

[外链图片转存中…(img-eStQnfGT-1713409318097)]

知识点总结

[外链图片转存中…(img-Ps0FoBEn-1713409318098)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-nkCIwrDW-1713409318098)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值