HttpServletRequest对象常用方法

公众号查看文章更清晰

HttpServletRequest对象常用方法

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。

获得客户端浏览器信息

getRequestURL方法返回客户端发出请求时的完整URL
getRequestURI方法返回请求行中的资源名部分
getQueryString 方法返回请求行中的参数部分
getRemoteAddr方法返回发出请求的客户机的IP地址
getRemoteHost方法返回发出请求的客户机的完整主机名
getRemotePort方法返回客户机所使用的网络端口号
getLocalAddr方法返回WEB服务器的IP地址
getLocalName方法返回WEB服务器的主机名

获得客户机请求头

getHeader方法
getHeaders方法
getHeaderNames方法

HttpServletRequest应用

防盗链

什么是防盗链呢?比如:我服务器中有我自己想分享出去的资源,想要拿到我的资源的。必须在我的指定链接访问进去才能获取资源。可能在这个链接页面中我需要发一些广告给访问者,不能让访问者直接通过复制URL就直接进去获取资源,反盗链就是不能被CRTL+C和CRTL+V。

想要我的资源,就必须经过我的首页点进去看。想要实现这样的效果,就要获取Referer这个消息头,判断Referer是不是从我的首页来的。如果不是从我的首页来的,跳转回我的首页。

下面通过复制URL,不是从首页链接访问的

 

跳转回我的首页。

HttpServletRequest对象常用方法_第1张图片

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取网页从哪里来的
        String referer = req.getHeader("Referer");
        //如果不是从我的首页或从地址栏直接访问的
        if(referer==null||referer.contains("localhost:8080/Servlet06/index.jsp")){
        //回到首页去
        resp.sendRedirect("/index.jsp");
        return;
        }
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("获取最新资源分享");
    }

解决中文乱码问题

 String userName = req.getParameter("username");

如果在获取username前面没有加入 req.setCharacterEncoding("UTF-8");,获取而来的值就会出现乱码。


乱码的原因:
Tomcat服务器默认编码是ISO 8859-1,而浏览器使用的是UTF-8编码。浏览器的中文数据提交给服务器,Tomcat以ISO 8859-1编码对中文编码,所以获取到的是乱码,所在在获取值之前,我们可以设置Tomcat服务器的编码格式来避免中文乱码。

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String userName = req.getParameter("username");
        System.out.println("userName: "+userName);
    }
}

 

“扫码关注“

HttpServletRequest对象常用方法_第2张图片

你可能感兴趣的:(Java)