热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

6.HttpServletRequest对象

1.获取请求行消息的方法当访问Servlet时,会在请求消息的请求行中,包含请求方法、请求资源名,请求路径等信息,为了获取

1.获取请求行消息的方法

当访问Servlet时,会在请求消息的请求行中,包含请求方法、请求资源名,请求路径等信息,为了获取这些信息,在HttpServletRequest接口中,定义了一系列用于获取请求行信息的方法,如下表所示
在这里插入图片描述
在这里插入图片描述

response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();out.println("getRequestURL : " + request.getRequestURL() + "
");out.println("getScheme : " + request.getScheme() + "
");out.println("getServerName : " + request.getServerName() + "
");out.println("getServerPort : " + request.getServerPort() + "
");out.println("getContextPath : " + request.getContextPath() + "
");out.println("getServletPath : " + request.getServletPath() + "
");out.println("getRequestURI : " + request.getRequestURI()+ "
");out.println("getQueryString : " + request.getQueryString()+ "
"); out.println("getRemoteAddr : " + request.getRemoteAddr() + "
");out.println("getRemoteHost : " + request.getRemoteHost() + "
");out.println("getRemotePort : " + request.getRemotePort() + "
");out.println("getLocalAddr : " + request.getLocalAddr() + "
");out.println("getLocalName : " + request.getLocalName() + "
");out.println("getLocalPort : " + request.getLocalPort() + "
");

getRequestURL : http://localhost:8080/s6
运行结果:
getScheme : http

getServerName : localhost

getServerPort : 8080

getContextPath :

getServletPath : /s6

getRequestURI : /s6

getQueryString : null

getRemoteAddr : 0:0:0:0:0:0:0:1

getRemoteHost : 0:0:0:0:0:0:0:1

getRemotePort : 22504

getLocalAddr : 0:0:0:0:0:0:0:1

getLocalName : 0:0:0:0:0:0:0:1

getLocalPort : 8080

注意:getLocalPort 与getServerPort 的区别
如果tomcat服务器端口是80,对外端口是通过防火墙设置后映射出来的,为8050,
用getLocalhost获取到的是80端口,
用getServerPort获取到的是8050端口。

2.获取请求消息头

请求消息头用于向服务器传递附加信息,为了获取这些信息, HttpServletRequest接口定义了一系列用于获取请求消息头的方法
代码:

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();Enumeration headerNames =request.getHeaderNames();// 获取请求消息中所有头字段// 使用循环遍历所有请求头,并通过getHeader()方法获取一个指定名称的头字段while(headerNames.hasMoreElements()) {String headerName = (String)headerNames.nextElement();out.print(headerName + " : " + request.getHeader(headerName)+ "
");}

结果:

host : localhost:8080
user-agent : Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101Firefox/40.0
accept : text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
accept-language : zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
accept-encoding : gzip, deflate
connection : keep-alive

3.防盗链

原理:在下载服务器上,来判断一下上一步提交的网址(来源)是不是我要求的,如果是我要求的,那么可以下载,如果不是,不让下载。
sitePath:http://127.0.0.1
Path:http://127.0.0.1:8080/JavaTeachR/index.jsp
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。

Download.html

download

对链接进行处理

response.setContentType("text/html;charset=utf-8");
PrintWriter out =response.getWriter();
String referer =request.getHeader("referer");// 获取referer头的值
String sitePart = "http://"+ request.getServerName();// 获取访问地址
// 判断referer头是否为空,这个头的首地址是否以sitePart开始的
if (referer != null&& referer.startsWith(sitePart)) {// 处理正在下载的请求out.println("dealingdownload ...");
} else {
// out.print("您没有权限下载,3秒后跳转到主页进行下载");
response.setHeader("Refresh","3;URL=http://localhost:8080/Download.html");
// 非法下载请求跳转到download.html页面RequestDispatcher rd= request.getRequestDispatcher("/download.html");rd.forward(request,response);}

4.获取请求参数

form.html

用户名:
密码:
爱好唱歌跳舞足球

servlet01

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("username");
String password = request.getParameter("password");
out.println("用户名:" + name);
out.println("密 码:" + password);
String[] hobbys=request.getParameterValues("hobby");
out.print("爱好:");
for (int i = 0; i }

结果出现乱码
原因:浏览器在传递请求参数时,请求编码默认采用的是ISO8859-1 ,但在解码时采用的是utf-8编码,所以乱码。
解决:给请求对象设置编码:request.setCharacterEncoding(“utf-8”)


推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • PHPMailer邮件类邮件发送功能的使用教学及注意事项
    本文介绍了使用国外开源码PHPMailer邮件类实现邮件发送功能的简单教学,同时提供了一些注意事项。文章涵盖了字符集设置、发送HTML格式邮件、群发邮件以及避免类的重定义等方面的内容。此外,还提供了一些与PHP相关的资源和服务,如传奇手游游戏源码下载、vscode字体调整、数据恢复、Ubuntu实验环境搭建、北京爬虫市场、进阶PHP和SEO人员需注意的内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
author-avatar
芙蓉花
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有