html表单代码
<form action="/FileReadWrite/SaveContactServlet" method="post">
用户名: <input type="text" name="name"/>
密 码: <input type="password" name="password"/>
性 别: <input type="radio" name="gender" value="男">
<input type="radio" name="gender" value="女">
籍 贯:
<select name="jiguan">
<option value="sh">上海</option>
<option value="hn">河南</option>
<option value="bj">北京</option>
</select>
爱 好:
<input type="checkbox" name="hobby" value="lq"/>篮球
<input type="checkbox" name="hobby" value="zq"/>足球
<input type="checkbox" name="hobby" value="ymq"/>羽毛球
个人简介:
<textarea rows="5" cols="10" name="info"></textarea>
<input type="hidden" name="id" value="001"/>
<input type="submit" value="提交"/>
</form>
获取请求行
System.out.println("请求方式 : " + request.getMethod());
System.out.println("获取URI : " + request.getRequestURI());
System.out.println("获取URL : " + request.getRequestURL());
获取请求头
// 获取单个请求头
String headName = reuqest.getHeader("请求头名称");
// 获所有请求头的名称
Enumeration<E> enums = request.getHeaderNames();
// 获取所以请求头代码示例
Enumeration<String> enmus = request.getHeaderNames();
while (enmus.hasMoreElements()) {
String headName = (String) enmus.nextElement();
String headValue = request.getHeader(headName);
System.err.println(headName + " : " + headValue);
}
获取请求的实体内容
// 通过流的方式获取实体内容(请求参数)
InputStream in = request.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = in.read(buf)) != -1){
// 将读到的内容放入String
String string = new String(buf,0,len);
System.out.println(string);
}
公共获取参数的方法
Get和Post方法都可以使用
request.getParameterValue("name"); // 根据参数名获取参数值(注意:只能获取一个值的参数)
request.getParameterValues("name"); // 根据参数名获取参数值(可以获取多个值的参数)
request.getParameterNames()
Enumeration<String> enmus = request.getParameterNames();
while (enmus.hasMoreElements()) {
String name = (String) enmus.nextElement();
// request.getParameter("name")这个方法只能获取一个值的参数,用于多选框表单时会遗漏数据
// 若要获取多个值时可以使用request.getParameterValues("name"); 这个方法会返回一个String[]
if ("hobby".equals(name)) {
System.out.print(name + " :");
String[] hobbyValues = request.getParameterValues(name);
for (String string : hobbyValues) {
System.out.print(string + ",");
}
System.out.println();
} else {
String value = request.getParameter(name);
System.out.println(name + " : " + value);
}
}
编码问题
修改Post方式参数编码:
request.setCharacterEncoding("uft-8");
修改Get方式参数编码:
String name = new String(name.getBytes("iso-8859-1"),"utf-8");
Servlet的生命周期
构造方法:
Servlet对象创建时调用,默认情况下,第一次访问Servlet对象时调用,并只调用1次
init方法(有参数)
Servlet创建完成后调用,且只调用1次
service方法:
Servlet提供服务的方法,每次发出请求时调用
注意: request对象 , response对象
destroy方法:
tomcat服务器停止或web应用重新部署,servlet对象销毁,destroy方法被调用
网友评论