Servlet_2

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上传文件

posted @ 2020-03-21 23:27  高斯家的白  阅读(104)  评论(0)    收藏  举报