第1章〓初试Servlet/JSP编程Chapter 11.1Servlet程序 1. Servlet的基本概念 2. Tomcat的安装配置网页本身是一种文本文件,而HTML(HyperText Marked Language)则是编写网页的主要语言。 例11利用HTML编写一个输出Hello World的网页。<html> <head> <title>一个简单的HTML示例</title> </head> <body> <h1>Hello World</h1> </body> </html>将以上源代码保存在文件helloworld.html中,用浏览器打开,可以看到图11所示的效果。 图11HTML示例 HelloWorldServlet.wmv Servlet是用Java程序编写的服务器端程序,这一部分讨论了如何用Java编写Servlet,以及如何实现服务器端与客户端的动态交互。 1. 实例 用Java编写Servlet程序,先发送一个HTML网页。 2. 分析 编写Servelt程序,首先应该继承HttpServlet,然后根据是GET的POST请求,覆盖doGet()、doPost()方法。 3. 代码实现 1.import java.io.; 2.import javax.servlet.; 3.import javax.servlet.http.; 4.public class HelloWorld extends HttpServlet { 5.public void doGet(HttpServletRequest request, HttpServletResponse response) 6.throws ServletException, IOException { 7.response.setContentType("text/html"); 8.PrintWriter out=response.getWriter(); 9.out.println("<html>" ); 10.out.println("<head><title>Hello World</title></head>" ); 11.out.println("<body>" ); 12.out.println("<h1>Hello World</h1>" ); 13.out.println("</body></html>"); 14.} 15.public void doPost(HttpServletRequest request, 16.HttpServletResponse response) 17.throws ServletException, IOException { 18.doGet(request, response); 19.} 20.}程序中第7~13行向客户端浏览器发送网页。out是PrintWriter对象,println()方法把网页作为字符串发送到客户端浏览器。Tomcat安装和运行.wmv4. 测试与运行 程序编写好后,还需选择一个Web容器发布Servlet动态网页,本书用的是Tomcat。下面介绍如何配置Tomcat环境,以及如何运行该程序。 (1) Tomcat的安装 支持Servlet/JSP的容器有很多,Tomcat是SUN公司官方推荐的Servlet和JSP容器。 在Windows环境下,运行Tomcat需设置TOMCAT_HOME和JAVA_HOME两个环境变量,假设Tomcat安装在D:\\tomcat8目录下,环境变量设置如图12所示。 假设JDK安装在D:\\Program Files\\Java\\jdk1.8.0_131目录下,JAVA_HOME设置如图13所示。 图12设置TOMCAT环境变量图13设置Java环境变量(2) 启动和测试Tomcat 设置完毕就可以运行Tomcat服务器了。进入Tomcat安装目录下的bin目录,运行startup程序,启动Tomcat,运行shutdown程序,关闭Tomcat。启动完成后,在浏览器中输入http://localhost:8080/,如图14所示。 图14正确启动Tomcat后的界面 (3) 编译 在编译Servlet程序之前,要确保servlet.jar和jsp.jar加入CLASSPATH变量。CLASSPATH变量应该包含当前目录(即在CLASSPATH中包含“.”)。 Tomcat安装目录下的common\\lib目录有一个文件servletapi.jar,把它加入到CLASSPATH变量中也可以。如: set classpath=%classpath%;C:\\tomcat\\common\\lib\\servletapi.jar。 或者在编译的时候给出classpath的路径,如:javac HelloWorld.javaclasspath C:\\tomcat\\common\\lib\\servletapi.jar。HelloWorld.java是要编译的文件名。 Tomcat中的应用程序按一定目录结构来组织,Web应用下的WEBINF目录很重要,通常在WEBINF目录下有一个web.xml文件和一个classes目录,web.xml是该应用的配置文件,而classes目录下则包含编译好的Servlet类以及JSP或Servlet所依赖的其他类。应用程序所依赖的类可以打包成JAR文件放到WEBINF下的lib目录下,虽然也可以放到系统的CLASSPATH变量中,但那样做会导致程序的移植和管理困难。编译后的类文件HelloWorld.class需放置在<CATALINA_HOME>/webapps/ROOT/WEBINF/classes目录下。 (4) 部署Servlet Servlet是用Java编写的一个服务器端程序,还需要为它配置一个URL地址。为此需要在文件web.xml中配置。在文件中加入下面的内容。<servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/servlet/HelloWorld</url-pattern> </servlet-mapping>在配置文件中,<servlet>标签把HelloWorld类配置为名为HelloWorld的Servlet,<servletmapping>标签为该Servlet配置URL地址: /servlet/HelloWorld。 注意较高版本的JDK可直接在程序中用注释语句把HelloWorld类配置为一个Servlet,语句如下:@WebServlet("/servlet/HelloWorld") public class HelloWorld extends HttpServlet {...}第一行@WebServlet是注释语句,把HelloWorld类配置成URL地址为/servlet/HelloWorld的一个Servlet。 (5) Servlet程序的运行 启动Tomcat,在地址栏中输入http://localhost:8080/servlet/HelloWorld,可以看到程序的运行结果如图15所示。 图15运行Servlet程序的结果 5. 技术分析 (1) CGI和Servlet概念 用户一般在用户界面通过一个表单填写数据并传送到Server,让Server的CGI程序处理。CGI(Common Gateway Interface)是一个用于Web服务器与外部程序之间交互的标准接口,使得外部程序能生成HTML、图像或者其他内容,而服务器处理的方式与那些非外部程序生成的HTML、图像或其他内容的处理方式是相同的。因此,CGI程序不仅能生成静态内容,而且也能生成动态内容。CGI是一个定义良好并被广泛支持的标准。 Servlet相当于使用Java技术的CGI。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,其功能更强大,具有更好的可移植性,更节省资金。 (2) Servlet处理请求方式 Servlet可以处理GET请求。所谓的GET请求,可以把它看成是用户提交没有指定METHOD的表单所发出的请求。Servlet也可以很方便地处理POST请求,POST请求是用户提交那些指定了method="POST"的表单时所发出的请求。 Servlet的doGet()和doPost()方法都有两个参数,分别为HttpServletRequest 类型和HttpServletResponse 类型。HttpServletRequest类型提供访问有关请求的信息,例如表单数据、HTTP请求头等。HttpServletResponse除了提供用于指定HTTP应答状态(200、404等)、应答头(ContentType、SetCookie等)的方法之外,最重要的是它提供了一个用于向客户端发送数据的PrintWriter。对于简单的Servlet来说,它的大部分工作是通过println语句生成向客户端发送的页面。 doGet()和doPost()方法会抛出两个异常,因此必须在声明中包含二者。另外,还必须导入java.io包(包含PrintWriter等类)、javax.Servlet包(包含HttpServlet等类)以及javax.Servlet.http包(包含HttpServletRequest类和HttpServletResponse类)。 doGet()和doPost()这两个方法是由service()方法调用的,有时可能需要直接覆盖service()方法。Servlet处理GET和POST两种请求时,要输出HTML还有两个额外的步骤要做: 告诉浏览器接下来发送的是HTML;修改println()语句,构造出合法的HTML页面。 6. 问题与思考 试编写Servlet程序,输出自己的姓名。 提示为了防止乱码,最好在Servlet程序中加上以下两条语句。response.setContentType("text/html;charset=GBK"); request.setCharacterEncoding("GBK"); 1.2JSP 程 序 HelloWorldJSP.wmv 1. JSP的基本概念 2. JSP在Tomcat中的配置JSP(Java Server Pages)是一种实现普通静态HTML和动态HTML混合编码的技术,许多由CGI程序生成的页面大部分仍旧是静态HTML,动态内容只在页面中有限的几个部分出现。但是包括Servlet在内的大多数CGI技术及其变种总是通过程序生成整个页面。 1. 实例 用Java编写JSP程序,发送一个HTML网页。 2. 分析 JSP遵循脚本语言的编制标准,是为解决Servlet中编程的困难而开发的技术,因此JSP在程序的编写方面比Servlet要容易得多。 3. 代码实现 1.<html> 2.<head> 3.<title>一个简单的JSP示例</title> 4.</head> 5.<body> 6.<h1><%out.println("Hello World");%></h1> 7.</body> 8.<html>程序中的第6行向浏览器发送Hello World。程序中out是JSP的默认对象,可以直接引用,不像在Servlet中需先定义。该语句可以简写为<%="Hello World"%>。 4. 测试与运行 继续用Tomcat作为Web容器。把该文件存放在<CATALINA_HOME>/webapps/ROOT目录下,然后在浏览器地址栏中输入http://localhost:8080/HelloWorld.jsp,JSP程序运行效果如图16所示。 图16运行JSP程序的结果 5. 技术分析 Servlet是一种在服务器端运行的Java程序,Sun首先发展Servlet,其功能较强,体系设计也较先进,只是它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以编写和修改HTML非常不方便。 后来Sun推出JSP,把JSP标签(Tag)镶嵌到HTML语句中,大大简化和方便了网页的设计与修改。虽然JSP是以Servlet为基础开发的,但两者有诸多不同,Servlet与JSP区别如下。 (1) 编程方式不同 JSP是为了解决Servlet中相对困难的编程技术而开发,因此,JSP在程序的编写方面比Servlet要容易得多,Servlet严格遵循Java语言的编程标准,而JSP则遵循脚本语言的编程标准。 (2) Servlet必须在编译以后才能执行 JSP并不需要另外进行编译,JSP 容器会自动完成这项工作,而Servlet在每次修改代码之后都需要编译完才能执行。 (3) 运行速度不同 由于JSP 容器将JSP程序编译成Servlet的时候需要一些时间,所以JSP的运行速度比Servlet要慢一些。不过JSP页面处理过程能够做到一次加载可多次重复执行,即JSP容器接到请求以后会确认传递过来的JSP是否有改动,如果没有改动,将直接调用JSP编译过的Servlet类,并提供给客户端解释执行;如果JSP文件有所改变,JSP容器将重新将它编译成Servlet类,然后再提交给客户端。 6. 问题与思考 编写JSP程序,输出自己的姓名。 提示为了防止乱码,最好在JSP中第一行加上语句:<%@page language="java" contentType="text/html;charset=GBK" %>第2章第2章〓HTML 入 门Chapter 22.1HTML基本知识 1. HTML的基本结构 2. HTML的<a>标签 3. HTML的<table>标签用HTML编写的超文本文档称为HTML文档,它独立于操作系统平台。一直被用作WWW(World Wide Web)的信息表示语言,用于Homepage的格式设计和WWW上Homepage之间的连接信息。使用HTML语言描述的文件,需要通过WWW浏览器显示出效果。 1. 实例 下面通过实例介绍一个很重要的实现超链接的<a>标签,设计一个链接到例11的网页。 2. 分析 锚标签<a></a>用来定义一个超链接,超链接的目标用href属性来定义。链接可以是绝对的,比如完整的http://www.baidu.com;也可以是相对的,即相对于当前页面来说。所以,假设有另外一个HTML文档hello.html,而该文档又恰与当前页面在同一个目录下,其中一行代码可以写成<a href="hello.html">到另一个网页</a>。 超链接不仅可以链接到其他的HTML文档,也可以链接到页面上的其他文件。 3. 代码实现 1.<html> 2.<head> 3.<title>超链接</title> 4.</head> 5.<body> 6.单击<a href= "helloworld.html">这里</a>转到其他网页 7.</body> 8.</html>程序中第6行<a>标签的href参数列出链接的网页。 4. 测试与运行 在浏览器中打开link.html后,效果如图21所示。 图21打开该网页后的效果 单击“这里”超链接,转到了另一个网页,如图22所示。 图22链接的网页 5. 技术分析 HTML可以加入图片、声音、动画、影视等内容,还可以从一个文件跳转到另一个文件,与世界各地主机的文件相链接。 (1) HTML的基本结构 超文本文档分文档头和文档体两部分。在文档头里对这个文档进行了一些必要的定义,而在文档体中才是要显示的各种文档信息。<html> <head> 头部信息 </head> <body> 文档主体,正文部分 </body> </html>HTML语言使用标签对的方法编写文件,既简单又方便,它通常使用<标签名></标签名>来表示标签的开始和结束(例如<html></html>标签对),因此,在HTML文档中这样的标签对都必须是成对使用的。下面首先介绍一下HTML的基本标签。 (2) <html></html> <html>标签用于HTML文档的最前边,用来标识HTML文档的开始。而</html>标签则恰恰相反,它放在HTML文档的最后边,用来标识HTML文档的结束。两个标签必须成对使用。 (3) <head></head> <head>和</head>构成HTML文档的开头部分,在此标签对之间可以使用<title></title>、<script></script>等标签对,这些标签对都是用来描述HTML文档相关信息的,<head></head>标签对之间的内容是不会显示出来的,所有标签必须成对使用。 (4) <body></body> <body></body>是HTML文档的主体部分,在此标签对之间可包含<p>、</p>、<h1>、</h1>、<br>、<hr>等众多的标签,它们所定义的文本、图像等将会显示出来。其中<html>在最外层,表示这对标签间的内容是HTML文档。有一些Homepage省略<html>标签,因为.html 或.htm 文件被Web浏览器默认为是HTML文档。<head> 之间包括文档的头部信息,如文档总标题等,若不需头部信息,则可省略此标签。<body> 标签一般不省略,表示正文内容的开始。 (5) <title></title> 使用过浏览器的人可能都会注意到浏览器窗口最上边蓝色部分显示的文本信息,那些信息一般是网页的“主题”,要将网页的主题显示到浏览器的顶部其实很简单,只要在<title></title>标签对之间加入要显示的文本即可。 注意<title></title>标签对只能放在<head></head>标签对之间。 (6) 表格 表格由<table>标签来定义。每个表格均有若干行,由<tr>标签定义,每行被分割为若干单元格,由<td>标签定义。字母td是指表格数据(table data),即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等。<table border="1"> <tr> <td>row 1, cell 1</td> <td>row 1, cell 2</td> </tr> <tr> <td>row 2, cell 1</td> <td>row 2, cell 2</td> </tr> </table>浏览器显示结果如图23所示。 图23简单表格效果 如果不定义边框属性,表格将不显示边框。 6. 问题与思考 (1) 利用超链接标签<a>编写网页,当单击本校名称后,链接到本校的网站。 (2) 分别用Servlet和JSP编写程序,当一个表单提交后,提示接收到了表单请求。 (3) 用JSP编写程序,输出九九乘法表。 2.2在HTML中运用CSS 1. CSS样式规则构成 2. CSS的选择器 3. CSS操作字体 4. CSS控制文字定位 5. CSS 改变列表前标识 6. CSS 控制元素的背景 7. CSS控制空格及边框CSS(Cascading Style Sheet)即样式表。CSS可以扩展HTML的功能。 1. 实例 编写程序HTML网页,设置超链接和<p>标签的字体和背景颜色。 2. 分析 CSS可以重新定义 HTML 元素的显示方式。CSS样式表通常在HTML里的<style>标签中定义。 图24CSS示例3. 代码实现 1.<html> 2.<head> 3.<style> 4.a {color: red} 5.p {background-color:blue; color:white} 6.</style> 7.</head> 8.<body> 9.<a href= "http://www.sziit.com.cn">深圳信息职业技术学院</a> 10.<p>注意字体和背景颜色</p> 11.</body> 12.</html>程序第3~6行中,a {color: red}用于设置超链接文字颜色为红色,p {backgroundcolor:blue; color:white}用于设置<p>标签的字体颜色为白色,背景用蓝色。 4. 测试与运行 用浏览器打开cssshow.html网页,结果如图24所示。 从结果中可以看到,超链接文字是红色字体,在<p>标签中的内容是白色字体、蓝色背景,这都是由网页中的<style>标签设置的效果。