天天看点

Web开发中的servlet

用途:让服务器端接收浏览器端发来的请求并返回数据。

使用:

1、创建实现了servlet接口的java类,一般继承HttpServlet类

2、在web.xml中注册,并配置访问路径

HttpServlet类:该类实现了原始的servlet接口,并重写了service()方法,主要完成了根据用户访问的类型get或者post,来决定去调用doGet()还是doPost()方法,因此开发者不需要再重写service方法了。

运行过程:

web容器只会在用户第一次访问servlet时实例化servlet,并调用init()方法,而每次用户的访问请求都会调用service()方法。可以通过load-on-startup在web应用启动时就实例化servlet,为系统准备必要的数据等。

<servlet>
        <servlet-name>aa</servlet-name>
        <servlet-class>
            xxx
        </servlet-class>
        <load-on-startup>1</load-on-startup></span>
</servlet>
           

缺省servlet

<servlet-mapping>
         <servlet-name>default</servlet-name>
         <url-pattern>/</url-pattern>
 </servlet-mapping>
           

例子

<servlet-name>aa</servlet-name>
     <servlet-class>xxx</servlet-class>
</servlet>
<servlet-mapping>
     <servlet-name>aa</servlet-name>
     <url-pattern>/*</url-pattern>
</servlet-mapping>
           

Servlet中一些重要的对象

ServletConfig对象

servlet的init方法会接收一个ServletConfig对象,而在web.xml中注册servlet时可以通过<init-param>设置一些参数,这些参数会被存到ServletConfig对象中。

ServletContext对象

容器会为每个web应用创建一个ServletContext对象,可以通过ServletConfig.getServletContext方法获得ServletContext对象。该对象有几个作用:

一、是完成同一个web应用内的各个servlet的通讯。就是在一个servlet中将数据setAttribute()进来,再从另一个servlet中getAttribute得到。

二、得到web应用的参数配置

在web.xml中可以通过<context-param>进行应用级别的参数配置,如下:

<context-param>
         <param-name>url</param-name>
         <param-value>jdbc:mysql://localhost:3306/test</param-value>
  </context-param>
           

然后可以在doGet()方法中

servletContext.getInitParameter("url");      

这样得到。

三、请求转发

在doGet()方法中,servletContext.getRequestDispatcher("另一个servlet").forward(request, response); 
      

四、读取资源文件

InputStream in = this.getServletContext().getResourceAsStream("/db1.properties");