JSP学习1

Web应用程序能以项目的形式存在或打包为war文件。不管哪一种形势,都可以将其复制到webapps目录下进行部署。例如,有一个Web应用程序名为myApp的Web项目,将该Web应用程序文件夹复制到webapps下,启动Tomcat后,通过URL就可以访问

http://localhost:8080/myApp/xxx.jsp

其中xxx.jsp为项目下的文件。

注意:

在运行程序之前,关闭Eclipse Java EE之外的Tomcat服务器。因为如果Eclipse中启动Tomcat,外部的Tomcat服务器也处于Started状态,就会出现错误对话框,提示8080端口已经被占用。这时需要关闭外部的Tomcat服务器。如果不是这种原因造成的,可以尝试修改Tomcat的端口号。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>我的第n个JSP程序!!!</title>
</head>
<body>
<%! int number=1; %>
<%!
	public int count(){
	return number++;
}
%>
<%
	out.println("Hello jSP");
	out.println();
%>
<br>
<%= "您是第"+count()+"个客人!" %>
<br>
</body>
</html>

  注意编码设置为UTF-8。

隐藏注释:

JSP语法格式:

<%--  comment  --%>

<%-- 注释 --%>

隐藏注释标记的字符在JSP编译时会被忽略,它希望隐藏或者注释JSP程序时是非常有用的。JSP编译器不会对<%-- 和 --%>之间的语句进行编译,且该语句也不会显示在客户端的浏览器中。

HTML注释:

又称显式注释,用户能够在客户端看到注释内容。

<!--   注释语句[<%=表达式%>] -->

JSP声明:

<%!  int a=1; %><%!  int b; %><%!  int String s="test"; %>

可以一次声明多个变量和方法,只要以;结尾即可。

声明必须以;结尾

可以直接使用在<%@ page %>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明。

一个声明仅在一个页面中有效,对于一些在每个页面都用得到的声明,最好把他们写成一个单独的文件,然后用<%@ include %>或 <jsp:include >语句把该文件及文件中的各个元素包含进来。

JSP的变量作用域:

在<% ... %>声明的变量是JSP的局部变量。

在<%! ...%>中声明的变量是全局变量,这种变量在整个JSP页面内都有效。因为JSP引擎将JSP页面编译成Java文件时,将这些变量作为类的成员变量,这些变量的内存空间直到服务器关闭后才释放。

区别:

<%@ 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 count=0; %>
<%! int number=0; %>
<%
    count++;
    number++;
%>
<%= ""+count+"" %><br>
<%= ""+number+"" %>
</body>
</html>

 全局变量始终在增大,而局部变量始终是1.

方法的声明:

<%@ 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>
<p>请输入圆的半径:</p>
<form action="dec_method.jsp" method="get" name="from">
<input type="text" name="radius" >
<input type="submit" name="submit" value="开始计算">
</form>
<%!
    double area(double r){
    return Math.PI*r*r;
}
    double perimeter(double r){
        return Math.PI*2*r;
    }
%>

<%
    String str= request.getParameter("radius");
if(str!=null){
    try{
        double r;
        r = Double.parseDouble(str);
%>
<p>圆的面积是:<%= area(r) %></p>
<p>圆的周长是:<%= perimeter(r) %></p>
<% 
    }catch(Exception e){
        out.print(e.getMessage());
    }
}

%>


</body>
</html>

 脚本代码:

JSP中的脚本代码是一段Java程序代码,这些代码在请求处理时在服务器端按顺序执行,脚本代码中如果使用了out对象,则会在客户端显示输出内容。

脚本代码的语法格式如下:

<%  code fragment  %>

<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>混合静态HTML代码和Scriptlet</title>
</head>
<body>
<%
    if(Calendar.getInstance().get(Calendar.AM_PM)==Calendar.AM){
        %>
        早上好!
        <%
    }else{
        %>
        下午好!
        <%
    }
%>

</body>
</html>

 表达式:

