zoukankan      html  css  js  c++  java
  • Jsp授课

    2.1 JSP基础

    2.1.1 JSP简介

    JSP全称是Java Server Page,是一种动态网页技术标准。它和Servlet一样,也是sun公司推出的一套开发动态web资源的技术,称为JSP/Servlet规范。JSP的本质其实就是一个Servlet。

    JSP部署在服务器上,可以处理客户端发送的请求,并根据请求内容动态生成 Html,Xml或其它格式文档的Web网页,然后在响应给客户端。

     

    2.1.2 JSP和HTML以及Servlet的适用场景

    类别适用场景
    css美化页面
    javaScript 给网页添加一些动态效果
    HTML

    只能开发静态资源,不能包含java代码,无法添加动态数据。

    Servlet 写java代码,可以输出页面内容,但是很不方便,开发效率极低。
    JSP 它包括了HTML的展示技术,同时具备Servlet输出动态资源的能力。但是不适合作为控制器来用。

     

    2.1.3 JSP简单入门

    创建JavaWeb工程

    1.创建一个web项目

    2.在web目录下创建一个index.jsp文件

    3.在文件中写一句内容为:这是我的第一个jsp

    4.部署并启动项目

    5.通过浏览器测试

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>JSP的入门</title>
      </head>
      <body>
          这是第一个JSP页面
      </body>
    </html>
    

    部署项目

    沿用会话管理工程的部署方式即可。

    测试运行

     JSP的执行过程

     JSP文件内容介绍

    Tomcat中的HttpJspBase类声明

    这张图一出场,就表明我们写的JSP它本质就是一个HttpServlet了。

     

    同时,我们在index_jsp.java文件中找到了输出页面的代码,并且在浏览器端查看源文件,看到的内容是一样的。这也就是说明,我们的浏览器上的内容,在通过jsp展示时,本质都是用out.write()输出出来的。

    讲到这里,我们应该清楚的认识到,JSP它是一个特殊的Servlet,主要是用于展示动态数据。它展示的方式是用流把数据输出出来,而我们在使用JSP时,涉及HTML的部分,都与HTML的用法一致,这部分称为jsp中的模板元素,在开发过程中,先写好这些模板元素,因为它们决定了页面的外观。

    2.2 JSP应用

    2.2.1 JSP语法

    4)JSP注释

    在使用JSP时,它有自己的注释,形式为:<%--注释--%>

    需要注意的是:

    在Jsp中可以使用html的注释,但是只能注释html元素,不能注释java程序片段和表达式。同时,被html注释部分会参与翻译,并且会在浏览器上显示

    jsp的注释不仅可以注释java程序片段,也可以注释html元素,并且被jsp注释的部分不会参与翻译成.java文件,也不会在浏览器上显示。

    示例:

    <%--JSP注释--%>
    <!--HTML注释-->
    

      

    1)Java代码块

    在jsp中,可以使用java脚本代码。形式为:<% 此处写java代码 %>

    但是,在实际开发中,极少使用此种形式编写java代码。同时需要注意的是:

    <%
    	在里面写java程序脚本需要注意:这里面的内容由tomcat负责翻译,翻译之后是service方法的成员变量
    %>
    

     

    <!--Java代码块-->
    <% out.println("这是Java代码块");%>
    <hr/>
    

      

    2)JSP表达式

    在jsp中,可以使用特定表达式语法,形式为:<%=表达式%>

    jsp在翻译完后是out.print(表达式内容);

    所以:<%out.print("当前时间);%>和<%="当前时间"%>是一样的。

    在实际开发中,这种表达式语法用的也很少使用。

    示例:

     

    <!--JSP表达式-->
    <%="这是JSP表达式"%><br/>
    就相当于<br/>
    <%out.println("这是没有JSP表达式输出的");%>
    

    3)JSP声明

    在JSP中也可以声明一些变量,方法,静态方法,形式为:<%! 声明的内容 %>

    使用JSP声明需要注意:

    <%! 
    	需要注意的是: 写在里面的内容将会被tomcat翻译成全局的属性或者类方法。
        如果加! 代表的是声明的是成员变量
        如果不加! 代表的是局部变量
        
    %>

    示例:

    <!--JSP声明-->
    <%! String str = "声明语法格式";%>
    <%=str%>
    

    5)语法的示例

    JSP语法完整示例代码

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>JSP语法</title>
    </head>
    <body>
    
    <!--Java代码块-->
    <% out.println("这是Java代码块");%>
    <hr/>
    
    <!--JSP表达式-->
    <%="这是JSP表达式"%><br/>
    就相当于<br/>
    <%out.println("这是没有JSP表达式输出的");%>
    
    <hr/>
    <!--JSP声明-->
    <%! String str = "声明语法格式";%>
    <%=str%>
    
    <hr/>
    
    <%--JSP注释--%>
    <!--HTML注释-->
    
    </body>
    </html>
    

    JSP指令

     page指令

      <%@ page 属性名=属性值 属性名=属性值...%>

    属性名 作用
    contentType           响应正文支持的类型和设置编码格式                                
    language 使用的语言,默认是java
    errorPage   当前页面出现异常后跳转的页面
    isErrorPage 是否抓住异常,如果为true则页面中就可以使用异常对象,默认是false
    import 导包import="java.util.ArrayList"
    session 是否创建HttpSession对象,默认是true
    buffer 设定JspWriter输出jsp内容缓存的大小,默认是8kb
    pageEncoding 翻译jsp时所用的编码格式
    isElgnored 是否忽略EL表达式,默认是false

    include指令

    include指令:可以包含其他页面

    <%@include file="" %>该指令是包含外部页面。

    属性:file,以/开头,就代表当前应用。

    <%--
      1.page指令
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp"%>
    <%@ page import="java.util.ArrayList" %>
    <%--
      2.include指令
    --%>
    <%@ include file="/include.jsp"%>
    
    <html>
    <head>
        <title>jsp指令</title>
    </head>
    <body>
    <%--<%int result=1/0;%>--%>
    <%ArrayList list=new ArrayList();%>
    <%=s%>
    </body>
    </html>
    

     taglib指令:可以引入外部标签库

    语法格式:<%taglib uri="" prefix=""%>

    作用:该指令用于引入外部标签库。html标签和jsp标签不用引入。

    属性:

    uri:外部标签的URI地址。

    prefix:使用标签时的前缀。

    2.2.3 JSP细节

    1)九大隐式对象

    什么是隐式对象呢?它指的是在jsp中,可以不声明就直接使用的对象。它只存在于jsp中,因为java类中的变量必须要先声明再使用。其实jsp中的隐式对象也并非是未声明,只是它是在翻译成.java文件时声明的。所以我们在jsp中可以直接使用。

    九大隐式对象

    隐式对象名称类型备注
    request javax.servlet.http.HttpServletRequest  
    response javax.servlet.http.HttpServletResponse  
    session javax.servlet.http.HttpSession Page指令可以控制开关
    application javax.servlet.ServletContext  
    page Java.lang.Object 当前jsp对应的servlet引用实例
    config javax.servlet.ServletConfig  
    exception java.lang.Throwable page指令有开关
    out javax.servlet.jsp.JspWriter 字符输出流,相当于printwriter
    pageContext javax.servlet.jsp.PageContext 很重要

     

    2)PageContext对象

    简介

    它是JSP独有的对象,Servlet中没有这个对象。本身也是一个域(作用范围)对象,但是它可以操作其他3个域对象中的属性。而且还可以获取其他8个隐式对象。

    生命周期

    它是一个局部变量,所以它的生命周期随着JSP的创建而诞生,随着JSP的结束而消失。每个JSP页面都有一个独立的PageContext。

    常用方法

     在上图中,同学们发现没有页面域操作的方法,其实是定义在了PageContext的父类JspContext中,如下图所示:

    3)四大域对象

    域对象名称范围级别备注
    PageContext 页面范围 最小,只能在当前页面用 因范围太小,开发中用的很少
    ServletRequest 请求范围 一次请求或当期请求转发用 当请求转发之后,再次转发时请求域丢失
    HttpSession 会话范围 多次请求数据共享时使用 多次请求共享数据,但不同的客户端不能共享
    ServletContext 应用范围 最大,整个应用都可以使用 尽量少用,如果对数据有修改需要做同步处理

     

    2.2.4 JSP最佳实战-MVC模型

    M:model ,通常用于封装数据,封装的是数据模型。

    V:view ,通常用于展示数据。动态展示用jsp页面,静态数据展示用html。

    C:controller ,通常用于处理请求和响应。一般指的是Servlet。

    Servlet:擅长处理业务逻辑,不擅长输出显示界面。在web开发中多用于控制程序逻辑(流程)。所以我们称之为:控制器。

    JSP:擅长显示界面,不擅长处理程序逻辑。在web开发中多用于展示动态界面。所以我们称之为:视图。

    例如:

      

      

      

     

  • 相关阅读:
    1_Maven
    9_项目实战MyShop
    8_文件上传与下载
    使用 selenium 模拟登陆微信公众号平台并且抓取数据
    scrapy框架+scrapy_redis组件的分布式爬虫:爬取某小说网站的所有小说!
    scrapy框架 + redis数据库增量式爬虫 :爬取某小说网站里面的所有小说!
    scrapy框架+redis增量式爬虫: 二进制数据下载>下载某短视频网站里面的短视频的项目工程!
    scrapy框架+redis增量式爬虫: 抓取某短视频里面发布的视频的观看次数、点赞等信息的项目工程!
    在scrapy框架中使用免费的代理ip,解决ip被封禁的问题!!!
    在scrapy框架中使用selenium爬取强国论坛的新闻标题内容+redis增量式
  • 原文地址:https://www.cnblogs.com/faded8679/p/14556128.html
Copyright © 2011-2022 走看看