Servlet开发(一)
1. Servlet简介
Servlet是服务器端程序,主要用来交互式地浏览和修改数据,生成动态web内容。Servlet是SUN公司提供的一个接口,广义的Servlet可以指任何实现了Servlet这个接口的类。Servlet生成动态web内容的过程包含以下这些内容:
1. 客户端发送请求至服务器端;
2. 服务器将请求发送至Servlet;
3. Servlet生成响应内容并将其传给服务器;
4. 服务器将响应返回给客户端;
用户若想要开发一个动态web资源,也就是开发一个java程序向浏览器输出数据,需要完成以下两个步骤:
1. 编写一个java类实现Servlet接口;
2. 将开发好的java类部署到web服务器中;
2. Servlet的运行过程
Servlet程序是由web服务器调用,web服务器接收到客户端的Servlet请求后:
1. Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步;
2. 装载并创建该Servlet的一个实例对象;
3. 调用Servlet实例对象的init()方法;
4. 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去;
5. WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法;
Servelt调用图如下:

3. 在eclipse中开发Servlet
在eclipse中新建一个web project,鼠标右击eclipse中左侧的空白部分,点击new-->Danamic Web Project,输入工程名称,点击next,记得勾选generate web.xml。

eclipse会自动创建下图所示目录结构:

上图中,工程名为MyWebProject,该工程部署时,在webapps目录下就会有一个MyWebProject的web应用;
src:java程序的开发目录,该目录下所有编写的java程序在部署时,会自动部署到MyWebProject/web-inf/classes目录下;
WebContent:对应于web应用的根目录,该目录下的所有子文件和子文件目录在部署时,会原封不动地发布到web应用目录下。
3.1 Servlet接口实现类
Servlet框架主要包含两个包,Javax.servlet和javax.servlet.http。在javax.servlet中定义了所有的Servlet类都必须实现和扩展的通用接口和类,在javax.servlet.http包中定义了采用http协议的HttpServlet类。
Servlet接口SUN公司定义了两个默认的实现类:GenericServlet和HttpServlet,他们之间的继承关系如下图:

GenericServlet
先来看看Java EE API帮助文档中GenericServlet这个类继承的类和实现的接口。

可以看出,GenericServlet是Servlet和ServletConfig接口的实现类,其中的service()方法是一个抽象方法。也就是说,GenericServlet类实现了Servlet和ServletConfig接口,实现了除了service()之外的其他方法。在创建Servlet对象时,可以继承GenericServlet类来简化程序的代码,但需要实现service()方法。如果新建的servlet程序直接继承GenericServlet接口会使开发更简洁。

HttpServlet
HeepServlet指能够处理http请求的Servlet,它在原有的servlet接口上添加了一些处理http协议的方法。它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。
HttpServlet在实现Servlet接口时,覆写了service()方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet()方法;如为Post请求,则调用doPost()方法。因此,开发人员在编写Servlet时,通常只需要覆写doGe()t或doPost()方法,而不要去覆写service()方法。
3.2 通过eclipse创建和编写Servlet
在之前新建的web应用中,找到src开发目录,右击新建包比如:MyServlet,之后右击MyServlet,新建Servlet,填写ClassName比如MyServletDemo,出现如下的界面:

点击next,URL mappings是在web.xml中配置Servlet的名字和Servlet的URL访问地址,如果不修改,全部使用默认的即可。

点击next,接下来是勾选需要重写的方法:

点击finish完成创建。创建好的MyServletDemo中会有如下的代码内容。
package MyServlet; import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class MyServletDemo
*/
@WebServlet("/MyServletDemo")
public class MyServletDemo extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public MyServletDemo() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }
3.3 启动服务器并部署项目
右键单击该项目,选择Run As--->Run on Server,选择Tomcat服务器,点击finish完成。

在地址栏输入:http://localhost:8081/MyWebProject/MyServletDemo 访问这个servlet。

注意:为了让Servlet能响应用户请求,还必须将Servlet配置在web应用中。从Servlet3.0开始,配置Servlet有两种方式:
- 在Servlet类中使用@WebServlet Annotation进行配置。
- 在web.xml文件中进行配置,我们用web.xml文件来配置Servlet,需要配置<servlet>和<servlet-mapping>。
在本项目的配置中,使用的是@WebServlet Annotation进行配置,体现在代码中:

