热门关键字:
jquery > jquery教程 > html5 > JAVA基础之HttpServletRequest请求

JAVA基础之HttpServletRequest请求

554
作者:管理员
发布时间:2020/3/29 10:40:51
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=1131

  JAVA基础之HttpServletRequest请求

  HttpServletRequest请求是获取请求行、请求头和请求体;可以通过这个方法设置防盗链,获取地址。牢记解决乱码的方式。

  怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择转发。详见https://www.cnblogs.com/wenanbang/p/4142415.html

  其实也可以单纯的认为是若是带数据的话就请求转发了,若改地址的话就重定向了。

  一、HttpServletRequest:

  概述和运行流程详见HttpServletResponse!

  二、获取HTTP请求:

  三、获取请求行:

  1、获得客户端的请求方式:

  getMethod()获得String类型;

  2、获得请求的资源:

  getContextPath()获得String类型的web应用的名称(项目名)

  getQueryString()获得get提交url地址后的参数字符串;

  getRequestURI()获取URI地址String类型

  getRequestURL()获取URL地址StringBuffer类型

  request.getRemoteAddr()获得访问的客户端IP地址

  protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

  throwsServletException,IOException{

  //获取请求方式

  Stringmethod=request.getMethod();

  System.out.println("请求方式为:"+method);

  //获取请求URI

  StringURI=request.getRequestURI();

  System.out.println("URI为"+URI);

  //获取请求URL

  StringBufferURL=request.getRequestURL();

  System.out.println("URL为:"+URL);

  //URI为/WEB/LineServlet

  //URL为:http://localhost:8080/WEB/LineServlet

  //获取WEB项目名称

  Stringname=request.getContextPath();

  System.out.println("WEB项目名称为:"+name);

  //获取get请求后url后的字符串

  Stringquery=request.getQueryString();

  System.out.println("get请求的参数为:"+query);

  //获取客户端的ip地址

  Stringip=request.getRemoteAddr();

  System.out.println("ip地址为:"+ip);

  }

  四、获取请求头:

  getHeader(Stringname)

  referer头的作用:获取该访问的来源,做防盗链

  protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

  throwsServletException,IOException{

  //获取refere头

  Stringrefere=request.getHeader("Referer");

  Stringcontent=null;

  if(refere.startsWith("http://localhost:8080")){

  content="真的离婚了!";

  }else{

  content="你是小偷!";

  }

  //解决乱码

  response.setContentType("text/html;charset=utf-8");

  response.getWriter().write(content);

  }

  <html>

  <head>

  <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">

  <title>Inserttitlehere</title>

  </head>

  <body>

  <ahref="/WEB/RefereServlet">宋仲基和宋慧乔分手了</a>

  </body>

  </html>

  五、获得请求体:

  1、解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");

  2、解决get提交的方式的乱码:

  parameter=newString(parameter.getbytes("iso8859-1"),"utf-8");

  protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

  //解决中文乱码问题(post请求)

  //request.setCharacterEncoding("UTF-8");

  //获取请求参数

  //1.单个值的参数

  Stringname=request.getParameter("username");

  //get解决乱码:得先将获取到的信息用原来的编码表进行解码,然后再用后来的编码表进行编码

  name=newString(name.getBytes("ISO-8859-1"),"UTF=8");

  Stringsex=request.getParameter("sex");

  System.out.println(name+"......"+sex);

  //2.获取多个值的

  String[]hobbys=request.getParameterValues("hobby");

  //遍历

  for(Strings:hobbys){

  System.out.println(s);

  }

  //3.获取所有的请求参数MAP

  Map<String,String[]>map=request.getParameterMap();

  //遍历

  Set<String>set=map.keySet();

  for(Stringstr:set){

  String[]value=map.get(str);

  for(Stringv:value){

  System.out.println(str+"..."+v);

  }

  }

  六、request的其他功能:

  1、request也是个域对象,也是具有以下功能:

  setAttribute(Stringname,Objecto)

  getAttribute(Stringname)

  removeAttribute(Stringname)

  2、request完成请求转发:

  获得请求转发器----path是转发的地址

  RequestDispatchergetRequestDispatcher(Stringpath)

  通过转发器对象转发

  七、ServletContext域与Request域的生命周期比较:

  1、ServletContext:

  创建:服务器启动

  销毁:服务器关闭

  域的作用范围:整个web应用

  2、request:

  创建:访问时创建request

  销毁:响应结束request销毁

  域的作用范围:一次请求中





如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:html
友荐云推荐