JSP
一、简介
- 概念:JSP是Sun公司专门为了解决动态生成HTML文档的技术(JavaScript Pages)
- 学习JSP之前,Servlet程序输出Html页面的方法
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("UTF-8"); PrintWriter writer = resp.getWriter(); //开始向客户端回传Html页面,每个页面标签在writer中进行书写 writer.write(""); writer.write(""); writer.write(""); writer.write(""); writer.write(""); writer.write(""); }
//从上述代码中,我们不难发现通过servlet来回传页面十分的繁琐,不利于维护和调试,因此,Sun公司推出了一种JSP动态页面技术实现页面输出的繁琐操作,注意:通过JSP代码输出页面
//不能像手托html页面一样,必须要在浏览器中进行访问 - 如何新建一个JSP文件?
- 如何修改JSP文件的默认编码?-->默认编码是 ISO-8859-1 修改为UTF-8
- JSP的运行原理?
- 本质上是一个servlet程序,每个被访问的jsp页面都被服务器翻译成为了.java文件和.class字节码文件,jsp中的html内容都被翻译到了servlet类中的service方法去进行输出
![]()
- 本质上是一个servlet程序,每个被访问的jsp页面都被服务器翻译成为了.java文件和.class字节码文件,jsp中的html内容都被翻译到了servlet类中的service方法去进行输出
二、JSP文件头部声明介绍(page指令介绍)
<!-- jsp页面的头部声明,表示这是jsp页面 --> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- language 表示当前页面被翻译成什么代码,只能是Java
- contentType 设置响应头的contentType
- pageEncoding 设置当前的jsp页面编码
- inport jsp导入的第三方类库
- autoFulsh 设置是否自动刷新out缓存区,默认为true
- buffer 设置out缓冲区的大小,默认是8kb
- errorPage 设置当jsp页面出现错误时,默认跳转的页面
- isErrorPage 设置jsp页面是否为错误页面,是的话,可以使用Exception异常对象
- session 设置是否获取session对象
- extends 留给服务器厂商的,即翻译后的servlet程序继承什么类
三、JSP中的三种脚本介绍
- 声明脚本 <%! 代码 %>
- 定义全局变量
- 定义静态代码块
- 定义内部类
- 定义方法
- 注意:几乎所有在类中可以写的代码,都可以通过声明脚本来实现
- 表达式脚本 <%= 代码 %>
- 用于向页面输出内容,翻译到生成的servlet程序中以out.print显示(out是jsp的一个内置对象,用于生成html源码)
- 注意:表达式不要以分号结束,否则会报错
- 可输出浮点型、字符串型、对象型、整形等
- 代码脚本 <% java代码%>
- 可以写任意的java代码,会被翻译到service中,service中所有可以写的Java代码。都可以书写到代码脚本中
四、JSP中的注释
- 单行注释 // 多行注释 /* 都可以被翻译到service方法中
- jsp注释: <%-- jsp注释--%>在翻译时直接被忽略掉
html注释: <!-- html注释--!> 会被翻译到java代码中显示到html页面上去查看
五、JSP中的九大内置对象
- request 请求对象,获取请求信息
- response 响应对象,获取响应信息
- pageContext 获取当前页面的上下文信息,也可以保存属性信息
- session 会话对象,获取会话信息
- exception 异常对象,只有在jsp页面的page指令中设置isErrorPage="true"的时候才存在
- application servletContext对象实例,可以获取工程信息
- config servletConfig对象实例,获取servlet配置信息
- out 输出流
- page 获取当前servlet实例,无用,不如this
- 注:九大内置对象,我们都可以在代码脚本或表达式脚本中直接使用
六、JSP中的四大域对象
- pageContext 可以保存数据在同一个jsp页面中
- pageContext保存数据的作用域仅在当前页面有效
- request 可以保存数据在同一个request对象中使用,用于在转发时传递数据
- request保存的数据在请求转发时有效,但直接访问无效
- session 保存在同一个会话中使用
- session保存的数据在浏览器切换访问同一工程路径下的资源时都有效,但关闭浏览器再打开无效
- application 即servletContext
- application在保存的数据作用于在服务器部署之后生效,一直到服务器关闭为止才失效
七、JSP页面中的out输出流和response.getWritter()输出流
八、JSP中的常用标签
- 静态包含 <%@ include File = "" %> 静态包含是指将页面原封不动的输出到包含的位置
- 动态包含 <jsp:include page=""><jsp:include> 动态包含是指将包含的jsp页面单独翻译成为servlet文件,且可以传递参数,然后在执行时再调用翻译的servlet程序,并将计算的结果返回,动态包含是在执行时才会加载,所以叫动态包含。
- 页面转发 <jsp:forward page = ""><jsp:forward> 转发功能相当于请求转发 req.getRequestDisparature(req,resp)
九、什么是Listenner监听器?
- JavaEE三大组件之一:Servlet程序、Filter过滤器、Listner监听器
- 是一种规范,即接口
- 通过监听事物的变化,然后回调函数,反馈给客户端去做一些处理
十、ServletContextListner监听器
- 可以监听ServletContext对象的创建和销毁
- 在web工程启动时创建,在web工程停止时销毁
- 都会调用ServletContextListner监听器的方法反馈
-
1 public class Listner1 implements ServletContextListener { 2 @Override 3 public void contextInitialized(ServletContextEvent servletContextEvent) { 4 System.out.println("ServletContext被创建了"); 5 } 6 7 @Override 8 public void contextDestroyed(ServletContextEvent servletContextEvent) { 9 System.out.println("ServletContext被销毁了"); 10 } 11 }
12 //还需要在web.xml中进行配置


浙公网安备 33010602011771号