jsp基础语法

jsp基础语法

一,程序在第一次运行时速度很慢,而以后再次执行会变得很快,这是因为jsp在第一次执行时会先将.jsp文件翻译成.java文件,而后再将.java文件编译成.class文件后才执行。这些转换都是在服务器执行的,一旦有修改jsp文件都会再次从新翻译编译成.class文件。

提示:若是使用的是tomcat服务器,那么这些文件.java,.class均可以在tomcat中的work目录找到 html

二,JSP注释

jsp支持两种注释方法,一种是显式,这种注释客户端是能够看见的,一种是隐式,这种是客户端不能够看见的。jsp中能够书写java代码,语法<%java代码%>
  1. 显式注释 <!-- 注释内容 -->
  2. 隐式注释 //注释:单行注释,用具java代码 /* 注释 */:多行注释,用具java代码 <%--注释--%>:jsp注释

3、Scriptlet

在jsp中,最重要的部分就是Scriptlet(脚本小程序),全部嵌套在HTML代码中的java程序都必须使用Scriptlet标记出来。在jsp中一共有三种Scriptlet代码
  • <% %>
  • <%! %>
  • <%= %>
<%%>中能够定义局部变量、编写语句等。好比:
<%
int x=10;
String s="taeyeon";
out.println("<h2>&lt;%%&gt;的使用:</h2>");//由于jsp会自动编译<%%>因此须要使用转义字符来输出<%%>,下面也是如此。
out.println("<h4>"+x+"岁的"+s+"</h4>");
%>
<%!%>中能够定义全局变量、类、方法。在<%!%>中不能出现任何其余语句,因此要编写一个普通的<%%>输出变量,调用方法,输出对象。好比:
<%!
    public int add(int x,int y){
            return x+y;
    }
%>
<%
    out.print("<h2>&lt;%!%&gt;的使用:</h2>");
    out.println("<h4>"+add(10,10)+"</h4>");
%>
<%=%>的主要功能是输出一个变量或一个具体的内容。好比:
<%
    out.print("<h2>&lt;%=%&gt;的使用:</h2>");
%>
<h4> name:<%=s%></h4>
输出结果
<%%>的使用:
10岁的taeyeon
<%!%>的使用:
20
<%=%>的使用:
name:taeyeon

备注:尽可能多使用<%=%>表达式,少使用out.println();的输出语句,由于在jsp开发中,其实是在html中加入了一些控制及输出语句,因此在输出时为了使html代码和java代码相分离,最好的作法就是只输出由jsp产生的变量,那么这时使用表达式输出比使用out.println()更加方便java

Scriptlet标签
在程序中若是过多的使用<%%>会致使代码混乱,因此在新版本jsp中提供了scriptlet标签,使用此标签能够完成与<%%>一样的功能。
<jsp:scriptlet>
  String url="www.taeyeon.com.cn";// java scriptlet 代码
</jsp:scriptlet>
<h2><%=url%></h2>//这里url会报错,可是不影响编译输出
输出结果
www.taeyeon.com.cn

4、page指令

page指令在jsp开发中较为重要,使用此属性,能够定义一个jsp页面的相关属性,包括设置MIME类型,定义须要导入的包,错误页的指定等。语法:<%@ page 属性="" %>
page指令的经常使用属性:

以上指令中只有import能够重复使用,其余的只能出现一次。web

设置页面的MIME

在page指令中,contentType属性是使用最多的一个属性,若是想让一个jsp文件显示中文,则必须对整个页面指定MIME编码。语法<%@ page contentType="text/html;charset=UTF-8" language="java" %>小程序

1,什么是MIME?tomcat

答:使用MIME类型能够设置打开文件的应用程序类型。服务器

2,常见的MINE类型:app

