jsp从入门到入土

一、JSP基础

1.1  jsp简述

JSP(全称Java Server Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

JSP所需maven依赖

<!-- 导入jsp坐标: 使用jsp需要导入jsp坐标-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>

 1.2 JSP指令标识

指令表示语法格式如下:

<%@ 指令名 属性1="属性值1" 属性2="属性值2".....%>

 在JSP中包含3个指令: page 、 include 、taglib

1.page 指令  :

 <%@ page  import="java.util.*"%>    //等同于导包

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>  //创建jsp页面都带有这一行指令

  • language属性: 设置jsp页面使用的语言
  • contentType属性:设置页面的mime类型和字符编码
  • pageEncoding: 设置页面的编码格式

2.include 指令


 <%@ include file="被包含的文件路径"%>

在jsp页面中包含另一个jsp页面,在包含和被包含的文件中不能有相同名称的变量!

创建"top.jsp",用于放置网站的导航条

创建"copyright.jsp"  用于放置网站的版权信息

创建"index.jsp"   该页面包含"top.jsp"和"copyright.jsp"  

 运行如下图

 

3.taglib 指令

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

 声明该页面所所使用的标签库,同时应用标签库。

1.3 JSP脚本标识

1.3.1 声明标识

<%!  声明变量或方法的代码 %>

 1.3.2 JSP表达式

<%= 表达式%>

 1.3.3 Scriptlet脚本程序

<% 代码或是脚本代码 %>

1.3.4 案例代码

<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
</head>
<body>
<%!
    //定义全局变量
    int age = 19;
    String name = "张三";
    String sex = "男";
%>
<ul>
    <li>时间:<%= new Date()%></li>
    <li>年龄:<%= age%></li>
    <li>姓名:<%= name%></li>
    <li>性别:<%= sex%></li>
</ul>

<%
    String name2 = "张三";
    String name3 = "李四";
    String name4 = "王五";
    response.getWriter().print(name2);
    response.getWriter().print(name3);
    response.getWriter().print(name4);
%>
</body>
</html>

运行如下:

 

 

二、JSP内置对象

JSP中的9个内置对象
内置对象输入和输出对象out用来向客户端浏览器输出信息的数据流
request客户端发送的请求信息
response服务器传回客户端的响应信息
作用域通信对象session为发送请求的客户端建立会话
application保存整个应用程序的共享信息
pageContext保存当前JSP页面的共享信息
Servlet对象page代表JSP网页本身
config读取初始化参数
错误对象exception获取运行时的异常

三、JSP标准动作

<jsp:useBean/>   在jsp页面上创建一个bean实列;

<jsp:useBean id="变量名(student)" class="指定一个完整的类名(com.fu.pojo.student)"       scope="page|session|application|request"/>

scope: 作用域

默认作用域是page
page:  bean只能在创建bean的页面存在
request :bean在用户对其发生请求时存在
session: bean一直存在于会话中,直到去终止或被删除为止
application: bean在整个应用程序均可使用

<jsp:setProperty/>  用于设置usebean中指定的属性值
<jsp:setProperty name="useBean的id" property="字段名" value="值"/> 

<jsp:getProperty/> 用于获取usebean中指定的属性值
<jsp:getProperty name="useBean的id" property="字段名"/>

<jsp:forward/> 用于将用户的请求转发到一个HTML文件,JSP页面或Servlet中;
<jsp:forward  page="url(index.jsp)"/>  //url属性:指定目标资源;

<jsp:include>  允许包含动态文件和静态文件
<jsp:include page="url" flush="true"/> //默认是false,必须true

代码示范:

//bean如下:
package com.fu.pojo;
public class People {
    private String name;
    private int age;
    private String sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
//jsp如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--方法一--%>
   <%--实例化People--%>
   <jsp:useBean id="people" class="com.fu.pojo.People"/>

   <%--用于设置usebean中指定的属性值 --%>
   <%--<jsp:setProperty name="useBean的id" property="bean的属性名" value="值"/> --%>
   <jsp:setProperty name="people" property="name" value="老三"/>
   <jsp:setProperty name="people" property="age" value="19"/>
   <jsp:setProperty name="people" property="sex" value="男"/>

   <%--用于获取usebean中指定的属性值--%>
   <%--<jsp:getProperty name="useBean的id" property="bean的属性名"/> --%>
   <jsp:getProperty name="people" property="name"/>
   <jsp:getProperty name="people" property="age"/>
   <jsp:getProperty name="people" property="sex"/>

    <%--转发  用于将用户的请求转发到一个HTML文件,JSP页面或Servlet中--%>
    <jsp:forward page="f.jsp">  //转发到f.jsp
       <jsp:param name="name" value="LiSi"/><br>
       <jsp:param name="age" value="30"/><br>
       <jsp:param name="sex" value="nan"/><br>
    </jsp:forward>

</body>
</html>

//f.jsp如下
<%@ page import="java.util.Date" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
</head>
<body>
     <%
         //获取服务器传过来的参数
         response.getWriter().print(request.getParameter("name"));
         response.getWriter().print(request.getParameter("age"));
         response.getWriter().print(request.getParameter("sex"));
     %>
</body>
</html>

运行如下:

 

四、EL表达式

4.1 EL表达式的定义

表达式语言(Expression Language,EL)是一种简单的数据访问语言,基本的语法格式为“${表达式}”。当JSP 引擎在解析 JSP页面的过程中遇到“${表达式)”格式的字符序列时,将调用EL引擎解释并执行“{}”中的表达式。它具有以下3个特点:
(1)可以使用属性名方便地引用存储在各种域范围中的属性。
(2)可以使用${(JavaBean.property)的形式访问作用域中JavaBean对象的属性。
(3)可以使用一系列的隐含对象,如pageContext对象、request对象和session等,EL表达式可以通过这些隐含对象访问JSP页面中的各种信息。

 

4.2 使用EL访问变量

使用el表达式必须设置isELIgnored="false",因为jsp默认是禁用el表达式的;

<% String name="张三" %>

<h2>hello,${name}</h2> //输出张三

 4.3 使用EL访问javaBean

//bean如下:
package com.fu.pojo;
public class People {
    private String name;
    private int age;
    private String sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
//jsp如下:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--方法一--%>
   <%--实例化People--%>
   <jsp:useBean id="people" class="com.fu.pojo.People"/>
   <%--用于设置usebean中指定的属性值--%>
   <jsp:setProperty name="people" property="name" value="老三"/>
   <jsp:setProperty name="people" property="age" value="19"/>
   <jsp:setProperty name="people" property="sex" value="男"/>
   <%--用于获取usebean中指定的属性值--%>
   <jsp:getProperty name="people" property="name"/>
   <jsp:getProperty name="people" property="age"/>
   <jsp:getProperty name="people" property="sex"/>

<%--方法二--%>
   <%--实例化People--%>
   <%@ page import="com.fu.pojo.People" %>
   <%
      People people1 = new People();
      people1.setName("老三");
      people1.setAge(19);
      people1.setSex("男");
      response.getWriter().print(people1.getName()+"<br>");
      response.getWriter().print(people1.getAge()+"<br>");
      response.getWriter().print(people1.getSex()+"<br>");
   %>

</body>
</html>

运行如下:

 

 

五、JSTL标签库

5.1  JSTL标签分类

各标签库的定义如下:
(1)核心标签库,代码如下.
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
(2)国际化与格式化标签库,代码如下:
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
(3)SQL标签库,代码如下。
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
(4)XML标签库,代码如下:
<%@taglib uri=”http://java.sun.com/jsp/jstl/xml" prefix="xml"%>

5.2  JSTL所需依赖

<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>

<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>

5.3 通用标签

1.<c:out>  计算表达式结果并将结果存储在当前的JSPWriter对象中

2.<c:set>  设置页面中的变量或对象属性值

3.<c:remove>  用于删除创建的变量

5.4 条件标签

 1.<c:if>

2.<c:choose>

5.5 迭代标签

<c:forEach>

5.6  格式化标签

格式化数字: <fmt:formatNumber>

语法如下:
<fmt:formatNumber value="num"

   maxFractionDigits="maxDigits"
     type="numberlcurrencylpercent"

          scope="pagelrequest/sessionlapplication />


value:指定被格式化的数字
maxFractionDigits:最大小数位
type:指定数字的表现形式(number(7.3),currency(¥7.3),percent(7.3%))

 格式化日期: <fmt:formatDate>
<fmt:formatDate value="date" pattern="yyyy-MM-dd | yyyy年MM月dd日 | yyyy年MM月dd hh:mm:ss"/>
value: 指定被格式化的日期,可以引用EL
patter: 格式化样式,可以引用EL

5.7 案例代码

//jsp如下
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<c:set var="name" value="老三"/>
<c:set var="age" value="18"/>
<c:set var="score" value="90"/>

<h2>if测试---------------------------------</h2>
<c:if test="${age>10}" var="br">
  <c:out value="恭喜你,成年啦!"/>
</c:if>
<c:out value="${br}"/>

<br>
<h2>choose测试---------------------------------</h2>
<c:choose>
  <c:when test="${score>=90}">优秀!</c:when>
  <c:when test="${score>=80}">良好!</c:when>
  <c:when test="${score>=60}">及格!</c:when>
  <c:otherwise>继续努力!</c:otherwise>
</c:choose>

<%
  ArrayList<Object> obj =  new ArrayList<Object>();
  obj.add("张三");
  obj.add("李四");
  obj.add("王五");
  request.setAttribute("list",obj);
%>
<br>
<h2>foreach测试---------------------------------</h2>
<c:forEach var="obj" items="${list}">
  <c:out value="${obj}"/><br>
</c:forEach>
<br>
<h2>fmt:formatDate(格式化日期)测试---------------------------------</h2>
<%
  Date date = new Date();  //创建日期对象
  request.setAttribute("date",date);
%>
没有格式化前的日期: ${date}<br>
以yyyy-mm-dd形式格式化: <fmt:formatDate value="${date}" pattern="yyyy-mm-dd"/><br>
以yyyy-mm-dd hh:mm:ss形式格式化: <fmt:formatDate value="${date}" pattern="yyyy-mm-dd hh:mm:ss"/><br>
以yyyy年mm月dd日 hh时mm分秒形式格式化:<fmt:formatDate value="${date}" pattern="yyyy年mm月dd日 hh时mm分ss秒"/><br>
</body>
</html>

运行结果如下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值