javaWeb-Servlet
什么是Servlet?
Servlet(Servlet Applet) 是Java Servlet的简称,称为小服务程序或者服务连接器,用Java编写的服务器端程序,主要功能在于交互式的浏览和修改数据,生成动态Web内容。
侠义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java应用服务器中。从原理上讲,Servlet可以影响任何类型的请求,但绝大多数情况下Servlet只用来拓展基于HTTP协议的Web服务器。
Servlet架构,在软件里面位置如下:
Tomcat: 很多人用过Tomcat,但是不甚其解,市场上已有许多Web服务器支持Servlet,Tomcat是其中应用的最多的一款。 Apache Tomcat 是一款 Java Servlet 和 JavaServer Pages 技术的开源软件实现,可以作为测试 Servlet 的独立服务器,而且可以集成到 Apache Web 服务器。
这里不做赘述,关于Tomcat具体可见:http://tomcat.apache.org/
生命周期:
方法说明:
init(): 一开始创建,只创建一次,可以简单地创建或加载一些数据,这些数据将被用于Servlet的整个生命周期。
public void init() throws ServletException {
System.out.println("servlet初始化");
}
Service():这一层不用管,只需要重写doGet和doPost方法
service()方法检查HTTP请求类型(GET、POST、PUT、DELETE等),并在适当的时候调用doGet、doPost、doPut、doDelete等方法。 下面是doGet方法和doPost方法
//根据传入的参数来执行响应操作
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("处理get请求方式");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("处理post请求方式");
}
destory():
destory()方法和init()方法一样,被调用一样,在Servlet生命周期结束是被调用。您的Servlet关闭数据库连接、停止后台线程、把Cookie列表或点击计数器写入到磁盘,并执行其它类似的清理活动。在调用的destory()方法之后,servlet对象被标记为垃圾回收。
Servlet部署:
这里是很关键的位置,因为你每写完一个Servlet都需要在配置文件里面部署一下,记住过程当让很简单,但是弄清楚为什么还是很有必要的!
下面以一个案例为例:
如图,写了一个MyServlet实例,在里面重写了doGet()、init()和doPost()方法。现在要将其部署在web.xml中当中,web.xml文件是新建javaWeb工程直接生成的。
现在要写入内容
配置说明:
1.必须含有和,或者和
用来定义servelt的名称,该名称在整个应用中必须是唯一的。
用来指定servlet的完全限定的名称,这里就是servlet类的完整路径。
用来只当应用中jsp文件的完整路径,这个完整路径必须有/开始。
2.要含有和
: 指定相对于Servlet的URL路径。该路径相对于web应用程序上下文的根路径。讲URL映射到某个Servlet,即该servlet处理的URL。
标签中的写法有一下几种:
1. / + 别名
<url-pattern>/mm</url-pattern>
<url-pattern>/mm</url-pattern>
<url-pattern>/MyServlet</url-pattern>
同过这个就可以找到标签,就可以找到对应的servlet类了。
一般推荐使用/+servlet类名来使用,这样可以见名知意,时使用了哪一个servlet类进行处理请求。
2. *.do 或者 *.action
<url-pattern>*.action</url-pattern>
这样的方式,就拦截以action或者do结尾的url请求。
3. /*
<url-pattern>/*</url-pattern>
会拦截所有的请求,包括静态资源(js,img,静态文件)的请求。
4. /名字/servlet的别名
<url-pattern>/mm/*</url-pattern>
通过多级访问路径来找到指定的servlet。
用来指定服务器启动该项目时,默认会打开的页面。
如果想让某个servlet类优先被初始化,可以在标签之间使用2来改变加载的顺序,数字越小加载的越靠后,1为最大,一般推荐使用2就可以了。