请求对象Request

1.概念

<1>请求:请求:获取资源。在BS架构中,就是客户端浏览器服务器端发出询问。
<2>请求对象:就是在项目当中用于发送请求的对象。
<3>对象创建:需要实现ServletRequest和HttpservletRequest接口,不过在tomcat底层已经帮我们创建好了请求对象。

关系视图如下:
在这里插入图片描述

2.Request获取路径的相关方法

注:浏览器返回【本机地址】ipv6和ipv4的地址是本地host文件控制

//Request获取路径的相关方法
@WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.获取虚拟目录名称getContextPath()String contextPath = req.getContextPath();System.out.println(contextPath);//2.获取Servlet映射路径getServletPath()String servletPath = req.getServletPath();System.out.println(servletPath);//3.获取访问者ip getRemoteAddr()String remoteAddr = req.getRemoteAddr();//http://127.0.0.1:8080    //127.0.0.1//http://localhost:8080[和host文件的配置有关] //0:0:0:0:0:0:0:1System.out.println(remoteAddr);//4.获取请求消息的数据getQueryString()//?username=zhangsan&password=123456String queryString = req.getQueryString();System.out.println(queryString);//5.获取统一资源标识符 getRequestURI()String requestURI = req.getRequestURI();System.out.println(requestURI);//URL更精确,表示范围比URI小//6.获取统一资源定位符 getRequestURL()StringBuffer requestURL = req.getRequestURL();System.out.println(requestURL);//浏览器访问http://127.0.0.1:8080/ServletRequest/ServletDemo1?username=zhangsan&password=123456}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
-----------------------------------------------------------------------
/ServletRequest
/ServletDemo1
127.0.0.1
null
/ServletRequest/ServletDemo1
http://127.0.0.1:8080/ServletRequest/ServletDemo1
3.Request获取请求头内信息的相关方法
//Request获取请求头内信息的相关方法
@WebServlet("/ServletDemo2")
public class ServletDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//请求头名称[可以有多个值]不区分大小写//1.getHeader("请求头名称")根据请求头名称获取值String connection = req.getHeader("Connection");System.out.println(connection);System.out.println("------------------------");//返回类型和前面不同,返回为集合//2.getHeader("请求头名称")根据请求头名称[有多个值]获取多个值String AcceptEncoding = req.getHeader("Accept-Encoding");System.out.println(AcceptEncoding);System.out.println("------------------------");//3.getHeaderNames获取所有的请求头名称Enumeration<String> headerNames = req.getHeaderNames();while (headerNames.hasMoreElements()) {String headerName = headerNames.nextElement();String value = req.getHeader("s");System.out.println(headerName + "..." + value);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
----------------------------------------------------------------------
keep-alive
------------------------
gzip, deflate
------------------------
host...null
user-agent...null
accept...null
accept-language...null
accept-encoding...null
connection...null
cookie...null
upgrade-insecure-requests...null
sec-fetch-dest...null
sec-fetch-mode...null
sec-fetch-site...null
sec-fetch-user...null
4.获取请求参数相关信息的方法

表单属性为【form action="/ServletRequest/ServletDemo3" method=“post” autocomplete=“off”】
在这里插入图片描述

