本节来介绍request,request是请求的意思.请求是由客户端发起的,每当客户端发起一个请求访问servlet的时候,tomcat都会创建一个request对象封装这些请求的信息.

  • HttpServletRequest
  • request获取请求行
  • request获取请求头
  • request获取请求体



所以request对象主要装了请求信息来供我们方便的获取请求信息来处理业务。

HttpServletRequest

同样HttpServletRequest继承了ServletRequest来实现更强大的功能。

既然request帮我们封装好了请求信息,那我们就得知道怎么来通过request获取请求信息

首先先了解下Http请求的结构,在谷歌浏览器中,request请求如下所示:

java url请求头 java获取http请求头_请求

request获取请求行

非常重要的一个方法.
getContextPath();//获取项目名称

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取项目名称
        String path = request.getContextPath();
        System.out.println(path);
    }

启动tomcat,运行该servlet

结果如下所示:

java url请求头 java获取http请求头_java url请求头_02


我的项目名称是qjq.

这个方法很重要.用于获取项目名称时就用这个方法。这样就不会在你修改了项目名称后还要一个一个去修改使用了项目名称的地方.

还有以下几个请求行方法.

String getMethod();//获取请求方式,get,post等

String getRequestURI();//注意是URI,获取项目相对路径,/qjq/ServletDemo

StringBuffer getRequestURL();//注意是URL,获取请求全路径,http://localhost:8017/qjq/ServletDemo String getQueryString();//获取get请求后的参数字符串

String getRemoteHost();//获取访问的主机名

String getRemoteAddr();//获取访问的ip地址

。。。

request获取请求头

String getHeader(String);//根据key获取value

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //获取Accept的值
        String header = request.getHeader("Accept");
        System.out.println(header);
    }

结果如下所示:

java url请求头 java获取http请求头_请求_03


这个getHeader(String)方法很重要.获取请求头的方法基本就用这一个。

request获取请求体

这部分是我们经常要用的。我们使用request主要就是获取请求体中的信息.
有这么一个form表单。提交方式是post

<form action="http://localhost:8017/qjq/ServletDemo" method="post">
			<input name="name" value="user"/>
			<input name="pwd" value="pwd"/>
			<input type="submit"  value="提交" />
		</form>

其中name属性就是key,value属性也就是在input中的值就是value.

request能够根据name来获取对应的input的值

点击提交后会发起一个post请求。其中请求体就是这样的

java url请求头 java获取http请求头_java url请求头_04


获取name和pwd的常用方法:

1,getParameter(String);//根据key获取value.这里的key就是form表单input里面的name.

2,getParameterMap();//将key和value作为一个键值对封装在一个map中

@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	//getParameter方法
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        System.out.println(name+","+pwd);
        //getParameterMap()方法
         Map<String, String[]> parameterMap = request.getParameterMap();
        for(Map.Entry<String,String[]> entry:parameterMap.entrySet()){
            System.out.println(entry.getKey()+"-"+ Arrays.toString(entry.getValue()));
        }
    }

然后点击提交发起post请求

结果如下,这样就可以获取name和pwd了对应的值了。

getParameter(String);方法

java url请求头 java获取http请求头_System_05


这是getParameterMap()方法

java url请求头 java获取http请求头_JAVA中级_06

如果你连接了数据库.那么这样就能够做一个简单的登入功能了。
基本登入步骤如下
1,浏览器输入name和pwd点击登入发送到后台
2,使用getParameter获取name和pwd对应的值
3,从数据库获取信息进行对比.