同样HttpServletRequest继承了ServletRequest来实现更强大的功能。
既然request帮我们封装好了请求信息,那我们就得知道怎么来通过request获取请求信息
首先先了解下Http请求的结构,在谷歌浏览器中,request请求如下所示:
非常重要的一个方法.
getContextPath();//获取项目名称
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取项目名称
String path = request.getContextPath();
System.out.println(path);
}
启动tomcat,运行该servlet
结果如下所示:
我的项目名称是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地址
。。。
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);
}
结果如下所示:
这个getHeader(String)方法很重要.获取请求头的方法基本就用这一个。
这部分是我们经常要用的。我们使用request主要就是获取请求体中的信息.
有这么一个form表单。提交方式是post
其中name属性就是key,value属性也就是在input中的值就是value.
request能够根据name来获取对应的input的值
点击提交后会发起一个post请求。其中请求体就是这样的
获取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 parameterMap = request.getParameterMap();
for(Map.Entry entry:parameterMap.entrySet()){
System.out.println(entry.getKey()+"-"+ Arrays.toString(entry.getValue()));
}
}
然后点击提交发起post请求
结果如下,这样就可以获取name和pwd了对应的值了。
getParameter(String);方法
这是getParameterMap()方法
如果你连接了数据库.那么这样就能够做一个简单的登入功能了。
基本登入步骤如下
1,浏览器输入name和pwd点击登入发送到后台
2,使用getParameter获取name和pwd对应的值
3,从数据库获取信息进行对比.