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>