前言:
在http请求中get方法、post方法、put方法、delete方法都可以实现地址栏的参数请求。
地址栏的参数请求一共有两种分别是:
1、http://lcoalhost:8080/web01/hello04?username=zhangsan&age=99&gender=男
2、http://localhost:8080/web01/hello04/zhangsan/99/男
发送的请求使用Postman来测试更方便一些
第一种请求方式的实现
java代码
创建好项目并继承HttpServlet类,重写get,post,put,delete的四个方法,记得把里面的父类方法删掉,在servlet中是使用getParameter方法来接受参数
代码展示
@WebServlet(urlPatterns = "/hello04")
public class MyServlet04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String age = req.getParameter("age");
String gender = req.getParameter("gender");
System.out.println(username);
System.out.println(age);
System.out.println(gender);
System.out.println("get");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String age = req.getParameter("age");
String gender = req.getParameter("gender");
System.out.println(username);
System.out.println(age);
System.out.println(gender);
System.out.println("post");
}
@Override
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String age = req.getParameter("age");
String gender = req.getParameter("gender");
System.out.println(username);
System.out.println(age);
System.out.println(gender);
System.out.println("put");
}
@Override
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String age = req.getParameter("age");
String gender = req.getParameter("gender");
System.out.println(username);
System.out.println(age);
System.out.println(gender);
System.out.println("delete");
}
}
Postman测试
这里介绍以下Postman,点绿光哪里会出现下拉框里面可以切换各种请求方法以达到我们的目的,
后面红色线条就是地址栏参数
http://lcoalhost:8080/web01/hello04?username=zhangsan&age=99&gender=男
效果图
第二种请求方式
java代码
注意:因为这个参数是由/并接上来的,所以我们在配置路径访问的时候要在后面加上*,意思是匹配所有请求,包含服务器的所有资源
@WebServlet(urlPatterns = "/hello04/*")
注意:这里获取的参数和第一种方法不一样请仔细看代码
@WebServlet(urlPatterns = "/hello04/*")
public class MyServlet04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String scheme = req.getScheme();//http获取协议
String serverName = req.getServerName();//localhost获取服务名
int serverPort = req.getServerPort();//8080获取服务端口
String contextPath = req.getContextPath();//web01获取项目上下文路径
String servletPath = req.getServletPath();//hello04获取路径
String pathInfo = req.getPathInfo();//zhangsan/99/男
String[] split = pathInfo.split("/");
System.out.println("scheme"+scheme);
System.out.println("serverName"+serverName);
System.out.println("serverPort"+serverPort);
System.out.println("contextPath"+contextPath);
System.out.println("servletPath"+servletPath);
System.out.println("servletPath"+servletPath);
System.out.println("Arrays.toString(split)"+Arrays.toString(split));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String scheme = req.getScheme();//http获取协议
String serverName = req.getServerName();//localhost获取服务名
int serverPort = req.getServerPort();//8080获取服务端口
String contextPath = req.getContextPath();//web01获取项目上下文路径
String servletPath = req.getServletPath();//hello04获取路径
String pathInfo = req.getPathInfo();//zhangsan/99/男
String[] split = pathInfo.split("/");
System.out.println("scheme"+scheme);
System.out.println("serverName"+serverName);
System.out.println("serverPort"+serverPort);
System.out.println("contextPath"+contextPath);
System.out.println("servletPath"+servletPath);
System.out.println("servletPath"+servletPath);
System.out.println("Arrays.toString(split)"+Arrays.toString(split));
}
@Override
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String scheme = req.getScheme();//http获取协议
String serverName = req.getServerName();//localhost获取服务名
int serverPort = req.getServerPort();//8080获取服务端口
String contextPath = req.getContextPath();//web01获取项目上下文路径
String servletPath = req.getServletPath();//hello04获取路径
String pathInfo = req.getPathInfo();//zhangsan/99/男
String[] split = pathInfo.split("/");
System.out.println("scheme"+scheme);
System.out.println("serverName"+serverName);
System.out.println("serverPort"+serverPort);
System.out.println("contextPath"+contextPath);
System.out.println("servletPath"+servletPath);
System.out.println("servletPath"+servletPath);
System.out.println("Arrays.toString(split)"+Arrays.toString(split));
}
@Override
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String scheme = req.getScheme();//http获取协议
String serverName = req.getServerName();//localhost获取服务名
int serverPort = req.getServerPort();//8080获取服务端口
String contextPath = req.getContextPath();//web01获取项目上下文路径
String servletPath = req.getServletPath();//hello04获取路径
String pathInfo = req.getPathInfo();//zhangsan/99/男
String[] split = pathInfo.split("/");
System.out.println("scheme"+scheme);
System.out.println("serverName"+serverName);
System.out.println("serverPort"+serverPort);
System.out.println("contextPath"+contextPath);
System.out.println("servletPath"+servletPath);
System.out.println("servletPath"+servletPath);
System.out.println("Arrays.toString(split)"+Arrays.toString(split));
}
}
效果图
获取到的参数是数组