JSP基础(基本语法)

2 篇文章 0 订阅
2 篇文章 0 订阅

JSP简介

  • JSP实质上是一个HTML页面,只不过包含用于产生动态页面内容的Java代码
  • JSP可看做Servlet的一种扩展,其在使用前会被编译成Servlet,即Java类

JSP优势

  1. 开发简单方便:处理表单方面极为方便
  2. 跨平台:JSP程序可以支持在Java平台上开发运行,Java本身具有跨平台性
  3. 高效性和高能性:JSP是Servlet的扩展,Java虚拟机为每一个请求创建一个单独的线程,如此系统就能很快地处理请求。同时JSP只会编译一次,首次加载时编译,当一个请求处理结束后,JSP映射的类并不会从内存中删除,而是保存在内存中,下次同样的请求发生时,系统会提供更快地反应速度。
  4. 成本低:Java开源

JSP基础语法

JSP注释

  1. HTML注释

    <!-- HTML注释-->
    HTML注释的浏览器文件中可以看到

  2. JSP注释

    <%-- JSP注释 --%>
    该注释不会发送给浏览器,在实际应用中JSP中通常会引入Java注释,两者混用。Java注释在脚本中注释,JSP注释在脚本外注释。

    例如:

        <body>
        This is my JSP page. 
        <!-- HTML注释,可在浏览器文件看到 -->
        <table align="center">
        <tr><td></td><td></td></tr>
        </table>
        <%-- 该注释是JSP注释,无法在浏览器文件中中看到 --%>
        <%
        /* 
        这是java注释
         */
         // 这是java注释
         %>
        </body>

JSP页面中的Java代码

JSP页面中的Java代码包含三种:JSP表达式、JSP声明、JSP小脚本
编写位置:页面任意位置
作用:控制页面中可变内容的产生

JSP声明

用于定义JSP中的变量、方法及静态方法,实际它与Java中定义一个全局变量、共用方法一样,jsp声明部分的变量和方法可以在JSP页面中使用。
语法有两种:

 法1:<%! 变量定义/方法定义/类 %> 
 法2:<jsp:declaration>变量/方法/类定义</jsp:declaration>
  (第二种方法已过时)

注意:声明的变量和方法只有在当前的页面中有效

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>JSP声明的例子</title>
</head>
<body>
<h1>JSP声明例子</h1>
<%!
int x,y=60,z;  //多个声明,以“;”分割
String name="John";
Date date=new Date();
 %>
 <%!
 int add(int m,int n){   //计算两个数的和
 int result=0;
 result=m+n;
 return result;
 }
  %>
 <%class Circle{
 double r;
 Circle(double r){
 super();
 this.r=r;
 }
 double area(){
 return Math.floor(Math.PI*r*r);
 }
 }
  %>
<%
/* 使用声明的方法、变量、类 */
Circle c=new Circle(6);
out.print("半径为6的圆的面积为:"+c.area());
 %>
</body>
</html>

JSP表达式

作用:用于将动态信息显示在页面中
合法内容:变量、变量加运算符组成的合法表达式、有返回值的方法
转译成Servlet的规则:在service方法中用out.print语句输出变量、表达式、方法的值
语法有两种:

<%=变量或者表达式 %>
或者
<jsp:expression>变量或者表达式</jsp:expression>
第二种方式很少使用

例如:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>JSP表达式的例子</title>
</head>
<body>
<h1>JSP表达式</h1>
 当前时间为:
 <%=new Date() %>
</body>
</html>

Java小脚本

转译成Servlet的规则:原封不动地转变成Servlet类的service()方法里的一段代码
语法规则:

<% Java脚本 %>

JSP页面中的指令

语法规则:<%@指令名 属性=值 %>

常用指令:

  • page指令
  • include指令
  • tablib指令

作用:控制JSP在转译成Servlet类时生成的内容

page指令

作用:用于导包、设置页面属性
例如:

<%-- 导包 --%>
<%@page import=“java.util.*,java.sql.*" %>

<%-- 设置JSP使用的语言,必须设置 --%>
<%@page language=“java” %>

<%-- 设置读取该文件时的编码 --%>
<%@page pageEncoding="UTF-8" %>

其他常用属性:

属性和属性值说明
session=“true or false”限定session对象是否可用,默认为true
autoFlush=“true or false”指明缓冲区域是否自动清除,默认为true
errorPage=“URL”当页面产生异常时跳转的路径
isErrorPage=“true or false”指定该JSP页面是否为处理异常的页面,true时能用exception对象,默认为false
contentType=“text/html;charset=UTF-8”设定MIME类型和编码属性,编码属性一般为UTF-8,MIME类型还有很多,application/vnd.ms-excel表示Excel电子表格,image/gif表示GIF图像等
Extends=“class”指明由该JSP页面产生的Servlet所继承的父类

