JSP
JSP
JSP简介
- 什么是JSP
- JSP全名为Java Server Pages
- 中文名叫java服务器页面
- 它是在传统的页面HTML文件(.htm,.html)中插入Java程序段和JSP标记
- 后缀名为(*.jsp).
- 其根本是一个简化的Servlet设计
- 为什么要有JSP
- 直接使用Html文件是没办法输出Java当中的信息
- 使用servlet来去输出一个网页是非常麻烦的
- 于是就出现了jsp,又能写html,又能写Java代码
- JSP的工作原理
-
设置JSP创建时的编码 -
-
本质就是一个servlet
-
jsp在第一次被访问时会被Web容器编译成servlet
-
第一次访问
-
index.jsp
-
index_jsp.java -
-
编译成index_jsp.class运行 -
-
可以在Tomcat的Work目录中可以找到
-
下次访问时,会看到里面得到内容没有发生变化,如果变化了,从新翻译加载
-
整个过程是全局web.xml当中有一个叫
-
-
-
- 翻译过程就是jspServlet做的
- JSP的组成部分
- 静态数据,如HTML
- JSP脚本元素和变量
- JSP指令,如include指令
- JSP标签动作
JSP脚本元素和变量
- 在JSP当中写Java代码
- <%java代码%> - 内部的java代码翻译到service的内部
- <%=java变量或表达式> - 会被翻译成service方法内部out.print()
- <%!java代码> - 会被翻译成servlet的成员的内容
- JSP注释
- HTML注释: - 可见范围jsp源码 翻译后的servlet,页面中看不到
- Java注释://单行注释/多行注释/ - 可见范围 jsp源码 翻译后的servlet,页面中看不到
- Jsp注释:<%--注释内容--%> - 可见范围 jsp源码可见
JSP指令
- 什么是指令
- JSP指令用于设置整个JSP页面的相关信息
- 以及用于JSP页面与其他容器之间的通信
- 有哪些指令
- page指令
- 用于设定整个JSP页面的属性和相关功能
- page指令共有11个属性
- contentType - contentType属性指定JSP页面MIME和编码格式
- pageEncoding - pageEncoding属性来指定JSP文件的编码格式
- import - 在JSP中引入Java的包和类,多个包之间以逗号隔开
- session
- 指定当前页面是否能获得当前用户的session对象
- 缺省是true
- 如果指定为false,那么在该页面中无法使用session,使用的话会提示500错误
- errorPage
- 如果当前页面发生异常
- 网页会重定向到errorPage所指定的页面进行处理
- isErrorPage - 允许指定的JSP页面为错误处理页面
- language属性
- 指定页面中使用的脚本语言种类
- 目前只支持java
- extends
- 用于指定该JSP生成的servlet继承自哪个父类
- 必须指定包名加类名
- buffer
- 用来设置输出流缓冲区
- 缓冲区的作用就是为了提高IO性能
- 也就是说减少write的次数
- autoFlush - 用来指定当输出流缓冲区满了的时候,是否自动刷新缓冲区
- isThreadSafe
- 缺省值为true
- 指定该JSP文件是否支持多线程访问
- info - 用来设置该jsp文件的介绍信息
- isELIgnored - 用来标示是否支持EL表达式
- 多个属性之间使用空格隔开
- include指令
-
作用
- 表示在JSP编译时插入一个包含文件或者代码文件
- include指令所包含的文件名不能是一个变量url,只能是静态文件名 -
-
静态包含 - 将两个jsp页面连接到一起,然后再翻译成servlet
-
- taglib指令
- 作用 - 声明JSP文件使用了标签库
- 有哪些标签库
- JSP标准标签库
- 第三方标签库
- 自定义标签库
- page指令
标签动作
- 页面包含
- 被包含 - 各自翻译自己的页面,然后再引入
- 请求转发 -
隐式对象
-
jsp被翻译成servlet之后,service方法中有9个对象定义并且初始化完毕 -
-
可以直接使用这9个对象
- out
- out的类型:JSPWrite
- out作用就是向客户端输出内容 out.write()
- out缓冲区默认8kb
- 可以设置0 代表关闭out缓冲区内容直接写到response缓冲区
- out写的内容写到out缓冲区当中
- 最后再把out缓冲区当中的内容合并到response缓冲区当中
- request - 得到用户请求信息对象
- response - 服务器向客户端的响应对象
- config - 服务器配置,可以取得初始化参数
- session - 用来保存用户会话得到信息
- application - 所有用户的共享信息,就是servletContext
- page - 指当前页面转换后的Servlet类的实例
- pageContext
- jsp页面的上下文对象
- 是一个域对象
- setAttribute(String name,Object obj)
- getAttribute(String name)
- removeAttribute(String name)
- 可以向指定的其它域中存取数据
- setAttribute(String name,Object obj,int scope) : setAttribute(“name”,"lk",PageContext.REQUEST_SCOPE);
- getAttribute(String name,int scope) : getAttribute("lk",PageContext.REQUEST_SCOPE)
- removeAttrbute(String name,int scope)
- findAttribute(String name)
- 自动到所有的域当中找数据
- 从小到大的范围搜索数据
- 依次从pageContext域,request域,session域,application域中获取属性
- 在某个域中获取后将不在向后寻找
- 可以获取其他8大隐式对象
- pageContext.getRequest()
- pageContext.getSession()
- exception
- 表示JSP页面所发生的异常,在错误页中才起作用
- 只有是错误页的时候,才会有改对象
- out
商品列表
- 需求
- 从数据库当中取出对应商品展示到页面当中
- 步骤
-
件表
-
建立ORM
-
把相关jar拷贝到工程当中
-
建立servlet
- 1.连接数据库
- 2.从数据库中获取数据
- 3.把从数据库当中取出的数据存放到request域当中
- 4.转发到商品列表页面,转发时把request对象传入 -
-
转发到jsp
- 1.从请求域当中把数据获取出来
- 2.从集合当中获取每一个商品,展示到页面当中 -
-
此处为从零玩转java之无web服务器课堂笔记,方便复习.
最后推荐一个博客主 蚂蚁小强:https://www.cnblogs.com/myxq666/
- 全栈视频学习网站:撩课学院(www.itlike.com)