`
Lives
  • 浏览: 200227 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Web服务启动时自动加载Servlet,并执行service处理

阅读更多
自动加载Servlet的方法介绍:
在web.xml这样定义一个servlet:
<servlet>
<servlet-name>t1</servlet-name>
<servlet-class>com.base.test.T1</servlet-class>
<!-- 如果需要自动加载,加下面一句 -->
<load-on-startup>1</load-on-startup>
</servlet>

<load-on-startup>标记web容器是否在启动的时候就加载这个servlet

当值为0或者大于0时,表示web容器在应用启动时就加载这个servlet;

当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载;

正数的值越小,启动该servlet的优先级越高。


在写这个Servlet里,需要重写init()方法:
package com.base.test;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

public class T1 extends HttpServlet {

public T1() {
super();
}

public void init() throws ServletException {
System.out.println("init t1 ... ");
}
}

重启web容器,在控制台可以看到"init t1 ... "这么一行信息。

然后修改我们的代码,让这个Servlet可以读取数据库的内容,并进行相关的处理。
如果操作数据库用的是spring的HibernateTemplate和JdbcTemplate,访问数据库是以bean注入的方式,在action里注入service的实现,读取数据库数据,其实现在的关键就是得到这个service的实例化对象。

修改后的servlet:
package com.base.test;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.abc.test.Service1;

public class T1 extends HttpServlet {

public T1() {
super();
}

public void init() throws ServletException {
ServletContext sc = getServletContext();
WebApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);


Service1 service = (Service1) ac.getBean("yourServiceId");
List list = service.getList();
// list就是从数据库取到的内容,你可以做相关的处理
}
}


yourServiceId 就是在applicationContext.xml文件里面配置的<bean id="yourServiceId">。





分享到:
评论
1 楼 Franciswmf 2012-10-16  
这种做法,web服务会启动两次!你知道原因吗?

相关推荐

    Web服务启动时自动加载Servlet,并读取数据库内容

    然后我们来修改我们的代码,让这个Servlet可以读取数据库的内容,并进行相关的处理。 我操作数据库用的是spring的HibernateTemplate和JdbcTemplate,访问数据库是以bean注入的方式,在action里注入service的实现,...

    JSP/Servlet Java面试逻辑题

    web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。 通过调用service()方法实现,根据请求的不同调用不同的do***()方法。 结束服务,web容器调用servlet的destroy()方法。 3...

    12-Servlet执行原理.pdf

    1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径。在上图 的URL中,获取的资源路径就是/demo01 2. 查找web.xml文件,是否有对应的标签体内容。 3. 如果有,则在找到对应的...

    Javaweb面试题.docx

    答:Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init 方法进行Servlet 的初始化,请求到达时运行其service 方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,...

    Java™ Servlet 规范.

    目录 ...2.3.4 终止服务(End of Service) .........................................................................................................27 Request .............................

    java微信公众号MVC开发框架

    load-on-startup表示Servlet在web应用启动阶段加载,数字代表了启动次序,如果项目使用了springmvc框架,可以调整该数字为2,放到springmvc框架后面启动加载,但实际上Servlet的启动次序并没有太大的关系。...

    Java服务器程序设计

    3.2.1 加载servlet[/font] 3.2.2 servlet的标识[/font] 3.2.3 调用servlet[/font] 3.3 jsdk的安装与使用[/font] 3.3.1 servletrunner[/font] 3.3.2 在netscape服务器上安装jsdk[/font] 3.3.3 在apache服务器上安装[/...

    Servlet3.1规范(最终版) PDF

    ........................................................................................................................................17 2.3.4 终止服务(End of Service)..................................

    超级有影响力霸气的Java面试题大全文档

     Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    CXF WebService整合Spring示例工程代码demo

    -- 设置Spring容器加载配置文件路径 --&gt; &lt;param-name&gt;contextConfigLocation &lt;param-value&gt;classpath*:applicationContext-server.xml &lt;listener-class&gt;org.springframework.web.util....

    ssh(structs,spring,hibernate)框架中的上传下载

    这是Hibernate3引入的新特性,对于包含重量级大数据的表字段,这种抽取方式提高了对大字段操作的灵活性,否则加载Tfile对象的结果集时如果总是返回fileContent,这种批量的数据抽取将可以引起数据库的"洪泛效应"。...

    java 面试题 总结

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    service-info-loader-app

    该应用程序被打包成一个可执行的 WAR 文件,该文件可以从命令行执行,也可以在 servlet 容器中执行。 客户端网页是用 AngularJS 实现的。 我还使用 Angular Translate 来试验国际化的可能性。 我为 Ant 和 Maven ...

    java面试题

    答:servlet实例化时调用init方法,得到请求时调用service方法,service方法自动派遣doget或dopost方法,最后当实例销毁时调用destroy方法。 error和exception有什么区别? 答:error是指错误,通常程序员不能通过...

    一个最简单的SSH框架

    在 struts-config.xml 中定义 , ActionServlet 会加载。 2 ) spring 负责业务层管理,即 Service (或 Manager). 1 . service 为 action 提供统计的调用接口,封装持久层的 DAO. 2 .可以写一些自己的业务方法...

    tomcat环境变量配置

    ROOT\WEB-INF\lib\MyServlet.jar(如果你的servlet的.class打成了.jar文件,则放在 lib下面) ROOT\WEB-INF\classes\HelloWorld.class(把上面生成的HelloWorld.class文件放在这个 里面) 然后在浏览器中输入...

    JavaWeb编程技术沈泽刚版教材课后习题答案

    2、Servlet是在容器中运行的组件,有一个从创建到销毁的过程,其中包括加载和实例化、初始化、提供服务以及销毁几个阶段。其中生命周期方法有init()、service()和destroy()等3个。 3. 答:发生下列事件,浏览器向...

    javaweb上传和显示图片(含源码).zip

    eclipse,在mvc模式下,使用jsp,servlet,dao,service进行文件(图片)上传,存储到mysql和path中,还能查询显示图片。

    疯狂Android讲义源码

     4.1.5 启动其他Activity并返回结果 185  4.2 Activity的回调机制 189  4.3 Activity的生命周期 190  4.3.1 Activity的生命周期演示 190  4.3.2 Activity与Servlet的相似性与  区别 194  4.4 本章小结 195  ...

Global site tag (gtag.js) - Google Analytics