Java Web程序设计基础教程(李绪成) 第6章

上传人:E**** 文档编号:89355075 上传时间:2019-05-23 格式:PPT 页数:77 大小:645.50KB
返回 下载 相关 举报
Java Web程序设计基础教程(李绪成) 第6章_第1页
第1页 / 共77页
Java Web程序设计基础教程(李绪成) 第6章_第2页
第2页 / 共77页
Java Web程序设计基础教程(李绪成) 第6章_第3页
第3页 / 共77页
Java Web程序设计基础教程(李绪成) 第6章_第4页
第4页 / 共77页
Java Web程序设计基础教程(李绪成) 第6章_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《Java Web程序设计基础教程(李绪成) 第6章》由会员分享,可在线阅读,更多相关《Java Web程序设计基础教程(李绪成) 第6章(77页珍藏版)》请在金锄头文库上搜索。

1、第6章 系统流程控制,6.1 Servlet 6.2 使用Servlet完成控制 6.3 使用MVC模式 6.4 信息存储 小结 习题6 实训6:编写图书信息添加Servlet,6.1 Servlet 6.1.1 什么是Servlet 从完成的功能上来说,Servlet与JSP完全一样。但是,从编写的角度来说是不一样的:JSP是在HTML或者XML文档中嵌入Java脚本或者JSP标签形成的,是文本文件;而Servlet是纯Java文件,是一个类。所有使用Servlet完成的功能,包括与用户的交互,都是通过Java代码完成的。 Servlet是用Java语言编写的运行在服务器端的小应用程序,能够

2、接收Web客户端的请求,并能对Web客户端进行响应,通常是通过HTTP(HyperText Transfer Protocol)协议进行工作的。 可以认为Servlet是服务器端的Applet(实际上,Applet运行在客户端,而Servlet运行在服务器端)。,6.1.2 Servlet的主要方法 Servlet是一个Java类,通常会有三类方法,分别是: (1) init方法,用于初始化。 (2) destroy方法,用于释放资源。 (3) service方法(服务类方法),对用户的请求进行处理,并对用户进行响应。几乎所有处理功能都在这里完成。这类方法可以有多个,例如doGet和doPos

3、t等。doGet方法可以响应get方式的请求,doPost方法可以响应post方式的请求。通常,表单提交都使用post方式,超链接使用get方式。,6.1.3 编写简单的Servlet 1. 编写Servlet 根据要完成的功能来编写Servlet。功能确定之后,根据Servlet的框架来编写Servlet。这里主要关注编写Servlet的一般过程。 因为Servlet是Java类,所以它与一般的Java类的编写基本相同。具体步骤如下: (1) 创建一个包。假设包名是servlets,创建包的代码如下: package servlets;,(2) 导入用到的包。需要导入的包有javax.ser

4、vlet.*和javax.servlet.http.*,通常还需要导入的包是java.io.*。代码如下: import javax.servlet.*; import javax.servlet.http.*; import java.io.*;,(3) 定义类的基本框架并继承HttpServlet。每个Servlet都必须实现接口Servlet,而这里要编写的Servlet主要是用于HTTP协议的,可以继承实现了Servlet接口的HttpServlet。代码如下: public class HelloServlet extends HttpServlet ,(4) 编写成员方法。Serv

5、let通常不需要成员变量,成员方法包括init、service、destroy等。如果需要对Servlet进行初始化,则需要实现init方法。如果需要在卸载Servlet的时候执行一些功能,则需实现destory方法。一般情况下,根据需要完成的功能只需要实现服务类方法即可。这里只实现doGet方法。服务类方法有两个参数:第一个参数是HttpServletRequest的对象,该参数包含了用户的所有请求信息,要想获取用户的请求信息,必须使用该对象提供的方法;第二个参数是HttpServletResponse的对象,可以通过这个对象对用户进行响应,如果希望对用户进行响应或者设置响应相关的信息,需要

6、使用该对象的方法。,该实例完成的功能是向用户输出一行文字,所以不需要获取用户的请求信息,只需要对用户进行响应即可。在对用户进行响应的时候,需要设定文档类型以及编码方式等,就像在JSP中每个文件都要设置page标签的contentType属性一样。之后要向用户输出一些内容,需要先获取输出流。响应页面的属性设置和输出流的获取都是与响应相关的,需要使用第二个参数来完成。,代码如下: public void doGet(HttpServletRequest request,HttpServletResponse) throws IOException,ServletException response

7、.setContentType(“text/html;charset=gb2312“); PrintWriter out = response.getWriter(); out.println(“); out.println(“Hello World!“); out.println(“); out.println(“Hello World!“); out.println(“); ,从代码可以看出,如果使用Servlet完成对用户的响应,所有的响应内容,包括格式信息等都要通过输出语句进行输出。要是使用JSP完成这个功能,就非常简单了。正因为这个原因,才推出了JSP技术,JSP技术的主要优势就在于