超文本标记语言文本 .htm,.html text/html 
普通文本 .txt text/plain 
RTF文本 .rtf application/rtf 
GIF图形 .gif image/gif 
JPEG图形 .ipeg,.jpg image/jpeg 
au声音文件 .au audio/basic 
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi 
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio 
MPEG文件 .mpg,.mpeg video/mpeg 
AVI文件 .avi video/x-msvideo 
GZIP文件 .gz application/x-gzip 
TAR文件 .tar application/x-tar

3,在Tomcat安装目录/conf/web.xml中能够查询MIME类型,例如,若是如今但愿页面能够按照word文档的形式显示,则可使用以下MIME类型:jsp

<mime-mapping>
    <extension>doc</extension>//元素用来描述扩展名
    <mime-type>application/msword</mime-type>//mime-type元素则为MIME类型
 </mime-mapping>

4,使用contentType和pageEncoding设置编码有什么区别? pageEncoding指的是jsp文件自己的编码,而contentType中的charset指的是服务器发送给客户端的内容编码。在jsp中若是pageEncoding存在,那么jsp的编码将由pageEncoding决定,不然由contentType中的charset决定,若是两个都不存在,则将使用ISO-8859-1的编码方式。jsp中的全部内容都要通过两次编码操做,第一阶段会使用pageEncoding编码,第二阶段会使用utf-8,第三阶段就是生成网页,此时才会使用contentType的编码。<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" language="java" %>ide

5,错误页的设置编码

  • 指定出现错误时的跳转页面,经过errorPage属性指定。
  • 错误处理页必须有明确的标识,经过isErrorPage属性指定。
  • <%@page errorPage="Scriptlet.jsp" %>设置出错页面跳转的处理页面。
  • <%@ page isErrorPage="true" %>设置该页面能够处理该错误。若是不写这一句或者设置为false,也能实现页面的跳转,只不过没有exception对象的处理。

注意:此处一旦发生错误地址栏上的显示界面名字是不会改变的,也就是说虽然看见了页面的跳转内容的改变,可是地址栏并无改变,这种跳转叫作服务器跳转,整个操做中客户端对服务器只发以此请求,服务器也只响应一次。

  • 咱们也能够在整个虚拟目录上设置,就是修改web.xml文件。在全局错误中能够处理的两种类型错误,一种是http代码的错误,如500,404;还有一种就是代码异常,如NullPointerException等。
<error-page>
    <error-code>500</error-code>
    <location>/page/Scriptlet.jsp</location>
  </error-page>
  <error-page>
    <exception-type>java.lang.ArithmeticException</exception-type>
    <location>/page/Scriptlet.jsp</location>
  </error-page>

5、include指令

1,静态包含

静态包含指令是在jsp编译时插入一个包含文本或代码的文件,这个包含的过程是静态的。语法:<%@ include file="要包含的文件路径"%>。将这些文件包含在一块儿,而后统一编译成.class文件。

2,动态包含

使用<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false"/>能够完成动态包含的操做。当传递参数的时候使用:

<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false">
    <jsp:param name="参数名称" value="参数内容">
    ....
</jsp:include>

flush属性的可选值为false时表示这个网页彻底被读进来之后才输出,在每个jsp的内部都会有一个buffer,因此设置成true时,当buffer满了就输出。通常设置为true。

3,动态和静态的区别

静态包含是先将所有的内容包含在一块儿,而后再一块儿编译。若是动态包含被包含的是动态页面那么是属于先处理后包含的作法。好比当被引用界面里也有定义变量x,而引用界面也有变量x的时候使用静态包含,就会报出异常变量声明重复,而使用动态就不会。

4,跳转指令

将一个用户的请求从一个界面传递到另外一个界面,即完成跳转操做。

  • 不传递参数 <jsp:forward page="{要包含的文件路径}|<%=表达式%>">
  • 传递参数
<jsp:forward page="{要包含的文件路径}|<%=表达式%>">
    <jsp:param name="参数名称" value="参数内容">
    ......
</jsp:forward>
相关文章
相关标签/搜索