Request对象和Response对象
Posted zs-book1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Request对象和Response对象相关的知识,希望对你有一定的参考价值。
再上一节我们写了HttpServelt类,我们发现我们写的实现类中的dopost方法和doget方法中有两个参数request,response,他们是Resquest的对象和Response的对象,都是由服务器创建
Request对象 获取请求消息,
Response对象 响应
在HttpServelt类中,我们发现方法中的参数是HttpServletResquest对象,这里写一下继承顺序,
Request---->ServletRequset---->HttpServletRequest,根据多态的性质可以知道参数request也是Request对象,
这个对象不需要我们创建,由tomcat创建
下面我们来写一下这个Request对象的方法:
首先建立一个html页面,放在web文件夹下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/zs/login" method="post"> <input type="text" name="username" placeholder="请输入用户名"><br/> <input type="password" name="password" placeholder="请输入密码"><br/> 吃<input type="checkbox" name="hobby" value="chi"> 喝<input type="checkbox" name="hobby" value="he"> 玩<input type="checkbox" name="hobby" value="wan"> 乐<input type="checkbox" name="hobby" value="le"><br/> <input type="submit"> </form> </body> </html>
然后我们运行tomcat,用浏览器输入地址查看是否可以查看该文件,下面我们编写Servelt文件:
package com.zs.servelt; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; import java.util.Enumeration; import java.util.Map; import java.util.Set; @WebServlet("/login") /*这里需要注意的是,我们之前在html文件的action属性中写的是"/zs/login",里面前面是配置的服务器地址的url,后面代表虚拟路径, 在这里只需要输入虚拟路径*/ public class ServletDemo1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*获取请求行的数据*/ // 1.获取请求的方式 String method = request.getMethod(); System.out.println(method);// POST // 2.获取目录的路径 String conpath = request.getContextPath(); System.out.println(conpath);// /zs // 3.获取servelt的路径 String servletPath = request.getServletPath(); System.out.println(servletPath);// /login // 4.获取请求参数 String queryString = request.getQueryString(); System.out.println(queryString);// null // 5.获取请求的url String requestURI = request.getRequestURI(); System.out.println(requestURI);// /zs/login StringBuffer requestURL = request.getRequestURL(); System.out.println(requestURL);// http://localhost/zs/login // 6.获得协议版本 String protocol = request.getProtocol(); System.out.println(protocol);// HTTP/1.1 // 7.获得客户的id String remoteAddr = request.getRemoteAddr(); System.out.println(remoteAddr);// 0:0:0:0:0:0:0:1 /*获取请求参数的通用方式(post,get都可以使用的方法),下面的方法必须记住,会常用*/ // 1.根据参数的名称获得参数,括号内参数为标签的name值 String username = request.getParameter("username"); System.out.println(username);// 结果: 165 // 2.根据参数的名成获得参数的数据,例如html标签中checkbox有多个值,就会把这些值放进一个数组中, String[] hobbies = request.getParameterValues("hobby"); System.out.println(Arrays.toString(hobbies)); //结果: [chi, he, wan] // 3.获得所有的请求参数的名称 Enumeration<String> parameterNames = request.getParameterNames(); while (parameterNames.hasMoreElements()) { String s = parameterNames.nextElement(); System.out.println(s); //结果: //username //password //hobby } // 4.获得所有参数的集合 Map<String, String[]> parameterMap = request.getParameterMap(); // 遍历集合 Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet(); for (Map.Entry<String, String[]> entry : entries) { // 这里可以看出参数的值为数组格式 String[] value = entry.getValue(); System.out.println(entry.getKey()+Arrays.toString(value)); //username[165] //password[131] //hobby[chi, he, wan] } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*get方式和post提交方式,只是一个显示提交,一个隐式提交示,内部方法是一样的,所以我们这里调用post方法就好了*/ this.doPost(request,response); } }
以上是关于Request对象和Response对象的主要内容,如果未能解决你的问题,请参考以下文章