request对象详解

版权声明:本文为博主原创,无版权,未经博主允许可以随意转载,无需注明出处,随意修改或保持可作为原创! https://blog.csdn.net/qq_41517071/article/details/83446780

2018年10月27日15:45:51于易动


 申请对象:

类型:HttpServletRequest的:

请求对象:封装了请求头信息,请求体信息等 
 
 .1:特点:类型:HttpServletRequest
 2:生命周期:  
   诞生:客户端浏览器每次发出请求,都会创建一个响应对象。 
   销毁:服务方法执行完毕就会销毁 
 
 .3:请求对象的作用:
  a:作为域对象使用 
  .b:能够获得请求头信息 
  .c:获得其他的信息的API方法 
  .d:获得请求参数:  
  e:请求转发和请求包含: 
 
 
 作用: 

  •      a:作为域对象的使用:( 本质上是地图结构,存值和取值用)  

     domain:map结构:存值和取值,移除掉等。 
     域范围:在当前的请求请求链当中有效(没死亡的话就有效
          .setAttribute(String attName,Object attValue);
          API方法: 
     存属性:的setAttribute(“attName”,“attValue”); 键值对作为一个有对象的属性。 
     取值:getAttribute(“attName”); 取出来的值类型一定是对象类型:

   如果指定的属性名称不存在,将会获得一个null。
     移除:removeAttribute(“attName”); 
     获得所有的属性的名称:  
     getAttributeNames(); 返回的是一个枚举类型 
     

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.yidongxueyuan.domain.User;

/*
 *  演示 request 对象 的域方法: 
 */
public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		User user = new User(10001,"陈哥");
		//存值: 
//		request.setAttribute("username", "晨哥");
//		request.setAttribute("pasword", "321547");
		
		
		//存放在域对象当中: request对象: 
		request.setAttribute("user", user);
		
		//取值: 
		User req_user= (User)request.getAttribute("user");
		System.out.println(req_user);//
		
		// 移除: 
		// 获得所有的属性的名称: 
		
	}

}
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.yidongxueyuan.domain.User;

/*
 * 获得request 域对象当中的属性“
 */
public class BServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		
		//获得域对象当中的属性: 
		User user= (User)request.getAttribute("user");
		System.out.println(user);// null : 原因: 这个request对象是新创建的request对象。, 这个对象没有任何的属性。 
		
		
	}

}
  •    .B:能够获得请求头信息: 

   getHeader( refer) 

           返回的是请求来源的那个页面,refer : 指的是;
 作用:

1  防盗链, 防止直接从浏览器访问。

2  统计 广告的投放效果

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * 获得request对象的请求头信息: 
 */
public class CServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		//获得主机: http://localhost:8080/
		String header = request.getHeader("host");
		System.out.println(header);
		
		//refer 头: 
		String header2 = request.getHeader("Referer");// http://localhost:8080/javaEE-07/html/01-form.html
		System.out.println(header2);
		
		//作用: 
		//  防盗链: 
		if(header2 == null){//这说明是通过浏览器的地址栏直接访问: 二没有进行登录: 
			 response.sendRedirect("/javaEE-07/html/login.html");
		}
		
		//request.getHeader("user-agent")//能够获得浏览器的版本信息和操作系统的信息。 
		
		
		//  统计广告的投放的效果: 
		//  baidu 
		     // 培训机构   
		//  搜狗 
		    //  培训机构: 
		
	}

}

getDateHeader(java.lang.String name)返回的类型是一个long类型。一定是毫秒值: 
          返回指定请求头的值作为long值表示Date对象 
   .getHeader(java.lang.String name) 
          以String形式返回指定请求标题的值。 
   枚举<java.lang.String> getHeaderNames() 
          返回此请求包含的所有标头名称的枚举。 
   枚举<java.lang.String> getHeaders(java.lang.String name)返回一个头对应多个值的情况:类型是枚举类型。 
          返回指定请求标头的所有值,作为String对象的枚举 
   .getIntHeader(java.lang.String name) 
          以int形式返回指定请求标头的值。 


   

  •    C:请求对象获得其他的API方法: 

   
       例子:   http:// localhost:8080 / javaEE-07 / html / 01-form.html?username = lisi&age = 21
   URL:统一资源定位符:  定位
   URI:统一描述符:描述了访问的具体的资源:javaEE-07 / html / 01-form.html
   
   http:协议:  
        https:
        jdbc     :  数据库
        mailTo :邮件协议: 
        ftp       :       文件传输协议: 
        soap   :简单的对象访问协议: 
        
    ip:localhost ===“127.0.0.1回环地址,测试网卡正确:     
常见端口:   

  • 8080:tomcat 
  • 521:oracle  
  • 3306:mysql 
  • redis 

              
   javaEE-07:项目名称:            
  /html/01-form.html:访问的资源: 
  username = lisi&age = 21:

query部分:URL 后面追加的参数

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 *	request对象 获得其他的API方法”
 *  和URL相关的API方法: 
 *   
 */
public class DServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		String url= request.getRequestURL().toString();//
		String uri =request.getRequestURI();//     /javaEE-07/servlet/DServlet
		
		//协议: 
		String http = request.getScheme();
		
		//ip地址: 
		String ip = request.getServerName();
		
		//端口号: 
		int port = request.getServerPort();
		
		//获得项目名称: 
		String contextPath = request.getContextPath();// /javaEE-07
		
		//获得访问的url: 
		String servletPath = request.getServletPath();
		
		//获得query部分:
		String queryString = request.getQueryString();
		
		System.out.println(url);
		System.out.println(http+"://"+ip+":"+port+contextPath+servletPath+"?"+queryString);
		
		System.out.println("==========");
		System.out.println(contextPath+servletPath);
		System.out.println(uri);
		
		
		
	}

}

获取IP  并且对其进行操作

猜你喜欢

转载自blog.csdn.net/qq_41517071/article/details/83446780