1.Get请求 和Post请求
1).使用GET方式传递参数:
①.在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式GET。
②.如果网页中的<form>表单元素的method属性被设置为了“GET”。浏览器提交这个FORM表单时生成的Http请求消息的请求方式也为GET。
③.使用GET请求方式给WEB服务器传递参数的格式:http://www.zzz.com/counter.jsp?name=1&password=111
④.使用GET方式传送的数据量一般限制在1KB以下。
http://localhost:8080/Servlet/hello.jsp?user=1&password=1
2).使用POST方式传递参数:
①. POST 请求方式主要用于向WEB服务器端程序提交form表单中的数据:form 表单的method 置为POST
②.POST 方式将各个表单字段元素及其数据作为Http消息的实体内容发送给WEB服务器,传送的数据量要比使用GET方式传送的数据量大得多。
POST /Example04/index.jsp HTTP/1.1
Referer: http://localhost:8080/Example04/form.html
Content-Type: application/x-www-form-urlencoded
Host: localhost:8080
Content-Length: 30
username=zhangsan&password=123 --请求体中传送参数
2.如何在Servlet中获取请求信息:
1).servlet的service()方法用于应答请求:因为每次请求都会调用service()方法
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {}
ServletRequest:封装了请求信息, 可以从中获取到任何的请求信息。
ServletResponse:封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现
这两个接口的实现类都是服务器给予实现的,并在服务器调用service方法时传入。
2). ServletRequest:
①.获取请求参数
-->String getParameter(String name): 根据请求参数的名字,返回参数值。若请求的参数有多个值(如CheckBox),该方法只能获取到第一个提交的值。
代码:
String user = request.getParameter("user");
String password = request.getParameter("password");
System.out.println(" user:"+user+" password:"+password);
//执行结果:
// user:111 password:111
-->String[] getParameterValues(String name) 根据请求参数的名字,返回请求参数对应的字符串数组
代码:
String[] interestings = request.getParameterValues("interesting");
for(String interest:interestings){
System.out.println("--"+interest);
//--foot
//--game
//--shopping
-->Enumeration getParameterNames() 返回参数名对应的Enumeration 对象,
类似于ServletConfig(或ServletContext)的getInitParameterNames()方法
代码:
Enumeration<String> names=request.getParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
String value=request.getParameter(name);
System.out.println("--"+name+":"+value);
}
//--user:111
//--password:111
//--interesting:foot
-->Map getParameterMap() 返回请求参数的键值对: key:参数名 value:参数值. 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:[111]
//**password:[111]
//**interesting:[foot, game, shopping]
②.获取请求的URI
Map<String, String[]> map = request.getParameterMap();
for(Map.Entry<String,String[]> entry:map.entrySet()){
System.out.println("**"+entry.getKey()+":"+Arrays.asList(entry.getValue()));
}
//**user:[111]
//**password:[111]
//**interesting:[foot, game, shopping]
③.获取请求方式:
String requestMethod=httpServletRequest.getMethod();
System.out.println(requestMethod); // GET
④.获取GET的查询字符串:
String query= httpServletRequest.getQueryString();
System.out.println(query);
// user=111&password=111&interesting=foot&interesting=game&interesting=shopping
⑤.和attribute相关的几个方法
3).HttpServletRequest:是ServletRequest的子接口。
针对于HTTP请求所定义。里边包含了大量获取HTTP 请求相关的方法。
4).ServletResponse:封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现
①.!!getWriter():返回PrintWriter对象,调用该对象的print()方法, 将把print()中的参数直接打印到客户的浏览器上
PrintWriter out= response.getWriter();
out.println("helloworld...");
②.设置响应的内容类型:response.setContentType("application/msword");
③.void sendRedirect(String location):请求的重定向。(此方法为HttpServletResponse 中定义)。