JSP从零开始

JSP从零开始

一、JSP概述

1、Servlet的优点和缺点

Servlet几乎可以完成服务器编程的所有任务,而且对于Java程序员来说,也容易上手,编写代码时与编写桌面应用程序的差别不大。但是,Servlet的这一切操作都是与业务逻辑有关的,而对于呈现给用户的交互界面。Servlet并不擅长。
总结来说,Servlet的有点主要体现在数据操作等方面:

  • 读取表单数据
  • 读取HTTP请求报头
  • 读取HTTP状态代码和响应报头
  • 进行会话跟踪
  • 对数据库进行操作

Servlet的缺点主要体现在数据呈现方面:

  • 需要使用大量的print语句生成网页,还要小心处理转义字符
  • 专门的网页制作不适合于Java Web项目
  • 需要程序员既熟悉Java又熟悉网页设计

2、JSP的诞生和优点

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是一种动态网页技术标准。JSP技术类似与ASP技术(在HTML的代码中嵌入VB Script脚本语言),它是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,其优点如下:

  • 不再需要使用print语句生成网页,直接使用HTML
  • 一次编写,到处运行。除了系统之外,代码不用做任何更改
  • 多样化和功能强大的开发工具支持,提高了开发效率
  • 将开发人员和分为JAV程序员和网页设计师,各司其职,在各自擅长的领域内工作

二、JSP的工作原理

1、设计思想

JSP可以看做是在HTML标记中嵌入了Java代码(通过脚本语言来实现),不同于Servlet,Servlet是在Java代码中嵌入了HTML标记(通过print语句实现),两者看起来好像都是Java语言和HTML混合的形式,但是效果完全不同。按照JSP的这种方式混合,在一定程度上实现了业务逻辑与数据呈现的分离。
虽然JSP文件的后缀是.jsp,但是JSP页面在修改后第一次访问的时候,将由Web容器将其转换成一个符合Servlet规范的后缀为.java的文件,然后再编译成字节码文件,最后执行字节码文件。

2、生命周期

JSP生命周期包括以下阶段:

  • 编译阶段:包括解析JSP文件、将JSP文件转为servlet、编译servlet三部分
    解析JSP文件—-Servlet容器解析JSP文件代码,如果有语法错误,就会向客户端返回错误信息
    将JSP文件转为servlet—-Servelet容器把JSP文件翻译成Servelet源文件
    编译servlet—-Servelet容器编译Servelet源文件,生成servelet
  • 初始化阶段:加载与JSP对应的Servelet类,创建其实例,并调用它的初始化方法
  • 运行时阶段:调用与JSP对应的Servelet实例的服务方法
  • 销毁阶段:调用与JSP对应的Servelet实例的销毁方法,然后销毁Servelet实例

JSP仅在第一次被访问时(或者修改后第一次访问时),才会转换成Servlet并被编译成字节码文件,以后再访问时,就无须转换了。这就是为什么在使用JSP时,有人感觉JSP在第一次运行时比较慢,但在之后再次请求时,速度就快多了的原因。因为第一次有个转换的过程,而之后就和一般的Servlet一样了。

三、JSP编程

先看一个打印当前系统时间的例子,新建web项目,在.jsp文件中编程如下:

<%@ page language="java" import="java.util.Date" 
    contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
        <title>Insert title heretitle>  
    head>  
    <body>  
        <h1>  
            现在时间是:  
            <%=new Date().toString()%>h1>  
    body>  
html> 

在上面代码中使用了page指令的import属性,导入了Date类,同时使用了contentType属性。代码运行结果如下:
这里写图片描述

1、JSP页面组成

我们把JSP页面分为两个部分:静态部分和动态部分。
静态部分称为模板文本,这部分是JSP容器不处理的,基本上会原封不动地由服务器端传递到客户端,一般由HTML组成。
动态部分与调用Java代码有关,根据调用方式的不同,主要有指令标记、声明标记、脚本标记、表达式标记、动作标记、注释标记等。在学习过程中,先重点掌握指令标记、动作标记、注释标记即可。

2、静态部分(模板文本)

1) JSP指令标记

主要用来设定JSP页面的整体配置信息,以便于在转换期间将JSP页面顺利转换成Servlet。语法如下,

<% @JSP 标准指令 属性1 属性2 ... 属性n %>

JSP指令标记为page、include、taglib三种。

a. page指令

page指令描述了和页面相关的信息。在一个JSP页面中,page指令可以出现多次,但是在每个page指令中,每一种属性却只能出现一次,重复的属性设置将覆盖掉先前的设置。
page指令的基本语法格式如下:

<%@page  page_directive_attr_list  %> 

page指令的具体属性解释

b. include指令
include指令的作用是包含另一个文件,这种包含就是在页面编译期间引入一个文件,其语法相当简单:

<%@include file="……"%> 

c. taglib指令
JSP页面除了可以使用标准动作标记等,同时支持用户自己扩展标记库,这时候就需要用到taglib指令,语法为:

<%@ taglib uri=" " prefix=" " %>

2) JSP动作标记

JSP动作标记设计的初衷是减少页面的Java脚本的使用,将原来页面的一系列操作封装成标记,从而在需要类似操作时,只写标记即可,这样增强了代码的可维护性和重用性。
JSP动作标记详解

3) JSP注释标记

在代码中添加注释,可以增强代码的可读性和程序的可维护性,所以应该适当添加注释标记。
a. HTML中的注释

<! --HTML中的注释-- >

b. Java中的注释

<%
    //Java中的单行注释
    /*Java中的多行注释*/
%>

c. JSP的注释

<% --Jsp的注释-- >

容器在将JSP转换成Servlet时,会忽略<%–和–%>之间的内容。

你可能感兴趣的:(java-web)