JSP能够计算表达式,并向JSP页面输出表达式的运算结果。其语法格式如下:

<%=          %>

表达式元素表示的是一个在Java脚本语言中被定义的java表达式,在运行后被自动转换成字符串,然后被插入到表达式所在JSP文件的位置显示。表达式在运行时进行计算(页面被请求时),因此可以访问和请求有关的全部信息。

<%= new java.util.Date() %>//输出当前系统的时间。

<%= "Hello" %>//输出Hello

<%= 1+3+5 %>//输出9

在JSP页面使用表达式注意:

1、不能用分号(;)作为表达式的结束符。

2、可能由多个表达式组成,这些表达式的顺序是从左到右。

表达式实际上是被转换成out.println()方法中的内容。如<%= "hello world!" %>相当于JSP页面中的  <% out.println("hello world!");  %>

JSP指令元素:

  JSP的指令元素描述了JSP页面转换成JSP容器所能执行的Java代码的控制信息,如JSP页面所使用的语言、导入的Java类、网页的编码方式和指定错误处理页面等。·  

JSP的指令元素独立于JSP页面接受的任何请求,且不产生任何页面输出信息。

例如,用户常在每个JSP页头上加上一个指定页面语言和编码方式的指令:

<%@ page  language="java" contentType="text/html;charset=gb2312"  %>

  page指令

  page指令用来定义JSP页面中的全局属性,它描述与页面相关的一些信息。page指令的位置一般在JSP页面的开头,放在其他位置也是可行的,在一个JSP页面中可以有多个page指令。

1、language="java"

2、import=",,,"

<%@ page import="java.util.Vector,java.util.Calendar"     %>  一次性导入多个,用逗号隔开。

3、session="true | false"

  设定客户是否需要HTTP Session,如果为true,那么session是有用的;如果为false,那么用户就不能使用session对象,以及定义scope=session的<jsp:useBean>元素。默认值是true。

4、buffer = "none   | 8kb  |sizekb"

  buffer的大小被out对象用于处理执行后的JSP对客户端的输出,默认是8KB。如果设置为none,则不使用缓冲区。

  例如,设置缓冲区为64KB .

<%@ page buffer  = " 64KB" %>

  禁用缓冲区:

<%@ page buffer= "none" %>

5、errorPage="relativeURL"

设置处理异常事件的JSP文件。

6、isErrorPage  = "true | false"

  isErrorPage属性设置此JSP页面是否为错误处理页面,默认值为false。如果设置为true,则表明在该页面中可以获取异常对象exception,并通过该对象取得从发生错误的页面传出的错误信息,获取错误信息的常用方法如下:

<%= exception.getMessage()   %>

7、contentType="mimeType[;charset=characterSet]" | "text/html"

  contentType属性指定返回浏览器的内容类型,可用的属性值有text/plain(纯文本页面)、text/html(纯文本的HTML页面)、text/xml(XML页面)、appliication/x-msexcel(Excel文件)、application/msword(Word文件)。

contentType可以同时指定返回页面中所使用的字符编码,如charset=gbk等。

<%@ page contentType="text/html;charset=gb2312"   %>

注:无论把<%@ page %>指令放在JSP文件的那个地方,它的作用范围都是整个JSP页面。

设置错误页面:

pageError.jsp程序中设置了出错页面为errorPage="error.jsp",在页面运行过程中一旦遇到异常,就自动跳转到error.jsp中处理异常。在error.jsp中利用isErrorPage="true"将其设置为错误页面,可以在该页面中处理捕获到的异常。

pageError.jsp代码如下:

<%@ 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>
<%@ page errorPage="error.jsp" %>
</head>
<body>
Test for using page;
<%
int i=0;

%>
<%= 10/i %>
</body>
</html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>出错原因</title>
</head>
<body>
<font color="red">
<h2>出错啦!</h2>
Message:<%= exception.getMessage() %><br>
</font>
</body>
</html>

原文地址:https://www.cnblogs.com/hengx/p/14124251.html