JSP基础语法<一>

时间:2021-07-13 19:40:39

1.1 jsp注释

  JSP中支持两种注释,一种是显式注释,客户端是允许看见的,另外一种是隐式注释,客户端是无法看见的;

  显示注释的内容会发送到客户端;隐式注释的内容不会发到客户端;

content.jsp :

<!-- 这个注释客户端就可以看见 -->
<!-- JSP中的注释,客户端可以看见 -->
<%
// Java中提供的单行注释,客户端无法看见
/*
Java中提供的多行注释,客户端无法看见
*/
%>
<%-- 也看不见 --%>

 1.2 Scriptlet

  在JSP中最重要的部分就是Scriptlet(脚本小程序),所有嵌入在HTML代码中的Java程序都必须使用Scriplet标记出来;   在JSP中一共有三种Scritplet代码:       第一种:<%%>:在此Scriptlet中可以定义局部变量、编写语句       第二种:<%!%>:在此Scritplet中,可以定义全局变量、方法、类       第三种:<%=%>:用于输出一个变量或一个具体内容   scriptlet_demo01.jsp :
<%
int x = 10; // 定义局部变量
String info = "www.baidu.com";      // 定义局部变量
out.println("<h2>x = " + x + "</h2>"); // 编写语句
out.println("<h2>info = " + info + "</h2>"); // 编写语句
%>

scriptlet_demo02.jsp :

<%!
public static final String INFO = "www.MLDNJAVA.cn" ; //定义全局变量
int x = 10 ;
%>
<%
out.println("<h2>x = " + x++ + "</h2>") ;// 语句
%>
<%!
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 = " + this.name + ";age = " + this.age ;
}
}
%>
<%
out.println("<h3>INFO = " + INFO + "</h3>") ;
out.println("<h3>3 + 5 = " + add(3,5) + "</h3>") ;
out.println("<h3>" + new Person("zhangsan",30) + "</h3>") ;
%>

 scriptlet_demo03.jsp :

<%
String info = "www.baidu.com" ;// 局部变量
int temp = 30 ;
%>
<h3>info = <%=info%></h3>
<h3>temp = <%=temp%></h3>
<h3>name = <%="luwucheng"%></h3>

 尽量不要使用out.put.println()输出,而使用表达式输出;

1.3 scriptlet标签  

如果过多的出现<%%>会导致代码的混乱,此scriptlet标签完成与<%%>同样的功能;

scriptlet_tag.jsp

<jsp:scriptlet>
String url
="www.baidu.com";
</jsp:scriptlet>
<h2><%=url%></h2>

1.4 page指令

指定一个jsp页面的相关属性,包括MIME类型,定义需要导入的包,错误页的指定;

只有import指定可以重复出现多次,其它属性只能出现一次;

常用指令:contentType、pageEncoding、errorPage/isErrorPage、import

语法 :

<%@page 属性="内容"%>

MIME:可以设置打开文件的应用程序类型;指定某个扩展名文件将使用何种应用程序打开的一个说明;

page_demo01.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%>
<CENTER>
<H2> 百度一下</H2>
<H3> 网址:www.baidu.com </H3>
</CENTER>

以上,指定了开发语言是java,通过contentType进行设置,按照HTML文本文件进行显示,页面编码是GBK;

 设置页面编码

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>

contentType和pageEncoding设置编码的区别:

  pageEncoding指的是jsp文件本身的编码;

  contentType中的charset指的是服务器发送给客户端的内容编码;

如果一个jsp页面只需要按照网页显示,则使用pageEncoding设置编码即可;

错误页的设置

完成错误页的操作,需要满足两个条件:

  指定错误出现时的跳转页,通过errorPage属性指定;

  错误处理页必须有明确的标识,通过isErrorPage属性指定;

会出现错误的页面 show.jsp

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<%@ page errorPage="error.jsp"%><%-- 一旦出现错误之后将跳转到error.jsp中 --%>
<%
int result = 10 / 0 ; // 这里操作将发生异常
%>
<h1>欢迎光临本页面</h1>

错误处理页 error.jsp

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<%@ page isErrorPage="true"%> <%-- 表示此页面可以处理错误 --%>
<h1>程序出现了错误!</h1>

错误页的跳转属于服务器端的跳转;

服务器端跳转:页面内容出现了改变,而地址栏并有改变;

客户端跳转:程序跳转后,地址栏发生了变化;

有时可能出现无法跳转的错误页,无法显示error.jsp页面信息,则可能tomcat也认为该页有错误;

解决方式:在error.jsp页面中加入如下语句

     <%response.setStatus(200);%> 

1.5 包含指令

采用包含的形式,减少代码的重复量;

jsp中可以通过静态包含和动态包含两种方式完成;

静态包含

在jsp编译时插入一个包含文本或代码的文件,过程是静态的;

包含的文件可以是jsp文件,html文件,文本文件或一段java程序(只是简单的将内容合在一起进行显示);

语法:<%@ include file="要包含的文件路径"%>

include_demo01.jsp

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title></title></head>
<body>
<h1>静态包含操作</h1>
<%@include file="info.htm"%>
<%@include file="info.jsp"%>
<%@include file="info.inc"%>
</body>
</html>

静态包含中,现将三个文件的内容导入到include_demo.jsp中,然后一起编辑,最后呈现一份整体的内容给用户,属于先包含,后编译处理;

 动态包含

使用<jsp:include>指令完成动态包含操作;

可自动区分被包含的页面是动态还是静态;

如果是静态,则将内容包容进来进行处理;如果是动态,则先进行动态处理,再将处理后的结果包含进来;

语法:

  * 不传递参数

  <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;

   采用包含参数语法可向被包含页面传递参数,被包含的页面可使用 request.getParameter()方法进行参数的接收;

被包含页面:receive_param.jsp

<%@ page contentType="text/html" pageEncoding="GBK"%>
<h1>参数一:<%=request.getParameter("name")%></h1>
<h1>参数二:<%=request.getParameter("info")%></h1>

包含页,并传递参数: include_demo02.jsp

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<%
String username = "BUGSHI" ; // 定义一个变量
%>
<h1>动态包含并传递参数</h1>
<jsp:include page="receive_param.jsp">
<jsp:param name="name" value="<%=username%>"/>
<jsp:param name="info" value="www.baidu.com"/>
</jsp:include> <!-- 此处为标签指令,必须完结 -->
</body>
</html>

<%@include %> 和<jsp:include />操作相似,采用动态包含更好;

1.6 跳转指令

使用<jsp:forward>指令,将一个用户的请求(request)从一个页面传递到另一个页面的操作;

语法:

  * 不传递参数

  <jsp:forward page="{要包含的文件名称 | <%=表达式%>}" />

  * 传递参数

   <jsp:forward page="{要包含的文件名称 | <%=表达式%>}" />

     <jsp:param name="参数名称" value="参数内容" />

     ....可以向被包含页面传递多个参数

  </jsp:forward> 

跳转指令与动态包含指令的语法相似,只是完成的功能不同;

此种跳转也属于服务器端跳转;