HttpServletRequest的应用

 

HttpServletRequest的应用

HttpServletRequest是专用于HTTP协议的ServletRequest子接口,它用于封装HTTP请求消息

HTTP请求消息的请求行包括请求方式、资源路径和HTTP协议版本:

       GET /it315/servlet/RequestURI?param1=a&param2=b HTTP/1.1

1、getMethod方法返回HTTP请求消息中的请求方式。//         GET

2、getRequestURI方法返回请求行中的资源名部分。//             /it315/controller/one.jsp

3、getQueryString 方法返回请求行中的参数部分。//             param1=abc

4、getProtocol方法返回请求行中的协议名和版本。//             HTTP/1.1

5、getContextPath方法返回请求资源所属于的WEB应用程序的路径。//        /it315

6、getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。//          /one.jsp

7、getPathTranslated方法返回URL中的额外路径信息所对应的资源的真实路径。

//         C://tomcat-5.5.4/webapps/it315/one.jsp   

8、getServletPath方法返回Servlet的名称或Servlet所映射的路径。//            /controller 

 

获取网络连接信息

1、getRemoteAddr方法返回发出请求的客户机的IP地址,其格式为“192.168.0.3”这种形式的字符文本。 (*)

2、getRemoteHost方法返回发出请求的客户机的完整主机名,即“pc1.it315.org”这种格式。

3、getRemotePort方法返回发出请求的客户机所使用的网络接口的端口号。

4、getLocalAddr方法返回WEB服务器上接收当前请求的网络接口的IP地址。

5、getLocalName方法返回WEB服务器上接收当前请求的网络接口的IP地址所对应的主机名。

6、getLocalPort方法返回WEB服务器上接收当前请求的网络接口的端口号。

7、getServerName方法返回当前请求所指向的主机名。

8、getServerPort方法返回当前请求所连接的服务器端口号。

9、getScheme方法返回请求的协议名,例如http、https或ftp。

10、getRequestURL方法返回客户端发出请求时的完整URL。   

 

获取请求头信息

1、getHeader方法

2、getHeaders方法

3、getHeaderNames方法

4、getIntHeader方法

5、getDateHeader方法

6、getContentType方法

7、getContentLength方法

8、getCharacterEncoding方法

获取所有请求头的编程实例

Enumeration headerNames = request.getHeaderNames();

while(headerNames.hasMoreElements())

{

       String headerName = (String)headerNames.nextElement();

       out.print(headerName + " : " + request.getHeader(headerName) + "<br>");

       /*如果要考虑同一个请求头名可能出现多次,

       那么应该用下面的代码段代替上面一行程序代码*/

//一个消息头字段对应的多次出现的值

Enumeration values=request.getHeaders(headerName);//返回的是枚举类型的对象

While(values.hasMoreElements()){

       values.nextElement();

}

System.out.println(headerName+”:  ”+request.getHeader(headerName));

利用Referer请求头阻止“盗链”

提交请求到提供下载的servlet

String referrer = request.getHeader("referer");

String sitePart = "http://" + request.getServerName();

if(referrer!=null && referrer.startsWith(sitePart))

{

       //处理正当的下载请求,这里只进行示意

       out.println("dealing download ...");

}

else

{

       //非法下载请求跳转到本站的下载说明页

       RequestDispatcher rd = request.getRequestDispatcher("/down.html");

       rd.forward(request,response);

}

利用Referer请求头隐藏JavaScript源码

String referrer = request.getHeader("referer");

String sitePart = "http://" + request.getServerName();

if(referrer!=null && referrer.startsWith(sitePart))

{

       //向客户端输出javascript的document.write(...)语句

       out.println(

              "document.write('假设这是很多重要的Javascript代码的执行结果');");

}

获取请求参数

1、 getParameter方法

2、 getParameterValues方法

3、 getParameterNames方法

4、 getParameterMap方法

获取请求参数的编程实例

       Enumeration paramNames = request.getParameterNames();

while(paramNames.hasMoreElements()){

              String paramName = (String)paramNames.nextElement();

              out.print(paramName + " : " + request.getParameter(paramName) + "<br>");

              /*如果要考虑同一个请求头名可能出现多次,那么应该用下面的代码段代替上面一行程序代码*/

              /*String [] paramValues = request.getParameterValues(paramName);

              //良好的编程习惯,在使用对象和数组之前先判断其是否为null

              if(paramValues != null){

                     for(int i=0;i<paramValues.length;i++){

                            out.print(paramName + " : " + (String)paramValues[i] + "<br>");

                     }

              }*/

}

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值