我是靠谱客的博主 缥缈烧鹅,最近开发中收集的这篇文章主要介绍JavaWeb的HttpServletRequest类(Request对象),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HttpServletRequest的作用:

每次只要有请求进入Tomcate服务器,Tomcate服务器就会创建一个Request对象,并将请求的Http协议的信息封装到Request对象中,,然后在将对象传递给doget()和doPost()方法的参数中,从而我们可以通过HttpServletRequest对象获取所有的请求信息。

HttpServletRequest类常用的方法:

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


    System.out.println(req.getRequestURI());  //获取请求的资源名     /项目名/请求的servlet资源    /01web_war_exploded/hello1
    System.out.println(req.getRequestURL());  //获取全部的请求路径但是不会包含请求参数 http://localhost:8080/01web_war_exploded/hello1 ,
    // 使用真实的IP不使用locahost访问也会产生真实的客户端ip(就是通过网络来访问)
    System.out.println(req.getRemoteHost()); //用来获取客户端的IP地址
    System.out.println(req.getHeader("Host")); //用来获取指定请求头的数据
    System.out.println(req.getParameter("username")); //用来获取指定的请求参数
    System.out.println(req.getParameterValues("username")); //获取指定的请求参数【需要是请求参数在多个值的情况下使用】
    System.out.println(req.getMethod());//获取请求的方式
    //System.out.println(req.getRequestDispatcher());//获取请求转发的对象
Map parameterMap = req.getParameterMap();//一次性获取全部的请求参数 并封装到map中
    req.setAttribute("username",1230); //设置Request域对象中的值
    Object username = req.getAttribute("username");//获取Request域对象中的值
    System.out.println(username);

}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("访问post成功");

请求转发:

请求转发是指,客户端收到请求后,从一个资源跳转到另一个资源的的操作叫做转发。请求转发的过程中浏览器中的地址栏的地址是不会改变的。

 注:请求参数不是必须的。

 代码:

req.getRequestDispatcher("请求路径: 基于当前web工程").forward(req,resp);

  请求转发的特点:

  • 浏览器地址栏的地址没有变化。
  • 不管跳转几个servlet或者是资源 他们都是一次请求。
  • 请求过程中所经过所有的servlet他们共享request域中的数据。
  • 可以转发到WEB-INF目录下的资源。
  • 但是不可以访问工程之外的资源。

request域:

   Request对象是一个域对象,可以在在其作用域之内,共享数据,

   Request域对象的作用范围是一次请求中。所以在一次请求中所有的servlet或者资源可以共享request域中的资源。

示例代码:

servlet1:


public class Servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我是servlet1请求转发开始的地方");
        req.setAttribute("username","小明"); //向request域中存入对象
        req.getRequestDispatcher("/servlet").forward(req,resp); //请求转发
    }
}

servlet2:

public class Servlet2  extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我是servlet2,请求被转发的地方");
        Object username = req.getAttribute("username");//按照kay的从域中取出数据。
    }
}

对于servlet接收post请求出现中文乱码的问题:

产生原因是:客户端和服务器之间使用的编码集不一样。

解决:

 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");//设置请求集是utf-s
        String username = req.getParameter("username");
        System.out.println(username);


    }

最后

以上就是缥缈烧鹅为你收集整理的JavaWeb的HttpServletRequest类(Request对象)的全部内容,希望文章能够帮你解决JavaWeb的HttpServletRequest类(Request对象)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部