【JSP】JSP基础语法


JSP程序实际就是在HTML中插入大量的Java代码,具有交互性,可以接收用户传递的一些信息,且JSP文件一定要在服务器上运行

JSP文件的运行过程:JSP文件最后都会以class文件的形式运行

JSP文件
Java文件
class文件

JSP注释

JSP中支持两种注释形式,一种是显式注释,即允许客户端看见;另一种是隐式注释,即不允许客户端看见
显式注释:<!--注释内容-->
隐式注释: 1.//这是一个单行注释 2./*这是一个多行注释*/ 3.<%--这是JSP注释--%>

Scriptlet

这是脚本小程序,插在HTML中的Java程序都必须使用Scriptlet标记出来
第一种Script使用<%%>表示,可以在其中定义局部变量、编写语句等

<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    //定义局部变量
    int x = 10;
    //编写语句
    out.print("<h3>x = " + x + "</h3>");
  %>
  </body>
</html>

第二种Scriptlet是使用<%!%>表示,在此Script中可以定义全局变量、方法、类

<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%!
    //定义全局变量
    public static final int x = 10;

    //定义方法
    public int add(int x, int y){
      return x + y;
    }

    //定义一个类
    class Person{
      private String name;
      private int age;
      public Person(String name, int age){
        this.name = name;
        this.age = age;
      }
      public String toString(){
        return "name is " + this.name + " and age is " + this.age;
      }
    }
  %>
  <%
    //编写语句
    out.println("<h3>x = " + x + "</h3>");
    out.println("<h3>add(4,7) = " + add(4,7) + "</h3>");
    out.println("<h3>person = " + new Person("John",15) + "</h3>");
  %>
  </body>
</html>

第三种Scriptlet是使用<%=%>,主要功能是输出一个具体的常量,也成为表达式输出

<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    //定义局部变量
    int x = 10;
  %>
  <!--使用表达式输出变量-->
  <h3>x = <%= x %></h3>
  </body>
</html>

在开发中尽量不要使用out.println()进行输出,而使用表达式输出
在JSP文件中,为实现HTML代码和Java代码的分离,表达式输出会更加方便,会使代码变得非常整洁
另外,若for语句写在了多个Scriptlet中,一定要加“{}”,否则程序会出现错误


Scriptlet标签

新版JSP中提供了一种Scriptlet标签,其作用与<%%>相同

<jsp:scriptlet>
    java 代码
</jsp:scriptlet>

Page指令

page定义了JSP页面的相关属性,包括设置MIME类型、定义需要导入的包、错误页的指令等

No.指令属性描述
1autoFlush可以设置true或false,如果设置为true,当缓冲区满是,客户端的输出会被刷新;如果设置为false,当缓冲区满时,将出现异常,表示缓冲区溢出。默认为true,如果autoFlush=“true”
2buffer指定到客户端输出流的缓冲模式。如果为none,则表示不设置缓冲区;如果指定数值,那么输出时就必须使用不小于这个值的缓冲区进行缓冲。此属性要和autoFlush一起使用。默认不小于8KB,根据不同的服务器可以进行不同的设置
3contentType定义JSP字符的编码和页面响应的MIME类型,如果是中文HTML显示,则使用如下形式:contentType=“text/html;charset=GBK”
4errorPage定义此页面出错时要跳转的显示页,如errorPage=“error.jsp”,要与isErrorPage属性一起使用
5extends主要定义此JSP页面产生的Servlet是从哪个父类扩展而来,如extends=“父类名称”
6import此JSP页面要导入哪几个操作包,如import=“java.util.*”
7info此JSP页面的信息,如info=“textinfo”
8isErrorPage可以设置为true或false,表示此页面是否为出错的处理页。如果设置为true,则errorPage指定的页面出错时才能跳转到此页面进行错误处理;如果设置为false,则无法处理
9isThreadSafe可以设置为true或false,表示此页面是否是线程安全的。如果为true,表示一个JSP页面可以处理多个用户的请求;如果为false,则此JSP一次只能处理一个用户请求
10language用来定义要使用的脚本语言,目前只能是java,如language=“java”
11pageEncodingJSP页面的字符编码,默认值为pageEncoding=“iso-8859-1”,如果是中文则可以设置为pageEncoding=“GBK”
12session可以设置为true或false,指定所在页面是否参与HTTP会话。默认为true,如session=“true”

只有import指令可以重复多次出现
page指令的语法是<%@ page 属性=“内容” %>

MIME

• 使用MIME类型可以设置打开文件的应用程序类型,指定某个扩展名文件将使用何种应用程序打开的一个说明
• 若MIME类型设置错误,则可能出现下载提示框。例如将“text/html;charset=GBK”写成了“test/html;charset=GBK”,在运行时则会出现一个下载提示框
• html文件和htm文件是完全一样的,处理的MIME类型也是一样的


设置文件编码

pageEncoding 和 contentType 都可以设置文件的编码,两者的区别在于contentType中的charset指的是服务器发送给客户端的内容编码,pageEncoding指的是JSP文件本身的编码
如果pageEncoding存在,那么JSP的编码将由pageEncoding决定,否则将由contentType中的charset决定,如果两者都不存在,将使用ISO-8859-1的编码方式

在JSP页面中,所有内容都要经过两次的编码操作,第一阶段会使用pageEncoding编码,第二阶段会使用utf-8编码,第三阶段是Tomcat生成的网页,使用的才是contentType

设置错误页

在page指令中设置错误页即可,例如:<%@ page errorPage="error.jsp" %>
设置后,一旦发生异常,就会跳转到所设置的页面

在跳转中,若地址栏没有发生改变,则称为服务器端跳转。例如错误页的跳转,在整个过程中,客户端只对服务器请求了一次,服务器也只回应了一次
若程序跳转后地址栏发生改变,则称为客户端跳转。例如超链接的跳转就是一种客户端跳转


包含指令

静态包含指令是在JSP编译时插入一个包含文本或代码的文件,包含的文件可以是JSP文件、HTML文件、文本文件,或是一段Java程序
静态包含的语法是:<%@ include file="包含的文件路径" %>

定义要包含的文件info.html

<h2>
  <font color="red">info.html</font>
</h2>
<%@ page  contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%@include file="info.html" %>
  </body>
</html>

动态包含是使用<jsp:include>指令完成动态包含的操作
该指令可以识别是静态包含还是动态包含,如果是静态页面,则与静态包含一样;若是动态页面,则可以先进行动态处理再将处理结果包含进来

不传递参数:

<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false" />

传递参数:

<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false" >
  <jsp:param name="参数名称" value="参数内容" />
    ...可以向被包含的页面传递多个参数
  </jsp:include>

在包含页使用request.getParameter() 来接收传递过来的参数
在开发中要尽量使用动态包含指令


跳转指令

使用<jsp:forword>指令可以将用户的请求从一个页面传递到另外一个页面

不传递参数:

<jsp:forword page="{要包含的文件路径|<%=表达式%>}" flush="true|false" />

传递参数:

<jsp:forword page="{要包含的文件路径|<%=表达式%>}" flush="true|false" >
  <jsp:param name="参数名称" value="参数内容" />
    ...可以向被包含的页面传递多个参数
  </jsp:forword>

这种跳转属于服务器跳转

在开发中尽量分开编写动态页和静态页,这样可以提升程序的运行速度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值