1 jsp中写代码的弊端
之前我们在jsp中嵌入了大量的java代码 不符合MVC思想 而且给程序的扩展维护 人员的分工带来很大的困难 前端只懂HTML1daim1而大量的java代码在页面万一前端开发人员小手一抖删掉了一些数据 此时带来的风险太大 而且给程序的可读性差 大量的代码全部混合在页面 造成页面超载 如果出现问题 找错困难 可维护性差
所以要求jsp只做页面显示 不允许写java代码
java代码写在哪里? 写在后台程序中 表现层使用servlet
2 servlet介绍
servlet是一种服务器的应用程序 具有独立于平台和协议的特性 可以生成多态的web页面 它担当客户请求(web浏览器或者其他HTTP客户程序) 和服务器响应(HTTP服务器上的数据库或应用程序)的中间层
JSP是servlet的一种形式 每个JSP页面实际上就是一个servlet实例----JSp页面由servlet引擎换成servlet,servlet负责响应客户请求 也就是说使用JSP实际上还是使用servlet 因为web应用中每个JSP页面都会由servlet容器生成servlet
要求:jsp不允许出现java代码 仅仅做数据显示 servlet主要做业务逻辑的处理
核心:接收客户端的请求 参数的接受 响应
3 servlet的实现方式
Servlet的实现有三种方式
第一种: 实现Servlet接口 实现所有的方法 其中init方法 service方法 destroy方法是其声明周期方法
第二种: 继承GenericServlet
第三种: 继承HttpServlet 重写doGet和doPost方法
4 servlet的生命周期
观察实现servlet接口的方式 观察其声明周期方法执行的过程init,service,destory
当服务器启动的时候 其实并没有调用servlet的生命周期方法 也没有创建爱你servlet对象
当用户第一次访问项目资源的时候 此时会创建servlet对象 并调用init方法进行对象初始化 然后调用service方法提供服务 init只会执行一次 后期用户的每一次访问都会调用service方法进行服务
当服务器正常关闭的时候 会执行servlet的destory方法 进行销毁的操作 销毁的方法也仅仅只执行一次
但是如果在web.xml中配置了Load-on-startup=1的话 在服务器启动的时候就会创建servlet对象并初始化 但是一般不去配置
5servlet核心API介绍
Servlet核心API其实都是围绕两个核心对象展开的 request response
获取用户的请求参数 接受请求 接受参数
获取用户请求参数的多个值
获取请求方式
获取和创建cookie的值
获取session对象
获取转发器对象继续转发
重定向操作