目录
小拓展:
(一)什么是隐式对象?
它指的是在jsp中,可以不声明就直接使用的对象。它只存在于jsp中,因为java类中的变量必须要先声明再使用。其实jsp中的隐式对象也并非是未声明,只是它是在翻译成.java文件时声明的。所以我们在jsp中可以直接使用。
| 隐式对象名称 | 类型 | 备注 |
|---|---|---|
| request | javax.servlet.http.HttpServletRequest | 请求对象 |
| response | javax.servlet.http.HttpServletResponse | 响应对象 |
| session | javax.servlet.http.HttpSession | 会话范围内 |
| application | javax.servlet.ServletContext | 整个应用范围内共享 |
| page | Java.lang.Object | 当前jsp对应的servlet引用实例 |
| config | javax.servlet.ServletConfig | 配置对象 |
| exception | java.lang.Throwable | 异常对象 |
| out | javax.servlet.jsp.JspWriter | 字符输出流,相当于printwriter |
| pageContext | javax.servlet.jsp.PageContext | 很重要,页面范围 |
它是JSP独有的对象,Servlet中没有这个对象。本身也是一个域(作用范围)对象,但是它可以操作其他3个域对象中的属性。而且还可以获取其他8个隐式对象。
它是一个局部变量,所以它的生命周期随着JSP的创建而诞生,随着JSP的结束而消失。每个JSP页面都有一个独立的PageContext。
| 域对象名称 | 范围 | 级别 | 备注 |
|---|---|---|---|
| PageContext | 页面范围 | 最小,只能在当前页面用 | 因范围太小,开发中用的很少 |
| ServletRequest | 请求范围 | 一次请求或当期请求转发用 | 当请求转发之后,再次转发时请求域丢失 |
| HttpSession | 会话范围 | 多次请求数据共享时使用 | 多次请求共享数据,但不同的客户端不能共享 |
| ServletContext | 应用范围 | 最大,整个应用都可以使用 | 尽量少用,如果对数据有修改需要做同步处理 |
早期只有servlet,只能使用response输出标签数据,非常麻烦。
后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护,难于分工协作。
再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性。
M:Model,模型。JavaBean
具体的业务操作,如:查询数据库,封装对象
V:View,视图。JSP
展示数据
C:Controller,控制器。Servlet
获取用户的输入
调用模型
将数据交给视图进行展示

优点:
耦合性低,方便维护,可以利于分工协作
重用性高
缺点:
使得项目架构变得复杂,对开发人员要求高
如果对你有帮助,请帮我点一下赞,我才有动力继续创作,谢谢!