Web项目中的JSP
1.为什么会出现JSP
- HTML的优点是可以很好的显示页面,但是缺点是不能处理用户的请求
- Servlet的优点是可以处理用户请求并给用户响应,但是缺点是不能很好的显示页面
- 我们将HTML与Servlet的优点进行强强联合,就出现了JSP,即HTML+Servlet=JSP
- JSP全称是Java Server Pages,Java服务页面
- JSP页面不能脱离服务器单独运行,即JSP页面必须运行在服务器上
- JSP页面就是能写Java代码的HTML,它还是披着HTML外衣的Servlet
- JSP本质上就是一个Servlet
- 运行一个JSP页面需要经过以下步骤:
-
- 1)JSP引擎将.jsp页面翻译成.java文件
- 2)Java虚拟机将.java文件编译成.class文件
- 3)JSP容器根据Java类创建对象并用该对象处理用户请求并给用户响应
-
- 例如:我们访问index.jsp
-
- 第一次访问时:
-
- JSP引擎将index.jsp页面翻译成index_jsp.jave文件
- Java虚拟机将index_jsp.java文件编译成index_jsp.class文件
- JSP容器创建index_jsp对象,用它来处理用户的请求并给用户响应
- 以后再访问index.jsp(前提是index.jsp页面没有被修改)
-
- 直接使用JSP容器创建的对象来处理用户请求和给用户响应
- JSP模板元素
-
- 就是HTML中的标签,在HTML中怎么使用在JSP中就怎么使用
- JSP脚本片段
-
- 格式:<% .......%>
- JSP脚本片段用来写Java代码
- JSP脚本片段中的Java代码或原封不动的复制到_jspService方法中
- 可以再JSP页面中写多个脚本片段,但是要保证多个脚本片段拼接后的完整性
- JSP表达式
-
- 格式:<%=对象%>
- JSP表达式主要用来将一个对象输出到页面
- JSP页面中的注释
-
- HTML注释:在浏览器解析页面的时候被忽略,生存时机最长
- Java注释:在Java虚拟机将java文件编译成class文件是被忽略,生存时机适中
- JSP注释:在JSP引擎将jsp文件翻译成java文件时就被忽略,生存时机最短
- 格式:<%@ 指令名 属性名1="属性值1" 属性名2="属性值2" %>
-
- page指令
-
- include指令
- 格式:<jsp:标签名></jsp:标签名>
- jsp动作标签由服务器解析,解析时会转换成响应的Java代码
-
- forward标签
-
- include标签
- JSP中的九大隐含对象可以再jsp页面中直接使用
- 什么是隐含对象
-
- 不用声明就可以直接使用的对象
- 这九个隐含对象在jsp页面中之所以可以直接使用是因为它们已经在_jspService方法中已经声明并赋值
- 九大隐含对象都是什么
-
- request
-
- 类型:HttpServeletRequest
- 作用:是一个域对象
- 在Servlet中可以直接使用
- pageContext
-
- 类型:PageContext
- 作用:是一个域对象
- session
-
- 类型:HttpSession
- 作用:是一个域对象
- 在Servlet中通过以下方法获取
-
- application
-
- 类型:ServletContext
- 作用:是一个域对象
- 在Servlet中通过以下方法获取
-
- response
-
- 类型:HttpServletResponse
- 作用:与Servlet中的response一样,封装了响应报文,在JSP中基本不用
- config
-
- 类型:ServletConfig
- 作用:获取JSP的初始化参数
- out
-
- 类型:JspWriter
- 作用:与PrintWriter一样,用来想浏览器响应一个页面或页面的片段
- page
-
- 类型:Object
- 作用:相当于this,值当前对象,没用
- exception
-
- 类型:Throwable
- 作用:获取异常信息,前提是isErrorPage属性设置为true才可以使用该对象
- 域指区域或者说是范围,在JavaWeb中指不同的Web资源(jsp、html、Servlet)
- 在JavaWeb中有四个域对象,分别是pageContext、request、session、application
- 因为在JavaWeb中不同的资源之间需要共享数据,所有就有了域对象
- 在域对象中都维护着一个map,来保存对象
- 域对象都有以下三个方法:
-
- void setAttribute(String key , Object value)
-
- 向域对象中添加属性
- Object getAttribute(String key)
-
- 根据属性名获取域对象中的值
- void removeAttribute(String key)
-
- 根据属性名移除域对象中的值
- JavaWeb中有四个域
-
- page域
-
- 范围:当前页面
- 对应的对象:pageContext
- 类型:PageContext
- 作用:获取page域中的属性值
- request域
-
- 范围:当前请求
- 对应的对象:request
- 类型:HttpServletRequest
- 作用:获取request域中的属性值
- session域
-
- 范围:当前会话
- 对应的对象:session
- 类型:HttpSession
- 作用:获取session域中的属性值
- application域
-
- 范围:当前Web应用
- 对应的对象:application
- 类型:ServletContext
- 作用:获取application域中的属性值
- 域对象使用的原则
-
- 能使用小的就不用大的
- Servlet与JSP的分工
-
- Servlet用来处理请求,JSP负责显示页面
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 手把手搭建一个完整的javaweb项目(适合新手)
- 下一篇: maven项目访问jsp页面404问题