阅读完需:约 2 分钟
HttpServletRequest
HttpServletRequest
接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据。同时,HttpServletRequest
接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息。
[1]、request.getRequestURL:http://user.cbice.com/cbice/BoardAction.do--------客户请求的url,不包括参数数据。
[2]、request.getRequestURI:/cbice/BoardAction.do--------将URL的域名和尾随的参数截取掉,剩下的那部分就是URI 。
[3]、request.getContextPath:/cbice-----即斜杆加工程名。
[4]、request.getRealPath("/WEB-INF"):D:\jboss-4.0.2_cbiceportal\server\default\.\deploy\user.war\WEB-INF-----即斜杆加工程名。
[5]、request.getMethod:POST--------HTTP请求的的方法名,默认是GET,也可以指定PUT或POST。
[6]、request.getScheme: http ---返回请求的方案名,如http,ftp,https等。
[7]、request.getServletPath: /BoardAction.do---工程之后到参数之前的这部分字符串。
[8]、request.getServerName: user.cbice.com ---服务器主机名。
[9]、request.getServerPort: 80 ---服务器上web应用的访问端口。
[10]、request.getRemoteAddr: 192.168.6.8 ---发送请求的客户端主机的IP
[11]、request.getRemoteHost: 192.168.6.8 ---发送请求的客户端主机名,如果不确定返回的是IP。
[12]、request.getQueryString:operation=doSearch&index=index&boardIndex=boardIndex------返回URL上的参数部分的字符串,必须是GET的请求才有效,不然报错.
[13]、getServletContext:为servletconfig中的方法 获取ServletContext对象
[14]、getRealPath:得到项目下webroot/
这里的URL参数中带有中文,是通过字符转码的:String eQuery=new String(request.getQueryString().getBytes("ISO-8859-1"))
response的响应内容:response.setContentType("text/html;charset=gbk"),才可以正常显示页面中文。
如果需要获得参数则用String status = new String(request.getParameter("username").trim().getBytes(), "GBK");获得其内容。
另外一种方法是:用String eQuery=URLEncoder.encode("中文","GBK");按照参数编码格式进行转码,
在页面中通过request.getParamter("eQuery")得到的参数是中文,但是在url中显示的是16进制或其他进制的编码。
ServerHttpRequest
根据Spring Docs:ServerHttpRequest
接口实现基于HttpRequest
接口。
现在,有一个名为ServletServerHttpRequest
的类实现了ServerHttpRequest
接口,它还有公共方法getServletRequest()
来获取实际的HttpServletRequest
。
if(exchange.getRequest() instanceof ServletServerHttpRequest) {
ServletServerHttpRequest request = (ServletServerHttpRequest) exchange.getRequest();
HttpServletRequest httpServletRequest = request.getServletRequest();
}