JSP学习(二)------JSP基础知识详解

来源:互联网 发布:淘宝创建店铺流程 编辑:程序博客网 时间:2024/05/16 11:05

JSP脚本元素

  • JSP声明
    声明是用来在jsp页面中声明变量或定义方法的语句,以<%开头,以%>结尾的标签,举例如下:
<% int count=0;   String str="hello"; %>
  • JSP小脚本
    JSP小脚本简单说就是纯粹的java代码片段,是以<%开头,以%>结束的标签,举例如下:
<% count++; %>
  • JSP表达式
    语法结构为:
<%= expression %>

JSP表达式中的元素将会被自动转化成String类型,可以理解为引用一个变量的值,它将会被嵌入在JSP中进行显示,例如:

<html> <head><title>A Comment Test</title></head> <body><p>   Today's date: <%= (new java.util.Date()).toLocaleString()%></p></body> </html> 

ps:JSP表达式的%和=之间不能有空格,并且不能以;结束
JSP注解语法为:

<%-- This is JSP comment --%>

JSP指令

语法结构:

<%@ directive attribute="value" %>

JSP有三种类型的指令标签,每个指令能影响servelt类的整体结构,如下图所示:

每中类型的指令均含有多种的属性(attribute),下面将对每种类型指令的属性分别介绍

  • page类型常用指令表:
    这里写图片描述

  • include类型有两种形式,分别是page和file,如下所示:

<%@ include file=”relativeURI ”%><%-- flush必须为truefalse为缺省值--%><jsp:include page=”relativeURI ” flush=”true”/>

file是将指定的文件进行编译并在当前页面转换成servlet之前融合进当前的页面,即在当前页面还没开始生成之前,比如一些静态文件header.jsp
page 在请求处理阶段执行,让您将文件插入正在生成的页面
注意:file属于JSP指令,page属于JSP动作
- taglib类型
JSP通过这个类型引入标准标签库,可以简化我们对代码的编写

JSP动作

  • include(讲解见上)
  • useBean
    标签表示用来在JSP页面中创建一个bean实例并指定它的名字以及作用范围(不写默认page范围)
    语法结构:
<%-- 最简单的语法 --%><jsp:useBean id="name" class="package.class" /><%-- 完整语法 --%><jsp:useBean id="name" scope="page | request | session | application" typeSpec /><%-- 其中typeSpec有以下几种可能的情况:--%>class="className" | class="className" type="typeName" | beanName="beanName" type="typeName" | type="typeName"

注意:必须使用class或type,而不能同时使用class和beanName。beanName表示Bean的名字,其形式为“a.b.c”

  • setProperty
    该动作设置一个bean的属性,在这个动作之前,该bean必须存在,举例
<html><head><title>Using JavaBeans in JSP</title></head><body><center><h2>Using JavaBeans in JSP</h2><jsp:useBean id="test" class="action.TestBean" /><%-- value和param必须有一个,有区别 --%><jsp:setProperty name="test"                     property="message"                     value="Hello JSP..." /><p>Got message....</p><jsp:getProperty name="test" property="message" /></center></body></html>

前提必须有一个bean

/* File: TestBean.java */package action;public class TestBean {   private String message = "No message specified";   public String getMessage() {      return(message);   }   public void setMessage(String message) {      this.message = message;   }}
  • getProperty
    使用getProperty动作将检索一个给定的属性的值,并将其转换为字符串,并最终将其插入到输出,示例如上
  • forward
    终止当前页面的动作,将请求转发给另一个资源,如静态页面,另一个JSP页面或Java Servlet
    简单语法如下:
    <jsp:forward page="Relative URL" />
    示例如下:
    date.jsp
    <p>
    Today's date: <%= (new java.util.Date()).toLocaleString(
    </p>

    main.jsp
<html><head><title>The include Action Example</title></head><body><center><h2>The include action Example</h2><jsp:forward page="date.jsp" /></center></body></html>
  • plugin
    plugin动作是用来插入Java组件到一个JSP页面
  • element、attribute、body
    这三个动作来动态定义的XML元素
  • text
    该动作可以用来写在JSP页面和文档模板文本

JSTL

JSTL是JSP的标准标签集合,里面包括了核心标签(c),格式化标签(fmt),数据库标签(sql),XML标签(x)以及自定义标签,在运用JSTL之前,我们需要先导入jstl、standard JAR包,pom.xml导入方式如下:

<!--引入JSTL标签库-->    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/javax.servlet.jsp.jstl-api -->    <dependency>      <groupId>javax.servlet.jsp.jstl</groupId>      <artifactId>javax.servlet.jsp.jstl-api</artifactId>      <version>1.2.1</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->    <dependency>      <groupId>org.apache.taglibs</groupId>      <artifactId>taglibs-standard-impl</artifactId>      <version>1.2.5</version>    </dependency>

下面我只演示c标签的示例:

<%--  Created by IntelliJ IDEA.  User: 罗浩  Date: 2017/9/16  Time: 16:11  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head>    <title>JSTL demo</title></head><body><c:out value="${'JSTL demo!'}"/><c:set var="salary" scope="session" value="${2000*2}"/><p>Before Remove Value: <c:out value="${salary}"/></p><c:remove var="salary"/><p>After Remove Value: <c:out value="${salary}"/></p><c:catch var ="catchException">    <% int x = 5/0;%></c:catch><c:if test = "${catchException != null}">    <p>The exception is : ${catchException} <br />        There is an exception: ${catchException.message}</p></c:if><c:forEach var="i" begin="1" end="5">Item <c:out value="${i}"/><p>    </c:forEach>    <c:forTokens items="Zara,nuha,roshy" delims="," var="name">      <c:out value="${name}"/><p>    </c:forTokens></body></html>

访问结果:
这里写图片描述