单亲妈妈古代奋斗史,美能达复印机维修,今生宝贝防辐射服
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://www.lhsxpumps.com/_localhost:8081/mywebproject/myservletdemo 访问这个servlet。
注意:为了让servlet能响应用户请求,还必须将servlet配置在web应用中。从servlet3.0开始,配置servlet有两种方式:
在本项目的配置中,使用的是@webservlet annotation进行配置,体现在代码中:
这样配置的效果和在web.xml中配置的效果一样,如果在web.xml中配置,需要如下做法:
只要在浏览器地址栏输入“http://tomcat中配置的主机名:端口号/web项目名/@webservlet annotation中的映射名称”就可以进行访问了。
更多精彩内容,欢迎搜索微信公众号“程序员考拉”!
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论