include指令

作用:在JSP页面转换成Servlet时,能够将其它文件包含进来,可以包含JSP文件也可以包含HTML文件、还可以是.js文件。在标签插入的位置插入其他文件的内容,使其组合成新的JSP页面,然后由JSP引擎翻译成Servlet文件。

通过该语句能方便在每个JSP页面中包含导航栏、版权声明、logo

优点:

  • 页面代码可以复用
  • JSP页面结构简单清晰易懂,维护也比较简单

用法:

<%@include file="URL" %>

例子:

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

与标签相关的taglib指令

taglib指令是JSP新增的一个指令,用户可以自定义新的标签在页面中执行
语法:

<%taglib uri=tagliburl prefix"tagPre" %>
其中uri属性用来表示自定义标签库的存放位置,prefix是为了区分不同标签库的标签名,在页面中引用标签以prefix开头,现在比较流行的标签JSTL、EL标签

taglib指令例子:
在这里插入图片描述在这里插入图片描述

JSP动作

JSP一共13个动作,其中前三个常用:

<jsp:include>、<jsp:forward>、<jsp:param>、<jsp:plugin>、<jsp:useBean>、<jsp:jspProperty>、<jsp:output>、<jsp:attribute>、<jsp:element>、<jsp:body>、<jsp:params>、<jsp:fallback>、<jsp:setProperty>,

<jsp:include>动作

语法格式:

<jsp:include page="relative or absolute URL" flush="true or false" />
page属性必选,路径可以是相对路径也可以是绝对路径,该路径不是文件系统的绝对路径,而是以应用系统目录为根目录的绝对路径
flush属性用于指定输出缓存是否转移到被导入的文件中,true:包含在被导入文件中,false:包含在源文件中

例子:

news.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>例子</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  <body>
         <jsp:include page="news1.html" /></li>
          <jsp:include page="news2.html"/></li>
          <jsp:include page="news3.html"/></li>
  </body>
</html>


news1.html文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>news1l.html</title>
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=gbk">
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
  </head>
  <body>
      <center>
          <table border="2" width="90%">
              <tr>
                  <th>这是顶部内容</th>
              </tr>
          </table>
      </center>
  </body>
</html>

news2.html文件......
news3.html文件......
  • jsp:include动作与include指令的区别:

    1. include指令中,被包含的文件会同主页一块被编译成一个Servlet类文件,而jsp:include动作包含的文件跟主页会是相对独立的文件,在编译时会被编译成不同的类,因此jsp:inlcude在效率上更慢
    2. jsp:include是在页面被访问时导入的,而include指令是由JSP引擎在编译时导入的

<jsp:forward>动作

作用:转发请求到另外一个页面,转发的过程会连同请求的参数数据一起被转发到目标页面中
语法:<jsp:forward page="URL" />

<jsp:param>动作

<jsp:param>用来传递参数信息,它经常与其他动作一起使用,如<jsp:include>、<jsp:param>,用于主页的参数到目标页面。基本语法:

<jsp:param name=“参数名称” value=“参数值” />

jsp:param和jsp:forward结合使用的例子:

main.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%request.setCharacterEncoding("utf-8"); //设定页面传递参数的编码格式%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <title>主页面</title>
  </head>
  <body>
      <center>
          <table>
              <tr>
                  <th>主页面</th>
              </tr>
          </table>
      </center>
      <jsp:include page="subPage.jsp">
           <jsp:param value="Smith" name="userName"/>
           <jsp:param value="10086" name="passwd"/>
           <jsp:param value="北京丰台" name="address"/>
      </jsp:include>
  </body>
</html>


subPage.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String userName= request.getParameter("userName");
    String passwd= request.getParameter("passwd");
    String address= request.getParameter("address");
 %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>子页面</title>
  </head>
  <body>
      <center>
          <table>
              <tr>
                  <th>子页面:人员信息</th>
              </tr>
          </table>
      </center>
      <center>
          <table>
               <tr>
                  <td>用户名:<%=userName%></td>
               </tr>
               <tr>
                  <td>密   码:<%=passwd%></td>
               </tr>
               <tr>
                  <td>用户地址:<%=address%></td>
               </tr>
          </table>
      </center>
  </body>
</html>

注意:所有页面的编码格式要统一

jsp:param在jsp:include、jsp:forward中的用法基本一样

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值