目录
记录一个获取请求数据的测试
在IDEA里做的,已经配置完了所需要的环境。
一共需要写(或修改)三个文件
DemoInfo.java web.xml Username.html
DemoInfo.java
解释的话就不写了 都写在注释里了
public class DemoInfo extends HttpServlet{
// 这里获取的是表单数据 所以继承了HttpServlet后对 doPost方法进行了重写
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 拿到了数据,得返回给客户端浏览器,所以需要借助IO流
// 从HttpServletResponse中得到一个PrintWriter;
// out 就好比一只笔,下面的println就像画的线条画在客户端浏览器上
PrintWriter out = resp.getWriter();
//这里getParameter中的参数key会默认把Username.html中的 name的值当做key
String username = req.getParameter("username");
out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>");
out.println("<HTML>");
out.println("<HEAD><TITLE> username </TITLE></HEAD>");
out.println("<BODY>");
// 打印username(输入的值)
out.println("username:"+username);
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
web.xml
在这个文件中增加配置
servlet-name 是起名字
servlet-class 写的是这个文件在哪个包
mapping是映射 把 DmoInfo和getinfo.do 对应
这里的话 .do 是习惯写法 表示是运行servlet文件
<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-name>DemoInfo</servlet-name>
<servlet-class>com.example.demo1.DemoInfo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoInfo</servlet-name>
<url-pattern>/getinfo.do</url-pattern>
</servlet-mapping>
</web-app>
Username.html
创建一个能写name 并且 提交 的表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>UsernameTest</title>
</head>
<body>
<form action="getinfo.do" method="post">
用户名:<input type="text" name="username">
<input type="submit" value="Ok">
</form>
</body>
</html>
测试:
输入 xdw 点完 ok 的样子
但是这个getParameter方法 只能获得单个值 key-value 。
获取多个值(比如checkbox)
Username.html
body中增加一个checkbox
这里要注意 checkbox的 那么属性一定是一样的
用户爱好:<input type="checkbox" name="boxname" value="sport" />体育
<input type="checkbox" name="boxname" value="music" />音乐
DemoInfo.java
增加一个 getParametervalues方法用于获取一个key对应多个value的情形
String[] boxnames = req.getParameterValues("boxname");
List<String> strings = Arrays.asList(boxnames);
//
out.println("boxnames:"+strings);
测试:
单值和多值都返回成功了。