1:jsp中写代码的弊端
之前咱们在jsp中嵌入了大量的java 代码,不符合MVC思想,而且给程序的扩展维护,人员的分工合作带来很大的困难,前端只懂HTML代码,而大量的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
第三种:继承HttpSevlet, 重写doGet和doPost方法
4:servlet的生命周期 - 记住
Servlet的生命周期就是指从创建,到服务,最终销毁的整个过程
观察实现servlet接口的方式,观察其生命周期方法执行的过程init , service, destroy
当服务器启动的时候,其实并没有调用servlet的生命周期方法,也没有创建servlet对象
当用户第一次访问项目中资源的时候,此时会创建servlet对象,并调用init方法进行对象初始化,然后调用service方法提供服务,init只会执行一次
后期用户的每一次访问都会调用service方法进行服务
当服务器正常关闭的时候,会执行servlet的destroy方法,进行销毁的操作,销毁的方法也仅仅只执行一次
但是如果在web.xml中配置了load- on - startup = 1的话,在服务器启动的时候就会创建servlet对象并初始化,但是一般不去配置
5:servlet核心API介绍
Servlet核心API其实都是围绕两个核心对象展开的,request,response
获取用户的请求参数:接受请求,接受参数
获取用户请求参数的多个值
获取请求方式
获取和创建cookie的值
获取session对象
获取转发器对象进行转发
重定向操作