servlet学习
一直想学习java web开发,但不知道从何着手,查阅了相关资料后决定从servlet开始学习。
一个最基本的 Java Web 项目所需的 jar 包只需要一个 servlet-api.jar,共有 2 个包,分别是 javax.servlet 和 javax.servlet.http。
Java Web 项目还需要一个非常重要的配置文件 web.xml,关于servlet部分的内容如下:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!
DOCTYPE
web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<
web-app
>
<
servlet
>
<
servlet-name
>hello_world</
servlet-name
>
<
servlet-class
>demo.HelloServlet</
servlet-class
>
<
load-on-startup
>1</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>hello_world</
servlet-name
>
<
url-pattern
>/hello</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
- HttpServlet
- ServetConfig
- ServletContext
- Filter
- FilterConfig
- FilterChain
- RequestDispatcher
- HttpServletRequest
- HttpServletResponse
- HttpSession
- 一些 Listenser 类
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!
DOCTYPE
web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<
web-app
>
<
filter
>
<
filter-name
>helloFilter</
filter-name
>
<
filter-class
>demo.HelloFilter</
filter-class
>
</
filter
>
<
filter-mapping
>
<
filter-name
>helloFilter</
filter-name
>
<
url-pattern
>/*</
url-pattern
>
</
filter-mapping
>
<
servlet
>
<
servlet-name
>hello_world</
servlet-name
>
<
servlet-class
>demo.HelloServlet</
servlet-class
>
<
load-on-startup
>1</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>hello_world</
servlet-name
>
<
url-pattern
>/hello</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
Servlet接口有五个方法,其用法如:public void init(ServletConfig config)throws ServletException
public void service(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException
public void destroy()
public ServletConfig getServletConfig()
public java.lang.String getServletInfo()
在Servlet的五个方法中,init,service和destroy是servlet的生命周期方法。在servlet类已经初始化之后,init方法将会被servlet容器所调用。servlet容器只调用一次,以此表明servlet已经被加载进服务中。init方法必须在servlet可以接受任何请求之前成功运行完毕。一个servlet程序员可以通过覆盖这个方法来写那些仅仅只要运行一次的初始化代码,例如加载数据库驱动,值初始化等等。在其他情况下,这个方法通常是留空的。servlet容器为servlet请求调用它的service方法。servlet容器传递一个javax.servlet.ServletRequest对象和javax.servlet.ServletResponse对象。ServletRequest对象包括客户端的HTTP请求信息,而ServletResponse对象封装servlet的响应。在servlet的生命周期中,service方法将会给调用多次。当从服务中移除一个servlet实例的时候,servlet容器调用destroy方法。这通常发生在servlet容器正在被关闭或者servlet容器需要一些空闲内存的时候。仅仅在所有servlet线程的service方法已经退出或者超时淘汰的时候,这个方法才被调用。service方法从ServletResponse对象获得java.io.PrintWriter实例,并发送字符串到浏览器。