1.servlet:sun公司制定的用于扩展web服务功能的组件规范,需要部署在servlet容器(如tomcat)中才能运行。浏览器与web服务器的通信过程如下:
1)浏览器依据IP,端口号建立连接
2)浏览器将数据打包,并发送给容器
3)容器解析数据包,并将数据放入创建的request对象,同时创建一个response对象
4)容器创建servlet对象,调用其service方法,将request和response作为参数传入。通过request获取请求参数,将处理结果赋给response
5)容器读取response数据,然后将数据打包发给浏览器
6)浏览器解析数据,生成对应的页面
2.状态码:服务器处理请求的一种状态,有以下几种
1)404:服务器依据请求地址找不到资源。可能原因:地址错误、web.xml中的servlet-name内容不一致、服务未部署
2)500:系统错误。可能原因:代码错误、类未继承HttpServlet、web.xml中的servlet-class指定出错
3)405:找不到处理方法,service方法不规范
4)200:一切OK,浏览器正常显示页面
5)302:重定向状态码
3.浏览器请求方式:网上有很多,推荐一个(http://www.cnblogs.com/logsharing/p/8448446.html)
1)get方式:
---表单默认的提交方式、点击链接、直接输入网址访问,都是get方式
---会将少量的请求参数添加在请求路径后面,只能存少量的数据
---会将请求参数显示在浏览器地址栏,不安全
2)post方式:
---设置表单的method="post",则浏览器会以post方式发送请求
---会将数据以实体的方式发送给服务器,可存放大量数据
---参数不会显示在浏览器地址栏,相对安全
4.中文乱码:
1)servlet如不进行设置out.println输出时会按照“iso-8859-1”来编码,不认识中文(谁让标准是人家制定的),需要设置:
---response.setContentType("text/html;charset=utf-8")
2)表单默认的编码方式是“iso-8859-1”,同样不认识中文。有两种方法:
---第一种方法:
需要在html的<head>中设置:<meta http-equiv="content-type" content="text/html" charset="utf-8"/>。
然后在服务器端还需要设置解码的:request.setCharacterEncoding("utf-8");。不过该方式只对post方式有效。
---第二种方法:
需要在html的<head>中设置:<meta http-equiv="content-type" content="text/html" charset="utf-8"/>。
然后在服务器端指定解码的:String name = new String(name.getBytes("iso-8859-1"),"utf-8");
5.重定向:针对浏览器的请求,服务器返回一个302状态码和一个网址,然后浏览器去访问该网址。(我搞不定,你找他吧)
1)如何设置重定向:
---response.sendRedirect(String url)
2)重定向时浏览器端的地址栏会发生改变
3)重定向的url是任意的
6.servlet的生命周期:容器如何创建servlet对象,如何初始化,如何调用其方法处理请求,及如何销毁的整个过程(从生到死)。一共有下面几个阶段:
1)实例化:容器调用servlet的构造方法,创建servlet对象,只会创建一个对象。默认是容器收到请求后创建,但是可以在<servlet>中设置<load-on-startup>1</load-on-startup>,让容器启动后就创建对象。(数值是大于0的整数,数字越小越创建的早)
2)初始化:容器调用servlet的init方法,只调用一次。如果想在init方法中实现别的功能可以重写init方法
3)就绪:容器调用servlet的service方法处理请求。(开始干活了)
4)销毁:容器在销毁servlet对象之前会调用servlet的destroy方法,只会调用一次。(又不是幻视)