Java Servlet是一个基于Java 技术的Web 组件,运行在服务器端,由Servlet 容器所管理,用于生成动态的内容。Servlet 是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet 规范编写一个Java 类。目前Servlet 最新的版本是Servlet 4.0。进程外Servlet 容器对客户请求的响应速度不如进程内的Servlet 容器,但进程外容器具有更好的伸缩性和稳定性。......
2023-11-21
下面来建立一个简单的Servlet 应用程序。
例2.1:Servlet 版的“Hello World”。
首先需要建立一个Web 项目,取名为“first_servlet”。这里所说的建立一个Servlet 应用程序,并不是建立一个Servlet 类型的项目,因为这样的项目类型并没有,而Servlet 其实就是一个Java 类而已。
对于Java 类,一般需要将其放于某个包中,所以建立一个包用于存放本应用程序的Servlet 类。在Eclipse 中建立Package,如图2.1 所示,选中src 文件夹,单击右键选择“New”➔“Package”。
图2.1 建立Package
弹出“New Java Package”窗体,如图2.2 所示。或者在工具栏中单击包图标也可以快捷弹出建立Package 的窗体。在该窗体中输入包名“com.servlet”,而Source folder(源代码文件夹)默认就填写好了。然后单击“Finish”完成包的建立。
图2.2 填写包名
包建立好之后,就在此包中建立Servlet 类。如图2.3 所示,选中刚建立的包,然后单击右键弹出菜单,选择“New”➔“Servlet”。
图2.3 选择建立Servlet 类
在弹出的新建Servlet 窗体中填写Servlet 类名,而源代码文件夹、包名等IDE 都已提供了默认值,如图2.4 所示。
图2.4 填写Servlet 信息
单击“Next > Next >”按钮,将显示如图2.5 所示的窗体。
图2.5 设置Servlet 在web.xml 中的配置信息
单击“Finish”按钮之后,在包资源管理器中可以看到刚建立的Servlet 类,如图2.6所示。(www.chuimin.cn)
图2.6 包资源管理器视图
可以看出建立Servlet 应用程序主要就是建立的Java 类。
HelloWorldServlet 类的代码如下:
从HelloWorldServlet 类的代码可以看出,Servlet 继承了HttpServlet 类。HttpServlet 类是一个抽象类,扩展了GenericServlet 类。HttpServlet 类用于创建一个适用于Web 站点并支持HTTP 协议的Servlet。一个HttpServlet 的子类应该至少重写表2.1 方法中的一个。
表2.1 HttpServlet 类的常用方法
在HelloWorldServlet 类中,默认重写了HttpServlet 类中的doGet()、doPost()以及init()和destory()等方法。在doGet()和doPost()方法中,首先通过调用HttpServletResponse 类中的getWriter()方法得到一个PrintWriter 类型的输出流对象out,然后调用out 对象的println()方法或者print()向客户端发送字符串,最后关闭out 对象。要通过Servlet 输出“Hello World”也需要使用输出流对象的println()或者print()方法。
若对GET 和POST 请求只作相同处理,可以只编写一个方法的代码实现,然后在另外一个方法中调用已实现的方法。例如将HelloWorldServlet 中的doGet()方法和doPost()方法的实现作如下更改。
启动Tomcat 服务器并打开浏览器,在浏览器中输入以下地址。
程序运行效果如图2.7 所示。
图2.7 第一个Servlet 程序运行效果
有关Java Web应用开发的文章
Java Servlet是一个基于Java 技术的Web 组件,运行在服务器端,由Servlet 容器所管理,用于生成动态的内容。Servlet 是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet 规范编写一个Java 类。目前Servlet 最新的版本是Servlet 4.0。进程外Servlet 容器对客户请求的响应速度不如进程内的Servlet 容器,但进程外容器具有更好的伸缩性和稳定性。......
2023-11-21
视频教学资源掌握请求转发与重定向掌握在Servlet 中处理表单数据掌握Servlet 编程中常见中文乱码的处理了解会话跟踪技术了解Servlet 与线程安全请在预习前完成下列单词的学习,并将单词写在横线上。隐藏域提交显示隐藏域信息2.编写一个HTML 页面模拟用户登录功能,提交到Servlet 中进行验证。当用户名为“admin”和密码为“123456”时,跳转到成功提示页面并显示登录用户名;当用户名和密码错误时,跳转到错误提示页面,效果如下图所示。......
2023-11-21
完成本任务所用到的主要知识点:创建ServletServlet 生命周期编写一个Servlet 测试Servlet 的生命周期。在理论部分学习了Servlet 的生命周期,它包括加载、实例化、初始化、服务和销毁几个阶段。而destroy()方法无法测试出效果,实际上在整个Servlet 的生命周期过程中,destroy()方法也只执行了一次。......
2023-11-21
视频教学资源了解Servlet了解Servlet 容器掌握在Eclipse 中建立Servlet了解Web.xml 配置文件掌握Servlet 的生命周期了解Servlet 体系结构了解Servlet 常用API请在预习前完成下列单词的学习,并将单词写在横线上。Servlet 中输出信息2.创建一个Servlet 应用程序,输出服务器端信息,效果如下图所示。输出服务器端信息3.客户端浏览器不可以向服务器请求的服务是()。A.地址栏输入待访问页面的URL 信息B.使用层叠样式表C.超链接D.表单提交......
2023-11-21
Servlet 作为一种在Servlet 容器中运行的组件,必然有一个从创建到销毁的过程,这个过程通常被称为Servlet 的生命周期。Servlet 的生命周期包括加载、实例化、初始化、服务和销毁几个阶段。下面是具体的Servlet 生命周期,如图2.9 所示。图2.9Servlet 生命周期Servlet 容器装载Servlet 类,并实例化一个Servlet 实例对象。初始化的过程主要是读取永久的配置信息、读取初始化参数、连接数据库等,通常这些都是在Servlet 的整个生命周期仅仅需要执行一次的操作。......
2023-11-21
该Servlet 存在线程不安全问题。表3.3Servlet 实例的线程调度情况从表3.3 中可以清楚的看到,由于lisi 线程对实例变量out 的修改覆盖了zhangsan线程对实例变量out 的修改,从而导致了用户zhangsan 的信息显示在了用户lisi 的浏览器上。所以在实际的开发中也应避免或最小化Servlet 中的同步代码;在Serlet 中避免使用实例变量是保证Servlet 线程安全的最佳选择。所以,ServletContext 属性的访问不是线程安全的。......
2023-11-21
Servlet 体系结构如图2.10 所示。图2.10Servlet 体系结构Servlet 其实就是实现了javax.servlet.Servlet 接口的类,一般通过继承GenericServlet、HttpServlet 等类来实现。javax.servlet 包主要提供了Web 容器能够使用的接口和Servlet 基本类,它不对应于HTTP 协议;javax.servlet.http 包主要包括与HTTP 协议有关的接口和Servlet 类。图2.11Servlet 的层次结构在图2.11 中,列出了javax.servlet 和javax.servlet.http 这两个包中主要的类和接口及其层次结构。这些类和接口可以简单地划分为以下几个类别:Servlet 基本类和接口Web 请求与响应类Servlet 异常类Servlet 其他类......
2023-11-21
相关推荐