Servlet-2

时间:2021-09-06
本文章向大家介绍Servlet-2,主要包括Servlet-2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.HttpServletRequest类

a.HttpServletRequest类的作用

  • 每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中。
  • 然后传递到service方法(doGet,doPost)中给我们使用。我们可以通过该类对象,获取到所有请求信息。

b.HttpServletRequest类的常用方法

  1. getRequestURI() 获取请求的资源路径
  2. getRequestURL() 获取请求的统一资源定位符(绝对路径)
  3. getRemoteHost() 获取客户端的ip地址
  4. getHeader() 获取请求头
  5. getParameter() 获取请求的参数
  6. getParameterValues() 获取请求的参数(多个值时使用)
  7. getMethod() 获取请求方式(get/post)
  8. SetAttribute(key, value) 设置域数据
  9. getAttribute(key) 获取域数据
  10. getRequestDispatcher() 获取请求转发对象

c.获取请求参数

设置表单:

用户名:
密码:
兴趣爱好: java c++

获取参数:

    String username = req.getParameter("username");
    String password = req.getParameter("password");
    String[] hobby = req.getParameterValues("hobby");

    System.out.println(username);
    System.out.println(password);
    System.out.println(Arrays.asList(hobby));

注:若需通过post获取输入中文字符需设置req.setCharacterEncoding("UTF-8");
且需将其设置在所有getParameter之前

d.请求的转发

  • 请求转发是指服务器收到请求后,从一个资源跳转到另一个资源的操作。

通过servlet1,2模拟请求转发过程
servlet1:

    //获取请求参数
    String username = req.getParameter("username");
    System.out.println("servlet1查看参数: " + username);

    //盖章
    req.setAttribute("key", "done");

    //问路
    //请求转发必须要以/打头,/表示地址为http://ip:port/工程名/,映射到IDEA代码的web目录
    RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");

    //走向柜台2
    requestDispatcher.forward(req,resp);

servlet2:

    //获取请求参数
    String username = req.getParameter("username");
    System.out.println("servlet2查看参数: " + username);

    //查看柜台1是否有盖章
    Object key = req.getAttribute("key");
    System.out.println("柜台1是否有章: " + key);

    //处理自己的业务
    System.out.println("Servlet2处理自己的业务");

请求转发的特点:

  1. 浏览器地址栏没有变化
  2. 他们是依次请求
  3. 他们共享Request域中的数据
  4. 可以转发到WEB_INF目录下(可以通过请求转发访问WEB_INF)
  5. 不可以访问工程以外的资源(都是基于当前工程下的地址访问)
  6. 请求转发必须要以/打头,/表示地址为http://ip:port/工程名/,映射到IDEA代码的web目录

原文地址:https://www.cnblogs.com/jingqz/p/15234470.html