HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
常用方法如下:
方法 | 说明 |
getRequestURL() | 返回客户端发出请求时的完整URL(路径) |
getRequestURI() | 返回除去host(域名或者ip)部分的路径 |
request.getContextPath() | 返回工程名部分,如果工程映射为/,此处返回则为空 |
request.getServletPath() | 返回除去host和工程名部分的路径 |
getQueryString () | 获取url中的参数 |
getRemoteHost() | 返回发出请求的客户机的完整主机名。 |
getRemoteAddr() | 返回发出请求的客户机的IP地址。 |
getPathInfo() | 返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以"/"开头。 |
getRemotePort() | 返回客户机所使用的网络端口号。 |
getLocalAddr() | 返回WEB服务器的IP地址。 |
getLocalName() | 返回WEB服务器的主机名。 |
getHeader(string name) | 以 String 的形式返回指定请求头的值。如果该请求不包含指定名称的头,则此方法返回 null。如果有多个具有相同名称的头,则此方法返回请求中的第一个头。头名称是不区分大小写的。可以将此方法与任何请求头一起使用 |
getHeaders(String name) | 以 String 对象的 Enumeration 的形式返回指定请求头的所有值 |
getHeaderNames() | 返回此请求包含的所有头名称的枚举。如果该请求没有头,则此方法返回一个空枚举 |
getParameter(String name) | 根据name获取请求参数(常用) |
getParameterValues(String name) | 根据name获取请求参数列表(常用) |
getParameterMap() | 获取所有参数对应的Map,其中key为参数名,value为参数值。 |
request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作
setAttribute(String name,Object o):将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute(“data”, data);
getAttribute(String name):获取request对象的name属性的属性值,例如:request.getAttribute(“data”)
removeAttribute(String name):移除request对象的name属性,例如:request.removeAttribute(“data”)
getAttributeNames:获取request对象的所有属性名,返回的是一个,例如:Enumeration attrNames = request.getAttributeNames();
HttpServletRequest请求转发(服务器端跳转forward)
在Servlet中请求转发是大量要使用的,因为当我们访问一个Servlet的时候通常会执行一些后台的业务逻辑,然后跳转到一个结果页面,那么跳转到结果页面的这个过程就是请求转发,举个例子我们做登录的功能,我们填写用户名密码然后提交到一个负责登录的Servlet,Servlet为我们做用户名和密码的校验,如果我们都正确的话,我们就要跳转到登录的提示页面,如果错误就要跳转到登录失败的页面。
Request的请求转发也可以叫做服务器端的跳转,虽然有页面的跳转但是我们会发现地址栏是不会有变化的。
request.getRequestDispatcher("/success.html").forward(request, response);
HttpServletRequest获取上传的文件
// 获取上传的文件对象
Part part = request.getPart("file");
// 获取上传的文件名字
String fileName = part.getSubmittedFileName();
// 获取输入流
InputStream ins = part.getInputStream();
// 获取上传的contentType
String contentType = part.getContentType();
//获取上传的文件的大小
long size = part.getSize();