创建好Servlet项目后
编写index.html
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="data">
<table border="0">
<tbody>
<tr>
<td>
Enter Your First Name:
</td>
<td>
<input type="text" name="txtFirstName" required>
</td>
</tr>
<tr>
<td>
Enter Your Family Name:
</td>
<td>
<input type="text" name="txtFamilyName" required>
</td>
</tr>
<tr>
<td>
Enter Your Email:
</td>
<td>
<input type="email" name="Email" required>
</td>
</tr>
<tr>
<td>
Enter Your Phone:
</td>
<td>
<input type="tel" name="Phone" required>
</td>
</tr>
<tr>
<td>
Choose Your Hobbies:
</td>
<td>
<input type="checkbox" name="Hobbies" value="Reading">Reading
<input type="checkbox" name="Hobbies" value="Dancing">Dancing
<br>
<input type="checkbox" name="Hobbies" value="Singing">Singing
<input type="checkbox" name="Hobbies" value="Swimming">Swimming
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center"><input type="submit" value="Register" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
运行结果如下图:
编写servletpkg包下面的MyServlet.java ,如下:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package servletpkg;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author 小罗
*/
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/html");
//Use getParameter()
String firstname = request.getParameter("txtFirstName");
String familyname = request.getParameter("txtFamilyName");
String email = request.getParameter("Email");
String phone = request.getParameter("Phone");
//Use getParameterValues()
String[] hobbies = request.getParameterValues("Hobbies");
out.println("<h3>Use getParameter()</h3>");
out.println("Name : " + firstname + " " + familyname);
out.println("<br>Email : " + email);
out.println("<br>Phone : " + phone);
out.println("<h3>Use getParameterValues()</h3>");
out.println("<br>Hobbies : ");
for(int i = 0; i < hobbies.length; i++){
out.println(" " + hobbies[i]);
}
//Use getParameterNames()
out.println("<h3>Use getParameterNames()</h3>");
Enumeration en = request.getParameterNames();
while(en.hasMoreElements()){
String param = (String)en.nextElement();
out.println("<br>Parameter Name : "+param);
out.println("Parameter Value : "+request.getParameter(param));
}
out.println("<h3>Reading client address</h3>");
out.println("Address:"+request.getRemoteAddr());
out.println("<br>Client:"+request.getRemoteHost());
out.println("<br>User:"+request.getRemoteUser());
out.println("<h3>Reading server address</h3>");
out.println("<br>Address:"+request.getLocalAddr());
out.println("<br>Server:"+request.getLocalName());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
运行完index.html文件后,填写信息,点击注册,跳转如下:
讲解:
(一)、index.html部分
1. form表单中的action属性:将form表单中的数据提交到MyServlet,之后servlet通过requset 域对象来获取对应的参数值。
2. 关于form表单的method属性
method属性的主要作用是设置表单数据的提交方式,method 的属性值有get和 post。
<form action="data" method="get"> / <form action="data" method="post">
method默认值是get,没写也是默认为get。
3. 关于复选框checkbox:实现多选框的效果,而且选中后再次点击可以取消。
(二)、MyServlet.java部分
1. (首先前面form表单的方法是get,所以在doGet里面写)
2. request.getParameter(String paramName),即参数名称
3. String[ ] getParameterValues(String paramName)
4. 因为 hobbies 是一个数组,所以输出的使用需要是使用循环。注意 i < hobbies.length 这里,不能等于,因为 i 是从 0 开始的。
5. hasMoreElements()方法:用于检查是否存在更多元素。
nextElement()方法:如果还有更多的元素,则取出枚举的下一个元素。
因为 en.nextElement() 返回的是对象,所以得进行类型转换,转换为 String 类型,即 (String) en.nextElement 。