3.2 request对象

什么是一次http请求呢?以下情形都是:
1.在浏览器输入网址,然后进入
2.点击链接
3.提交表单(登录、查询等)
4.编程方式发起请求。使用代码发起请求,例如网络爬虫。

http请求如果发生错误,比较著名的有两种:
1 404错误,表示不存在,网址有错误
2 500错误,表示处理这个请求的页面出了异常,JSP的话就是你的java代码出了错

一个http请求协议包含了很多信息,重要的有下面的几个:
1. 参数。也就是发送的数据,例如登录的时候,账号和密码都是参数;搜索的时候,关键字就是参数。
2. 发送方式。最常用的就是两种:get和post。这两种的区别在于get方式发送,参数会链接到url后面,这类url复制给别人,看到的内容是一样的;post方式发送则无法看到参数,为了安全考虑,例如登录的时候用户名和密码链接在url后面就暴露了信息。
3. http表头,这里面的信息很多,例如编码方式,数据类型(表单数据、文件还是json等等),发起请求的页面,cookie等

而request对象,包含了一次http请求的所有信息。它是内置在jsp页面的一个对象,任何一个页面都有一个request对象,就好像out对象一样,无需声明。
当发起一个http请求到B页面,例如在A页面点击了B页面的链接、从A页面提交,从浏览器输入B页面的网址,所有的信息,都会打包到B页面的request对象。
request对象用来表示一次来自客户端的HTTP请求,而一个JSP页面需要处理这些HTTP请求。

request最常用的一个方法,就是getParameter,它可以取得http请求(包括get和post请求)里的参数。
假设有一个http请求,这个请求发给b.jsp,参数名是pp,参数值是lion:
http://localhost:8080/b.jsp?pp=lion&pa=fsafdae343
当b.jsp包含下面的代码的时候:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%
String p=request.getParameter( "pp" );
String p1=request.getParameter( "pa" );
System.out.println(p1); //在eclipse控制台打印出pa参数的值
out.println( "<style>" );
out.println( "p{font-weight:bold;color:blue;}" );
out.println( "</style>" );
%>
</head>
<body>
<
out.println( "<p>" );
out.println("URL里面的pp参数的值是:"+p);
out.println( "</p>" );
%>
<a href="?pp=我是测试&pa=aaabbc">pp参数为空,点击这里</a>
</body>
</html>
访问的时候,假如使用下面这个链接: http://localhost:8081/你的项目名/页面名.jsp?pp=lion&pa=fsafdae343
那么页面就会显示“URL里面的pp参数是lion”,同时在eclipse会打印pa的值fsafdae343
这行代码String p=request.getParameter("pp");表示request对象从请求中读取参数名为pp的值(也就是URL中包含的http参数),然后赋值给p。

1.getParameter的参数是一个字符串,代表了URL参数的名。
2.如果getParameter的参数并不在URL里面,那么取的值为null