[原创]java WEB学习笔记08:HttpServletRequest & ServletRequest

时间:2022-10-15 14:15:20

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.HttpServletRequest 简介

  1)Servlet API 中定义的 ServletRequest 接口类用于封装请求消息

  2)HttpServletRequest 是专用于HTTP协议的ServletRequest 子接口,它用于封装 HTTP 请求消息

  3)在 service() 方法内部调用 HttpServletRequest 对象的各种方法来获取请求消息。每次请求都会调用servece()方法

2.获取请求行的相关信息:ServletRequest,HttpServletRequest

本部分值列举出部分的API,详细参考   ServletRequest ,HttpServletRequest

1)ServletRequest

  获取参数

  ① ServletRequest:封装了请求信息,可以获取到任何的请求信息。这两个接口的实现类都是服务器给予实现的,并在服务器调用service方法时候传入

  ② String getParameter(String name):根据请求参数的名字,返回参数值

  ③ String[] getParameterValues(String name):根据请求参数的名字,返回请求参数对应的字符串数组。在例如“checkbox”比较方便

  ④ Map getParametrMap():返回请求参数的键值对:key->参数名 值:->参数值,String类型数组

  ⑤ Enumeration getParameterNames():返回参数名对应的enumeration对象,类似于ServletConfig(或ServletContext )的getInitPrameterNames()方法

2)HttpServletRequest

  获取请求行的相关信息 

  ① String getMethod():返回HTTP请求消息中的请求方式

  ② String getRequestURI():返回请求行中的资源名部分。

  ③ String getQueryString():返回请求行中的参数部分。

  ④ String getProtocol():返回请求行中的协议名和版本

  ⑤ String getContextPath():返回请求资源所属于的WEB应用程序的路径

  ⑥ String getPathInfo():返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头

  ⑦ String getPathTranslated():返回URL中的额外路径信息所对应的资源的真实路径

  ⑧ String getServletPath():Servlet的名称或Servlet所映射的路径

获取网络连接信息

  ① String getRemoteAddr():返回发出请求的客户机的IP地址,其格式为“192.168.0.3”这种形式的字符文本。 (*)

  ② String getRemoteHost():返回发出请求的客户机的完整主机名,即“pc1.atguigu.com”这种格式

  ③ String getRemotePort():返回发出请求的客户机所使用的网络接口的端口号

  ④ String getLocalAddr():返回WEB服务器上接收当前请求的网络接口的IP地址

  ⑤ String getLocalName():返回WEB服务器上接收当前请求的网络接口的IP地址所对应的主机名。

  ⑥ String getLocalPort():返回WEB服务器上接收当前请求的网络接口的端口号

  ⑦ String getServerName():返回当前请求所指向的主机名

  ⑧ String getServerPort():返回当前请求所连接的服务器端口号

  ⑨ String getScheme():返回请求的协议名,例如http、https或ftp

  ⑩ String getRequestURL():返回客户端发出请求时的完整URL

获取请求头信息

  getHeader方法

  getHeaders方法

  getHeaderNames方法

  getIntHeader方法

  getDateHeader方法

  getContentType方法

  getContentLength方法

  getCharacterEncoding方法

请求域属性

  存储在ServletRequest对象中的对象称之为请求域属性,属于同一个请求的多个处理模块之间可以通过请求域属性来传递对象数据

   setAttribute方法   getAttribute方法   removeAttribute方法   getAttributeNames方法

代码一:login.html

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="LoginServlet" method="get"> user:<input type="text" name="user"/>
password:<input type="password" name="password"/> <br><br> interesting:
<input type="checkbox" name="interesting" value="reading">Reading
<input type="checkbox" name="interesting" value="game">Game
<input type="checkbox" name="interesting" value="party">Party
<input type="checkbox" name="interesting" value="shopping">Shopping
<input type="checkbox" name="interesting" value="sport">Sport
<input type="checkbox" name="interesting" value="tv">Tv
<input type="checkbox" name="interesting" value="run">Run <input type="submit" value="submit"/> </form>
</body>
</html>

代码二:web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0"> <servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.jason.javaweb.LoginServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern> </servlet-mapping>
</web-app>

