Fork me on GitHub

JSP学习-了解

最近,由于最近项目需要集成到老项目中去,采用原始的前后端不分离开发,需要学习jsp语言。
如有不正确的地方,请大家提出来,我会更正,共同进步,谢谢。

JSP简介

1.    JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

JSP 生命周期

1.    编译阶段:
当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。
编译的过程包括三个步骤:
    解析JSP文件。
    将JSP文件转为servlet。
    编译servlet。
2.    初始化阶段:
    容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了,就像下面这样:
    
1
2
3
public void jspInit(){
// 初始化代码
}
一般来讲程序只初始化一次,servlet也是如此。通常情况下您可以在jspInit()方法中初始化数据库连接、打开文件和创建查询表。 执行阶段: 这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。 当JSP网页完成初始化后,JSP引擎将会调用_jspService()方法。 _jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数,就像下面这样:
1
2
3
4
5
void _jspService(HttpServletRequest request,
HttpServletResponse response)
{
// 服务端处理代码
}
_jspService()方法在每个request中被调用一次并且负责产生与之相对应的response,并且它还负责产生所有7个HTTP方法的回应,比如GET、POST、DELETE等等。 销毁阶段: SP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。 jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。
1
2
3
4
5
jspDestroy()方法的格式如下:
public void jspDestroy()
{
// 清理代码
}

JSP语法

语法格式:
    <% 代码片段 %>
    <jsp:scriptlet>
       代码片段
    </jsp:scriptlet>
中文编码问题:
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
JSP声明
    <%! declaration; [ declaration; ]+ ... %>
    <jsp:declaration>
       代码片段
    </jsp:declaration>
    例子:
    <%! int i = 0; %> 
JSP表达式    
    <%= 表达式 %>
    <jsp:expression>
       表达式
    </jsp:expression>
JSP注释
    <%-- 注释 --%>
JSP指令
    JSP指令用来设置与整个JSP页面相关的属性。
    <%@ directive attribute="value" %>
    例子:
    <%@ page ... %>    定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
    <%@ include ... %>    包含其他文件
    <%@ taglib ... %>    引入标签库的定义,可以是自定义标签
JSP行为
    JSP行为标签使用XML语法结构来控制servlet引擎。
    <jsp:action_name attribute="value" />
JSP隐含对象
    JSP支持九个自动定义的变量,江湖人称隐含对象。
    request    HttpServletRequest类的实例
    response    HttpServletResponse类的实例
判断语句
    if-else
        <%! int day =  %>
        <% if (day == 1 | day == 7) { %>
            <p>今天是周末</p>
        <% } else { %>
              <p>今天不是周末</p>
        <% } %>
    switch-case
        <% 
        switch(day) {
        case 0:
           out.println("星期天");
           break;
        case 1:
           out.println("星期一");
           break;
        default:
           out.println("星期六");
        }
        %>
循环语句
    for
        <%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
           <font color="green" size="<%= fontSize %>">
            菜鸟教程
           </font><br />
        <%}%>
    while
        <%while ( fontSize <= 3){ %>
           <font color="green" size="<%= fontSize %>">
            菜鸟教程
           </font><br />
        <%fontSize++;%>
        <%}%>
JSP 字面量
    布尔值(boolean):true 和 false;
    整型(int):与 Java 中的一样;
    浮点型(float):与 Java 中的一样;
    字符串(string):以单引号或双引号开始和结束;
    Null:null。

JSP指令

JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。
    <%@ directive attribute="value" %>
Page指令
    Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。
    <%@ page attribute="value" %>
    <jsp:directive.page attribute="value" />
Include指令
    JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。
    <%@ include file="文件相对 url 地址" %>
    <jsp:directive.include file="文件相对 url 地址" />
Taglib指令
    JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
    <%@ taglib uri="uri" prefix="prefixOfTag" %>
    <jsp:directive.taglib uri="uri" prefix="prefixOfTag" />

JSP动作元素

JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。
    <jsp:action_name attribute="value" />

JSP隐式对象

JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。    

JSP客户端请求

当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的。您可以查阅HTTP协议来获得更多的信息。

JSP服务器响应

Response响应对象主要将JSP容器处理后的结果传回到客户端。可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie、HTTP文件头信息等。

JSP HTTP状态码

以状态行+CRLF(回车换行)开始
零行或多行头模块+CRLF
一个空行,比如CRLF
可选的消息体比如文件,查询数据,查询输出

JSP 表单处理

JSP 读取表单数据
    getParameter(): 使用 request.getParameter() 方法来获取表单参数的值。
    getParameterValues(): 获得如checkbox类(名字相同,但值有多个)的数据。 接收数组变量 ,如checkbox类型
    getParameterNames():该方法可以取得所有变量的名称,该方法返回一个Emumeration。
    getInputStream():调用此方法来读取来自客户端的二进制数据流。

JSP过滤器

JSP 和 Servlet 中的过滤器都是 Java 类。
过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。
可以将一个或多个过滤器附加到一个 Servlet 或一组 Servlet。过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。
过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的:
在客户端的请求访问后端资源之前,拦截这些请求。
在服务器的响应发送回客户端之前,处理这些响应。
Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持。

JSP Session

有三种方法来维持客户端与服务器的会话
    Cookies
    隐藏表单域  <input type="hidden" name="sessionid" value="12345">
    重写URL   http://w3cschool.cc/file.htm;sessionid=12345
session对象
    JSP利用servlet提供的HttpSession接口来识别一个用户,存储这个用户的所有访问信息。
    默认情况下,JSP允许会话跟踪,一个新的HttpSession对象将会自动地为新的客户端实例化。

JSP 文件上传

JSP 日期处理

使用JSP最重要的优势之一,就是可以使用所有Java  API。本章将会详细地讲述Java中的Date类,它在java.util包下,封装了当前日期和时间。

JSP 页面重定向

当需要将文档移动到一个新的位置时,就需要使用JSP重定向了。

JSP 点击量统计

JSP 自动刷新

想象一下,如果要直播比赛的比分,或股票市场的实时状态,或当前的外汇配给,该怎么实现呢?显然,要实现这种实时功能,您就不得不规律性地刷新页面。

JSP 发送邮件

-------------本文结束感谢您的阅读,如果本文对你有帮助就记得给个star-------------
Donate comment here