@WebServlet("/ServletDemo3")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.getParameter()根据名称获取数据String value = req.getParameter("name");System.out.println(value);System.out.println("-------------------------");//2.getParameterValues()根据名称获取所有数据String[] hobbies = req.getParameterValues("hobby");System.out.println(Arrays.toString(hobbies));/*for (String hobby : hobbies) {System.out.println(hobby);}*/System.out.println("-------------------------");//3.getParameterNames()获取所有名称Enumeration<String> parameterNames = req.getParameterNames();while (parameterNames.hasMoreElements()){String s = parameterNames.nextElement();System.out.println(s);}System.out.println("-------------------------");//4.getParameterMap()获取所有参数的键值对,存入Map集合Map<String, String[]> parameterMap = req.getParameterMap();Set<String> keys = parameterMap.keySet();for (String key : keys) {String[] values = parameterMap.get(key);System.out.println(key + Arrays.toString(values));}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
----------------------------------------------------------------------
zhangsan
-------------------------
[study, game, book]
-------------------------
name
password
hobby
-------------------------
name[zhangsan]
password[123456]
hobby[study, game, book
5.通过流对象获取数据

【请求方法必须是post方式】
表单属性为【form action="/ServletRequest/ServletDemo7" method=“post” autocomplete=“off”】
在这里插入图片描述

//通过流对象获取数据[请求方法必须是post方式]
//不是自己new的都不需要释放资源
@WebServlet("/ServletDemo7")
public class ServletDemo7 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//字符流/*BufferedReader br = req.getReader();String line = br.readLine();while (line != null) {System.out.println(line);line = br.readLine();}*///字节流[应用场景,上传文件]ServletInputStream sis = req.getInputStream();byte[] bytes = new byte[1024];int len = sis.read(bytes);while (len!=-1){System.out.println(new String(bytes,0,len));len = sis.read(bytes);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
---------------------------------------------------------------------
name=%E6%9D%8E%E5%9B%9B&password=123&hobby=game
6.请求转发

表单属性为【form action="/ServletRequest/ServletDemo9" method=“post” autocomplete=“off”】
在这里插入图片描述

//ServletDemo9
@WebServlet("/ServletDemo9")
public class ServletDemo9 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求字符编码,防止乱码req.setCharacterEncoding("utf-8");//设置共享数据setAttribute(键,值)System.out.println("ServletDemo9设置共享数据");req.setAttribute("name","zhangsan");//getRequestDispatcher()获取请求调度对象[中介]RequestDispatcher rd = req.getRequestDispatcher("/ServletDemo10");//实现转发功能[参数为请求对象和相应对象]rd.forward(req,resp);//所以ServletDemo9中接收的请求参数也会传递到10中}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}//ServletDemo10
@WebServlet("/ServletDemo10")
public class ServletDemo10 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求字符编码,防止乱码req.setCharacterEncoding("utf-8");//获取共享数据System.out.println("ServletDemo10获取共享数据");Object name = req.getAttribute("name");System.out.println(name);System.out.println("获取ServletDemo7的请求参数");System.out.println(req.getParameter("name"));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
----------------------------------------------------------------------
ServletDemo9设置共享数据
ServletDemo10获取共享数据
zhangsan
获取ServletDemo7的请求参数
王五

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle-26-内连接(等值、不等值连接、自然连接)外连接(左外、右外、全连接)using子句

转自&#xff1a; http://blog.csdn.net/wy_0928/article/details/51155498 【总结】连接分类 【0】什么是数据库连接&#xff1f; 1&#xff09;当一次查询涉及到两个表时&#xff1a;就要使用连接查询了&#xff0c;其中join如果不带有其他标识&#xff0c;则默认是内连接 …

百度分布式配置管理平台-Disconf

转载自 【推荐】百度分布式配置管理平台-DisconfDisconf介绍 全称&#xff1a;Distributed Configuration Management Platform&#xff0c;即分布式配置管理平台。 Disconf专注于各种分布式系统配置管理的通用组件和通用平台, 提供统一的配置管理服务。主要目标&#xff1a; 部…

运算符优先级的问题

注意&#xff1a;逻辑非>逻辑与>逻辑或

数据库表连接总结:等值连接, 自然连接,左外连接,右外连接,内连接,全外连接;

【1】等值连接1&#xff09;连接&#xff1a;凡是查询涉及到两个以上的表&#xff0c;就需要将表连接&#xff1b;2&#xff09;就是用where子句做的连接查询&#xff1b;连接查询的列名可以不同&#xff1b;【2】自然连接&#xff1a;select * from a_tbl natual join b_tbl这…

网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解

转载自 网站性能测试指标&#xff08;QPS&#xff0c;TPS&#xff0c;吞吐量&#xff0c;响应时间&#xff09;详解常用的网站性能测试指标有&#xff1a;吞吐量、并发数、响应时间、性能计数器等。 并发数 并发数是指系统同时能处理的请求数量&#xff0c;这个也是反应了系统的…

Request获取参数封装方式

浏览器请求界面 1.获取参数手动封装数据 WebServlet("/ServletDemo4") public class ServletDemo4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//根据参数名获取…

Access restriction: The type 'BASE64Encoder' is not API 的解决方法

转自&#xff1a; https://www.mkyong.com/java/access-restriction-the-type-base64encoder-is-not-accessible-due-to-restriction/ If you insist want to use sun.misc.BASE64Encoder, in Eclipse, right click on the project, properties -> Java compiler –> Err…

Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件

转载自 Mycat - 数据库分库分表中间件&#xff0c;国内最活跃的、性能最好的开源数据库中间件Mycat是什么 Mycat - 数据库分库分表中间件&#xff0c;国内最活跃的、性能最好的开源数据库中间件&#xff01; 一个彻底开源的&#xff0c;面向企业应用开发的大数据库集群支持事务…

响应对象Response

1.概念【响应给浏览器】 响应∶回馈结果。在B/S架构中&#xff0c;就是服务器给客户端浏览器反馈结果。响应对象∶就是在项目中用于发送响应的对象。实现接口&#xff1a;ServletResponse和HttpServletResponse【浏览器访问服务器后&#xff0c;服务器给客户端响应的数据会封装…

调用toString()方法的注意事项

【1】荔枝&#xff1a;Object转为 String&#xff1b; response.setContentType("text/html;charsetUTF-8"); PrintWriter out response.getWriter();request.setCharacterEncoding("UTF-8"); HttpSession session request.getSession(); //设置session超…

Java内存泄漏介绍

转载自 Java内存泄漏介绍内存管理是Java最重要的优势之一&#xff0c;你只需创建对象&#xff0c;Java垃圾收集器会自动负责分配和释放内存。但是&#xff0c;情况并不那么简单&#xff0c;因为在Java应用程序中经常发生内存泄漏。本章会说明什么是内存泄漏&#xff0c;为什么发…

Servlet请求和响应总结

1.解决乱码问题 通过Request的设置编码表方法和Respose设置浏览器展示编码表解决 //设置请求字符编码,防止乱码 req.setCharacterEncoding("utf-8"); //设置浏览器响应编码[html类型的文本,字符集为utf-8] resp.setContentType("text/html;charsetutf-8"…

java虚拟机采用UTF-16编码格式对字符进行编码

转自&#xff1a; https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/ 【UTF-16】 说到 UTF 必须要提到 Unicode&#xff08;Universal Code 统一码&#xff09;&#xff0c;ISO 试图想创建一个全新的超语言字典&#xff0c;世界上所有的语言都可以通过这本字典来…

服务高可用:幂等性设计

转载自 服务高可用&#xff1a;幂等性设计什么是幂等性&#xff1f; 一般在服务调用时&#xff0c;读服务如果调用失败了&#xff0c;会自动按配置次数转移到别的服务上去请求。而写服务就不能重复请求&#xff0c;如果因为超时或者网络故障等原因被调用服务并没有返回成功的响…

getParameterValues用法

<form name"checkform" method"post" action"getvalue.jsp"> 你希望学习哪些程式语言&#xff1a;<br> <input type"checkbox" name"langtype" value"JSP">JSP  <input type&q…

SQL分组取每组前一(或几)条记录(排名)

转自&#xff1a; https://www.cnblogs.com/netserver/p/4518995.html --按某一字段分组取最大(小)值所在行的数据 代码如下:/* 数据如下&#xff1a; name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个…

会话技术Cookie

1.会话技术的概念 会话∶浏览器和服务器之间的多次请求和响应。为了实现一些功能&#xff0c;浏览器和服务器之间可能会产生多次的请求和响应&#xff0c;从浏览器访问服务器开始&#xff0c;到访问服务器结束(关闭浏览器、到了过期时间)。这期问产生的多次请求和响应加在一起…

终于搞懂了回车与换行的区别

转自&#xff1a; http://blog.csdn.net/fanwenbo/article/details/54848429 转载于&#xff1a;http://www.pythontab.com/html/2017/linuxkaiyuan_0115/1116.html 关于换行和回车其实平时我们不太在意&#xff0c;所以关于两者的区别也不太清楚&#xff0c;在平时开发时可能会…

分布式服务防雪崩熔断器,Hystrix理论+实战

转载自 分布式服务防雪崩熔断器&#xff0c;Hystrix理论实战Hystrix是什么&#xff1f; hystrix对应的中文名字是“豪猪”&#xff0c;豪猪周身长满了刺&#xff0c;能保护自己不受天敌的伤害&#xff0c;代表了一种防御机制&#xff0c;这与hystrix本身的功能不谋而合&#xf…

会话技术Session

1.Session的概念 Session是依赖于Cookie的&#xff0c;每次请求时&#xff0c;会将特殊标识带到服务器端&#xff0c;根据这个标识来找到对应的内存空间&#xff0c;从而实现数据共享!是Servlet规范中四大域对象之一的会话域对象。作用:是Servlet规范中四大域对象之一的会话域…