这样配置的效果和在web.xml中配置的效果一样,如果在web.xml中配置,需要如下做法:

只要在浏览器地址栏输入“http://Tomcat中配置的主机名:端口号/web项目名/@WebServlet Annotation中的映射名称”就可以进行访问了。
更多精彩内容,欢迎搜索微信公众号“程序员考拉”!
Servlet开发(一)的更多相关文章
- java web学习总结(五) -------------------servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- javaweb学习总结(五)——Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- Servlet开发详解
一.Servlet简介 Servlet是sun公司提供的一门用于动态web资源的技术 sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源,需要完成两个步骤: 编写一个J ...
- JavaWeb---总结(六)Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- javaWeb中servlet开发(5)——WEB开发模式:Mode I与Mode II
1.servlet开发 2.model I模式 客户端通过访问JSP,调用里面的javabean,而通过javabean调用处理数据库的操作,javabean中有专门处理数据库的操作,数据库主要以DA ...
- javaweb学习之Servlet开发(二)
javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...
- Servlet开发配置
本文主要简单实践一下servlet开发相关开发 1.Servlet的创建 两种方法: 创建普通的java类,继承自HttpServlet类,在通过手动配置web.xml文件注册Servlet对象,比较 ...
- javaWeb中servlet开发——过滤器
servlet开发--过滤器(filter) servlet有三种,分为简单servlet.过滤器servlet.监听servlet 简单servlet是作为一种程序所必须的开发结构保存的,继承htt ...
- java web 学习五(servlet开发1)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)
一:servlet开发入门 servlet是sun公司一门开发动态web资源的技术,下面编写一个servlet入门程序: 1:在tomcat服务器webapps目录下新建firstServlet目录, ...
随机推荐
- CSS动态定位
$(document).ready(function(){ $('body').on('click', '#start_timer', function() { var laydate = $(&qu ...
- 树莓派 Raspbian
备注,从右往左分别是:无线鼠标一个, HDMI转VGA接口一个,网线一根,小米充电宝电源线一个.树莓派Pi 3 一台,包括读卡器一个+32G class10 SD卡一块.最后俩个U盘作为备用里面有Ar ...
- 极光开发者沙龙 JIGUANG MEETUP —— 移动应用性能优化实践
活动背景 移动互联网时代,各大互联网公司都已将自己的产品和服务全面移动化,各类新产品功能都会优先在移动 App 上尝试. 应用性能作为影响用户体验最重要的因素,在开发过程中显得尤为重要. 用户网络环境 ...
- JMessage Android 端开发详解
目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能. 首先,一个最基础的 IM 应用会需要有哪些功能? 用户注册 / 登 ...
- JQuery easyui里面的自动完成autocomplete插件
默认功能 当您在输入域中输入时,自动完成(Autocomplete)部件提供相应的建议.在本实例中,提供了编程语言的建议选项,您可以输入 "ja" 尝试一下,可以得到 Java 或 ...
- Struts2与easyui分页查询
easyui里面分页查询:在easyui框架里面已经进行一些分装,所以我们只要进行后台分页查询即可 web.xml和struts.xml文件的配置的就不需要我多说了,和分页前代码一样,不需要更改: 需 ...
- 本地搭建GitLab
现在很多企业都开始使用gitLab,因为他的权限管理强大,后台项目管理也很方便.下面就介绍本地搭建方法: 为避免损失,建议在虚拟机测试.虚拟机最低配置(内存2G,cpu:2核,硬盘:20G) 1.安装 ...
- 【算法笔记】B1017 A除以B
1017 A除以B (20 分) 本题要求计算 A/B ,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: ...
- nginx(四)-负载均衡
负载均衡,我认为是nginx最重要的功能了.那什么是负载均衡呢. 比如有一个服务,它访问量很大,一台机器吃不消了,怎么办,我们准备两台.分一部分的请求出来.现在有两台服务器提供这个服务.我们访问其中一 ...
- Vue.js路由跳转带参数到模板组件。
从SalesOrderQuery组件跳到SalesOrder组件,并且通过params属性携带数据. handleClick(row) { //alert(row.FSaleName);//获取该行F ...