代码三:LoginServlet.java

 package com.jason.javaweb;

 import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; public class LoginServlet implements Servlet { @Override
public void destroy() { } @Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
} @Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub } @Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
// 获取请求参数 String getParameter(String name):根据请求参数的名字,返回参数值
String user = request.getParameter("user");
String password = request.getParameter("password");
System.out.println(user + " , " + password);// eee , eee // String[] getParameterValues(String name):根据请求参数的名字,返回请求参数对应的字符串数组
String[] interestings = request.getParameterValues("interesting");
for (String interesting : interestings) {
System.out.println("checked-->" + interesting);
// checked-->reading checked-->game
} // Enumeration
// getParameterNames():返回参数名对应的enumeration对象,类似于ServletConfig(或ServletContext)的getInitPrameterNames()方法
Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
String value = request.getParameter(name);
System.out.println("~~~" + name + ":" + value);
// ~~~user:eee ~~~password:eee ~~~interesting:reading
} // Map getParametrMap():返回请求参数的键值对:key->参数名 值:->参数值,String类型数组
Map<String, String[]> map = request.getParameterMap();
for (Map.Entry<String, String[]> entry : map.entrySet()) {
System.out.println("**" + entry.getKey() + " : "
+ Arrays.asList(entry.getValue()));
// **user : [eee]
// **password : [eee]
// **interesting : [reading, game]
} HttpServletRequest httpServletRequest = (HttpServletRequest) request; // 获取请求的URL
String url = httpServletRequest.getRequestURI();
System.out.println("url : " + url);// url : /javaWEB/LoginServlet // 获取请求方法
String method = httpServletRequest.getMethod();
System.out.println("method : " + method);// method : GET // 获取字符串儿=
String queryString = httpServletRequest.getQueryString();
System.out.println(queryString);// user=eee&password=eee&interesting=reading&interesting=game // 获取请求的servlet的映射路径
String servletPath = httpServletRequest.getServletPath();
System.out.println(servletPath);// /LoginServlet } }

[原创]java WEB学习笔记08:HttpServletRequest & ServletRequest的更多相关文章

  1. &lbrack;原创&rsqb;java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  2. &lbrack;原创&rsqb;java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. &lbrack;原创&rsqb;java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. &lbrack;原创&rsqb;java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作&lpar; 查看 &sol; 删除&sol; 添加&rpar; 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. &lbrack;原创&rsqb;java WEB学习笔记47:Servlet 监听器简介, ServletContext&lpar;Application 对象&rpar;&comma; HttpSession &lpar;Session 对象&rpar;&comma; HttpServletRequest &lpar;request 对象&rpar; 监听器,利用listener理解 三个对象的生命周期

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. &lbrack;原创&rsqb;java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  7. &lbrack;原创&rsqb;java WEB学习笔记15:域对象的属性操作&lpar;pageContext&comma;request&comma;session&comma;application&rpar; 及 请求的重定向和转发

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. &lbrack;原创&rsqb;java WEB学习笔记52:国际化 fmt 标签,国际化的总结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. &lbrack;原创&rsqb;java WEB学习笔记51:国际化 概述,API 之 locale类,dataFormat类,numberFormat类&comma; MessageFormat类&comma;ResourceBundle 类

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. 【Caffe 测试】Training LeNet on MNIST with Caffe

    Training LeNet on MNIST with Caffe We will assume that you have Caffe successfully compiled. If not, ...

  2. AVL树的左旋右旋理解 (转)

    AVL树是最先发明的自平衡二叉查找树.在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树.查找.插入和删除在平均和最坏情况下都是O(log n).增加和删除可能需要通过一次或多 ...

  3. C语言超级经典400道题目

    C语言超级经典400道题目 1.C语言程序的基本单位是____ A) 程序行 B) 语句 C) 函数 D) 字符.C.1 2.C语言程序的三种基本结构是____构A.顺序结构,选择结构,循环结 B.递 ...

  4. linux下的gdb调试工具--断点调试

    到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以 ...

  5. js中严格模式

    我们在js中可以使用"use strict";定义了我们在接下来的文档输写中 将按照严格模式进行: function(){ "use strict'; ;// 在这里我们 ...

  6. less&comma;more&comma;view一个文件时中文可以正常显示,可是VI却显示乱码呢?

    https://blog.csdn.net/konglongaa/article/details/80590470 登陆后输入export LC_ALL="zh_CN.GB2312&quot ...

  7. Omi框架学习之旅 - 组件通讯&lpar;data通讯&rpar; 及原理说明

    接着上一篇的data-*通讯,这篇写data通讯. data通讯主要为了复杂的数据通讯. 老规矩:先上demo代码, 然后提出问题, 之后解答问题, 最后源码说明. class Hello exten ...

  8. DBA记录-数据库管理员需要掌握的内容

    1.Linux 2.ORACLE/MySQL/SQLSERVER 3.NOSQL 4.环境部署.用户及权限管理.表空间.表.视图.索引.过程.触发器.分区.函数.查询.性能调优.迁移备份.集群.日志分 ...

  9. 洛谷P3806 点分治1 &amp&semi; POJ1741 Tree &amp&semi; CF161D Distance in Tree

    正解:点分治 解题报告: 传送门1! 传送门2! 传送门3! 点分治板子有点多,,,分开写题解的话就显得很空旷,不写又不太好毕竟初学还是要多写下题解便于理解 于是灵巧发挥压行选手习惯,开始压题解(bu ...

  10. Head内常用标签

    一.标签分类 1.1 自闭和标签 自闭和标签只有开头没有结尾,自动闭合: <meta> 标签 <link> 标签 1.2主动闭合标签 有开头也有结尾,是主动闭合的,称为主动闭合 ...