控制器的功能“
1. 获取客户端参数(显式数据,隐式数据);
2. 调用模型层的业务方法,获取模型数据(即:业务方法返回的结果—集合、boolean)
3. 根据模型数据进行流程控制(可能传输数据到视图层)
Servlet:以多线程的方式响应用户的并发请求,非线程安全。
CGI: 通用网关接口,以多进程的方式响应用户的并发请求,被servlet所取代。
Servlet生命周期:有web容器来维护
1、加载: web容器加载servlet(被动加载、主动加载)
被动加载:当用户第一次访问servlet的时候,web容器才去加载servlet,这是默认的加载方式。
主动加载:当web应用服务器启动的时候,由web容器主动加载servlet,而不管用户是否发出访问的请求。
<!—在Servlet元素中添加下面的子元素,将servlet默认的被动加载改为主动加载 -->
<load-on-startup>0</load-on-startup>
2、 初始化 :容器在加载servlet后,调用init()方法,完成初始参数的设置。
3、 服务 :doService()
4、 销毁
5、 卸载
注:init()初始化方法和destroy()销毁方法在servlet生命周期中只能调用一次。
Http请求中经常使用的请求方式:
Get请求:1. 在浏览器地址栏中直接输入url;
2. 超链接
3. 发送没有指定method属性的form表单
Post请求:发送method=post的表单
Post在发送表单数据时优于get方式的方面:
1. 安全:在发送参数时,从url当中看不到参数的任何信息
2. 速度快:将参数封装到数据行中,比get请求将参数附加到url之后快速
3. 数据传递大小无限制
相对路径的问题:
如果相对路径在Html元素中定义(form元素中的action属性,超链接中的href属性),相对路径的 / 起始目录为从web应用服务器的监听端口号开始
http://localhost:8080
HttpServletRequest接口:
request.getParameter()
获取用户发出请求时的参数的值(获取的是这个参数的一个值)
如果request.getParameter()方法,获取一个不存在的参数值,返回为null
如果获取的参数没有提供值,返回“”空字符串
Request.setAttribute(key,Object) :在请求域对象request中绑定属性。
Request.getAttribute(key):获取属性。
注:每个请求域都有各自的request对象,在一个请求域中的所有组件都可以通过共享的request对象传值。不同的请求域拥有不用的request,request不能跨请求域传值。请求域结束,request自动失效。
中文传参数乱码问题:
1. 对参数进行单独的字符编码转换
String zh_name = new String(name.getBytes("iso-8859-1"),"utf-8");
2. 对以post方式传递的参数统一进行字符编码转化
request.setCharacterEncoding("utf-8");
3. 采取过滤器来进行字符编码转换(将系统中公共的行为在过滤器中统一实现,避免在具体的控制器编写大量的重复的代码)
posted on 2012-10-26 09:05
宏才 阅读(298)
评论(0) 编辑 收藏 所属分类:
servlet