这节课我们讲讲doGet和doPost方法以及request对象接收参数
RequestServlet.java:
package com.teach;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * 自定义一个servlet
 */
public class RequestServlet extends HttpServlet {
    /**
     * 当浏览器发送/get路径的请求是会被分发到这个servlet
     * 如果请求方式是get,则会调用doGet方法
     * 如果请求方式是post,则或调用doPost方法
     * 如果没有重写doGet方法和doPost方法,则会默认调用service方法
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*
            HttpServletRequest 类型的对象我们称为request对象(请求对象)
            request对象有个getParameter(String name)方法可以获取请求传来的参数,返回值是String
            如果request要获取的参数的名字请求里没有就会返回null
         */
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String code = req.getParameter("code");
        System.out.println("username: " + username);
        System.out.println("password: " + password);
        System.out.println("code: " + code);
        //可以看到我们完美的获取到了username和password参数
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        String name = req.getParameter("name");
        System.out.println("id: " + id);
        System.out.println("name: " + name);
        //可以看到post请求会执行这个方法,且参数成功获取
    }
}index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>welcome</title>
  </head>
  <body>
   欢迎页面
   <a href="/test" οnclick="javascript:void(0)">测试一下</a>
   <!--
        写个表单,发送一个get请求,url为/get,参数为username和password
        然后里面写个提交按钮
        表单里发请求好像不能发get请求还带参数。。。,那用a标签
   -->
   <a href="/get?username=1234&password=5678">get</a>
   <!--
        来试试post请求
        post请求使用form表单发送
        form表单里的input标签的value值会作为参数值,name属性会作为参数名
        使用submit按钮提交请求
    -->
   <form action="/post" method="post">
       i    d: <input type="text" name="id" > <br> <br>
       name: <input type="text" name="name" > <br> <br>
       <button type="submit">post</button>
   </form>
  </body>
</html>web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!--web-app 是整个web.xml的根标签,所有的配置都必须写在web-app里-->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--先来说下怎么分配浏览器发来的请求-->
    <!--
        什么是servlet?
          servlet就是一个用于处理浏览器发来的请求的对象
    -->
    <!--配置servlet-->
    <servlet>
        <!--servlet-name 设置配置的servlet的名称-->
        <servlet-name>myServlet</servlet-name>
        <!--servlet-class 设置该servlet对应的类-->
        <servlet-class>com.teach.MyServlet</servlet-class>
    </servlet>
    <!--分配请求由 servlet-mapping 标签完成-->
    <servlet-mapping>
        <!--servlet-name里写要分配给的Servlet-->
        <servlet-name>myServlet</servlet-name>
        <!--url-pattern里写请求路径-->
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
    <!--配置我们刚刚写好的RequestServlet-->
    <servlet>
        <servlet-name>requestServlet</servlet-name>
        <servlet-class>com.teach.RequestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>requestServlet</servlet-name>
        <url-pattern>/get</url-pattern>
    </servlet-mapping>
    <!--同一个servlet可以配置多个请求路径-->
    <servlet-mapping>
        <servlet-name>requestServlet</servlet-name>
        <url-pattern>/post</url-pattern>
    </servlet-mapping>
</web-app>








