这节课我们讲讲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>