1.创建新项目
先创建一个动态的Web项目
这里因为我之前以及创建过这个项目了,所以名字冲突
改一个名字就好,然后点击finish。
之后,我们创建的项目就会出现在这个项目资源管理器里。
2.配置Servlet
右击项目名称,然后创建Servle
同样,我这里报错是因为已经创建过了,你们只要改一下Class name这个选项即可,然后点击finish
创建好的文件可以在这个地方寻找,这个文件是用来处理前端页面发送的数据的
当然,这个地方我们也可以看到这个文件
FormServlet文件初始内容是这样的,dopost函数里存在一个调用doget函数的方法,这是为了避免我们在发送form表单时,method属性设置混乱,所以初始化状态,form表单发送的操作都是在doget函数中进行,当然由于这是我们自己写的代码,所以我们不会搞混
接下来,将箭头指的地方删掉,我们这次的请求要使用post,所以,操作将在这里进行
3.创建HTML文件
右击WebContent文件,然后选择创建一个新的HTML文件
对文件进行命名并点击finish
之后我们将前端代码写到这个创建的文件里,代码如下,需要注意的是,form表单中的属性
action是我们将数据发送的目标地址,所以我们要选择到正确的文件路径下,注意区分大小写,如果路径不对,则会报错
method我们使用post,这个属性决定我们处理数据使用的函数
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"><!-- 规定 HTML 文档的字符编码:-->
<title>表单小结</title>
</head>
<body>
<h1>申请表</h1>
<form action="/servletdemo/FormServlet" method="Post">
<table>
<tr>
<td>
<p>姓名:<input name="xm" type="text" size="20" maxlength="10" /></p>
<p>密码:<input name="mm" type="text" size="20" maxlength="10" /></p>
<p>照片:<br /><input name="zp" type="image" value="liulan"
src="https://ts2.cn.mm.bing.net/th?id=OIP-C.th6FlIUU3ebI8pl4ccYHZgHaEo&w=316&h=197&c=8&rs=1&qlt=90&o=6&dpr=1.3&pid=3.1&rm=2" />
<p>感兴趣:<br />wb设计:<input name="intersting" type="radio" value="webs" />wb开发:<input name="intersting"
type="radio" value="webk" /></p>
<p>向往城市:<select name="city">
<option value="sh" selected="selected">上海</option>
<option value="bx" selected="selected">北京</option>
<option value="sz" selected="selected">深圳</option>
</select></p>
<p>协议:<br /><textarea name="xieyi" cols="20" rows="20" readonly>嗨嗨嗨</textarea></p>
<p><input name="fuxuan" type="checkbox" />我认真阅读并接受以上协议</p>
<input name="yij" type="submit" value="提交" /> <input name="re" type="reset" />
</td>
<td>
</td>
</tr>
</table>
</form>
</body>
</html>
4.编写FormServlet文件
response.setContentType("text/html;charset = UTF-8");
request.setCharacterEncoding("UTF-8");
这两个函数能让我们返回的页面可以识别中文
getParameter();可以调用request。个体Parameter()方法来获取表单参数的值getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,如复选框。
getParameterNames():如果要得到当前请求中的所有参数的完整列表,则调用该方法
需要注意的是,这几个函数调用的参数,也就是识别前端文件中文本框的属性,用的是name,所以参数需要和name属性一致
response.setContentType("text/html;charset = UTF-8");
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("xm");
String password = request.getParameter("mm");
// String photo = request.getParameter("zp");
String[] hobby = request.getParameterValues("intersting");
String city = request.getParameter("city");
PrintWriter out = response.getWriter();
out.println("<p>用户名:"+name+"</p>");
out.println("<p>密码:"+password+"</p>");
// out.println("<p>照片:"+password+"</p>");
out.println("<p>兴趣:");
for(int i=0 ;i<hobby.length ;i++) {
out.print(hobby[i]+" ");
}
out.print("</p>");
out.println("<p>向往城市:"+city+"</p>");
5.运行结果
点击提交按钮,出发submit命令
返还页面
6.常见错误
当我提交表单时,需要注意,单选框中提交的数据不能为空
比如,当我们提交表单时,单选框没有进行选择,就会出现这种情况
如果出现这种404的情况,可以看到,是因为路径错误,无法访问到控制文件