1.获取从浏览器提交的数据
上篇博客
- 教程
从浏览器获得数据
反馈数据到浏览器
没什么,注意web/web.xml里记载了映射关系
- Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
Get将表单中数据的按照variable=value的形式,使用“?”追加到URL后面,而各个变量之间使用“&”连接;post的数据传输方式以后再补充
注意:在更改html文件后,在浏览器端加载时可能还是就的html文件,所以需要清除一下浏览器缓存,或许还有别的方法
- 编码问题
在.html文件中:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">:提交的消息使用utf-8进行编码
在doGet()方法里:
byte[] bytes= name.getBytes("ISO-8859-1");
name = new String(bytes,"UTF-8");//或
request.setCharacterEncoding("UTF-8"); //放在放在request.getParameter()之前
response.setContentType("text/html; charset=UTF-8");//返回中文响应
- 生命周期
LoginServlet类的构造函数,在启动tomcat后,第一次请求时调用以此,以后的请求都不会再调用,浏览器端重启,消除历史记录也不会有影响,只有在tomcat关机,销毁类对象后,才会再次调用构造方法。
注意:使用tomcat时,system.out.print()方法的输出不在eclipse的控制台,而是在tomcat的安装目录的logs/catalina.out文件里
- 跳转
- 客户端跳转:改变url地址
- 服务端跳转:不改变url地址
if("hanwei".equals(name) && "123456".equals(password)) {
request.getRequestDispatcher("success.html").forward(request, response);//此处中文编码问题,只需在html文件中指出<meta charset="UTF-8">
}else {
response.sendRedirect("failed.html");
}
try {
Thread.currentThread().sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}//以为.html文件的传输和此程序是异步的,此处加上延时,发现浏览器同样延迟了3秒才显示页面,那后面的内容为显然不显示在浏览器,有待后续深入学习
request.getRequestDispatcher("failed.html").forward(request, response);//这里同样不显示,当验证成功时,仍然显示success
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("<div>han wei</div>");//这里的内容并不在浏览器显示
System.out.println("Log");
2.request常用方法
3.response作用
- 设置响应内容
- 设置响应格式
- 设置响应编码
- 301或302跳转
- 设置浏览器用/不用缓存
4.servlet上传文件