8、与用户进行交互比较方便。所以,如果要完成的功能是与用户进行交互,则应该使用JSP完成。在本书的后续内容中,使用Servlet技术主要完成控制功能。,为了使这个Servlet能够响应post请求,需要实现doPost方法,这时只需要调用doGet方法即可。代码如下: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request, response); 需要把这两个方法添加到前面定义的类HelloServl

9、et中。,2. 编译Servlet Servlet开发所需要的包有javax.servlet.*和javax.servlet.http.*。这些包不是Java标准版的类库,如果没有安装Java EE开发环境,则需要配置环境变量。这些包位于tomcat安装目录下的lib下的servlet-api.jar压缩包中,需要把这个压缩包添加到环境变量中。 假设servlet-api.jar所在的位置为C:Program FilesApache Software FoundationTomcat 6.0lib,需要在环境变量classpath中添加C:Program FilesApache Softwar

10、e FoundationTomcat 6.0libservlet-api.jar。,3. 配置Servlet Servlet编写完之后,作为Web应用的组成部分,需要在配置文件web.xml中进行配置。Servlet的配置包括两部分,第一部分是Servlet的声明,第二部分是Servlet访问方式的设置。 首先是Servlet的声明,使用元素: hello servlets.HelloServlet 用于声明Servlet的名字,这里,hello是Servlet的名字;用于声明Servlet所对应的类,这里,servlets.HelloServlet是这个Servlet所对应的类名。,然后是S

11、ervlet映射,主要配置访问该Servlet的方式,使用元素: hello /hello ,表示Servlet的名字,需要和上面的Servlet声明保持一致;表示访问时候的格式,例如要访问上面这个Servlet需要使用hello作为名字访问。servlet-name和url-pattern可以不相同。服务器接收到请求之后会根据这个url-pattern查找相应的Servlet。,4. 部署Servlet Servlet编写完成之后,需要部署到服务器才能访问,编译好的文件需要放在Web应用的WEB-INFclasses下面。,5. 访问Servlet 对Servlet的访问与对JSP的访问基本

12、相同,可以通过以下三种方式进行: (1) 通过在浏览器中直接输入地址访问: http:/127.0.0.1:8080/test/hello (2) 通过超链接的形式访问: 第一个Servlet (3) 通过表单提交的方式访问: ,6.1.4 Servlet运行原理 图6.1显示了Servlet的运行原理: (1) 服务器接收到客户端的请求时,先判断用户所请求的Servlet对象是否存在: 如果存在,则直接调用Servlet对象的Service方法(间接调用doGet方法或者doPost方法); 如果不存在,则加载Servlet类,创建Servlet对象并实例化,然后调用init方法进行初始化,

13、之后调用Servlet对象的Service方法。 (2) 使用service方法执行的结果对用户进行响应。,图6.1 Servlet的运行原理,在Web应用被卸载或者服务器被关闭的时候,系统卸载Servlet,调用destroy方法释放资源。 Servlet的加载有两种方式: 第一次请求的时候加载。 服务器启动的时候加载。,这两种方式各有利弊。如果第一次请求的时候加载,加载的速度比较慢,但是不浪费空间。如果是启动服务器的时候加载,第一次访问的时候就快了,但是如果一直没有人访问,则这段时间就浪费了空间。 加载Servlet的方式可以在web.xml中声明Servlet的时候配置。如果希望在启动的

14、时候加载HelloServlet,可使用下面的代码声明: hello servlets.HelloServlet 1 ,6.2 使用Servlet完成控制 6.2.1 接收用户的输入信息 在Servlet中,doPost和doGet服务方法中都有一个参数是HttpServletRequest的对象,用户的请求信息存放在该对象中,要获取用户提交的数据需要通过该对象获取。获取用户请求信息的方法如下: String getParameter(String name) String getParamterValues(String name),第一个方法用于获取单值表单元素的值,参数指出要获取的表单元

15、素的名字。例如,用户在输入用户编号的时候使用的表单元素的名字是userid,要想获取用户在这个输入框中输入的值,就可以使用下面的代码: String userid = request.getParameter(“userid“); 如果参数指定的表单元素的名字不存在,则返回null。所以通常在处理的时候,需要先判断返回的结果是否为null。 第二个方法用于获取多值表单元素的值,参数也是表单元素的名字,但是返回值是一个数组。,6.2.2 调用业务方法 因为Servlet是Java类,所以调用业务方法的代码就是我们在Java中学习的调用其他类的方法。首先需要创建所使用的JavaBean的对象,然后

16、再调用业务方法。 要使用UserBean对象,可以使用下面的代码: UserBean user = new UserBean(); 然后调用业务方法,代码如下: boolean b = user.validate(userid,userpass);,6.2.3 使用request存储执行的结果 Servlet完成控制的功能,查询的结果通过视图(JSP文件)显示,需要把查询的结果传递给JSP文件。因为打开这两个文件属于同一次请求,所以共享同一个request。因为共享同一个request,所以在Servlet中把查询结果存储在request中,然后在视图中显示结果。 在登录功能中不需要传递信息。假设需要把使用temp对象保存的查询结果传递到视图,可以使用下面的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号