美文网首页Javaweb…网络项目
Servlet:第三篇【request】

Servlet:第三篇【request】

作者: __y | 来源:发表于2018-05-21 21:07 被阅读24次

1.HttpServletRequest基本概念

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

2.常用方法

获得浏览器的信息

  • getRequetsURL:返回客户端发送请求的完整URL
  • getRequestURI:返回请求行中的资源名部分
  • getQueryString:返回请求行中的参数部分
  • getPathInfo:返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
  • getRemoteAddr:返回发出请求的客户机的IP地址
  • getRemoteHost:返回发出请求的客户机的完整主机名
  • getRemotePort:返回客户机所使用的网络端口号
  • getLocalAddr:返回WEB服务器的IP地址。
  • getLocalName:返回WEB服务器的主机名

获得请求头的信息

  • getHeader
  • getHeaders
  • getHeaderName

获得客户端提交的数据

  • getParameter
  • getParameterValues(String name)
  • getParameterNames

3.应用

防盗链

比如:我现在想访问某些资源,就将链接复制给别人,别人黏贴就直接访问到了资源(没看我的首页广告,少了很多推广,血亏)

   //获得消息头
        String referer = req.getHeader("Referer");
        //如果不是从首页来或者从地址栏直接访问
        if(referer == null || !referer.contains("url")) {

            //返回首页
            resp.sendRedirect("/index.jsp");
        }
        //如果是从首页进来的
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("test");
image.png

正常访问


image.png image.png

当我们输入http://localhost:8080/webDemo/HelloServlet 回返回首页

image.png

超链接方式提交数据

常见的get方式提交数据的方式有使用超链接,sendRediret()

 <a href="<%=request.getContextPath()%>/servlet/HelloServlet?username = XXX">测试!</a>
//接受数据
String username = request.getParameter("username");

sendRedirect():

sendRedirect("servlet的地址?username = aaaa & password = xxxxx");

解决中文乱码问题

  • post方式的话直接改request对象的编码
  • get方式需要手工转换编码
  • get方式也可以修改Tomcat服务器的编码
  • 提交数据推荐使用post

4.请求转发

 request.getRequestDispatcher("/servlet2").forward(req,resp);

我们知道ServlContext可以在servlet中实现通信,请求转发也可以。那么我们在开发的时候用那个呢?推荐后者,因为前者会耗费大量资源。后者的话会随着请求的结束而回收资源,后者在开发中使用是非常频繁的。

转发和重定向的区别

image.png

使用哪个?

1.转发:URL地址不变,访问Servlet处理业务逻辑,然后forward到JSP显示结果
2.重定向:方式表单重复提交,直接跳转到另一个JSP,地址栏改变。

相关文章

网友评论

    本文标题:Servlet:第三篇【request】

    本文链接:https://www.haomeiwen.com/subject/epfqjftx.html