JSP

一、简介

  1. 概念:JSP是Sun公司专门为了解决动态生成HTML文档的技术(JavaScript Pages)
  2. 学习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页面一样,必须要在浏览器中进行访问
  3. 如何新建一个JSP文件?
  4. 如何修改JSP文件的默认编码?-->默认编码是 ISO-8859-1 修改为UTF-8
  5. JSP的运行原理?
    • 本质上是一个servlet程序,每个被访问的jsp页面都被服务器翻译成为了.java文件和.class字节码文件,jsp中的html内容都被翻译到了servlet类中的service方法去进行输出

二、JSP文件头部声明介绍(page指令介绍)

<!-- jsp页面的头部声明,表示这是jsp页面 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  1. language               表示当前页面被翻译成什么代码,只能是Java
  2. contentType               设置响应头的contentType
  3. pageEncoding            设置当前的jsp页面编码
  4. inport                          jsp导入的第三方类库
  5. autoFulsh                  设置是否自动刷新out缓存区,默认为true
  6. buffer                         设置out缓冲区的大小,默认是8kb
  7. errorPage                  设置当jsp页面出现错误时,默认跳转的页面
  8. isErrorPage               设置jsp页面是否为错误页面,是的话,可以使用Exception异常对象
  9. session                      设置是否获取session对象
  10. extends                      留给服务器厂商的,即翻译后的servlet程序继承什么类

三、JSP中的三种脚本介绍

  1. 声明脚本 <%!   代码    %>
    • 定义全局变量
    • 定义静态代码块
    • 定义内部类
    • 定义方法
    • 注意:几乎所有在类中可以写的代码,都可以通过声明脚本来实现
  2. 表达式脚本 <%=  代码  %>
    •  用于向页面输出内容,翻译到生成的servlet程序中以out.print显示(out是jsp的一个内置对象,用于生成html源码)
    • 注意:表达式不要以分号结束,否则会报错
    • 可输出浮点型、字符串型、对象型、整形等
  3. 代码脚本 <% java代码%>
    • 可以写任意的java代码,会被翻译到service中,service中所有可以写的Java代码。都可以书写到代码脚本中

四、JSP中的注释

  1.  单行注释 //  多行注释 /*  都可以被翻译到service方法中
  2. jsp注释: <%-- jsp注释--%>在翻译时直接被忽略掉

html注释: <!-- html注释--!>  会被翻译到java代码中显示到html页面上去查看

五、JSP中的九大内置对象

  1. request                              请求对象,获取请求信息
  2. response                           响应对象,获取响应信息
  3. pageContext                      获取当前页面的上下文信息,也可以保存属性信息
  4. session                              会话对象,获取会话信息
  5. exception                           异常对象,只有在jsp页面的page指令中设置isErrorPage="true"的时候才存在
  6. application                         servletContext对象实例,可以获取工程信息
  7. config                                servletConfig对象实例,获取servlet配置信息
  8. out                                     输出流
  9. page                                 获取当前servlet实例,无用,不如this
  10. 注:九大内置对象,我们都可以在代码脚本或表达式脚本中直接使用

六、JSP中的四大域对象

  1. pageContext            可以保存数据在同一个jsp页面中
    • pageContext保存数据的作用域仅在当前页面有效
  2. request                    可以保存数据在同一个request对象中使用,用于在转发时传递数据
    • request保存的数据在请求转发时有效,但直接访问无效
  3. session                    保存在同一个会话中使用
    • session保存的数据在浏览器切换访问同一工程路径下的资源时都有效,但关闭浏览器再打开无效
  4. application               即servletContext
    • application在保存的数据作用于在服务器部署之后生效,一直到服务器关闭为止才失效

七、JSP页面中的out输出流和response.getWritter()输出流

八、JSP中的常用标签

  1. 静态包含  <%@ include File = "" %>  静态包含是指将页面原封不动的输出到包含的位置
  2. 动态包含 <jsp:include page=""><jsp:include>  动态包含是指将包含的jsp页面单独翻译成为servlet文件,且可以传递参数,然后在执行时再调用翻译的servlet程序,并将计算的结果返回,动态包含是在执行时才会加载,所以叫动态包含。
  3. 页面转发 <jsp:forward page = ""><jsp:forward> 转发功能相当于请求转发  req.getRequestDisparature(req,resp)

九、什么是Listenner监听器?

  1. JavaEE三大组件之一:Servlet程序、Filter过滤器、Listner监听器
  2. 是一种规范,即接口
  3. 通过监听事物的变化,然后回调函数,反馈给客户端去做一些处理

十、ServletContextListner监听器

  1. 可以监听ServletContext对象的创建和销毁
  2. 在web工程启动时创建,在web工程停止时销毁
  3. 都会调用ServletContextListner监听器的方法反馈
  4.  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中进行配置

     

posted @ 2020-11-30 15:06  arraySet  阅读(106)  评论(0)    收藏  举报