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

当web项目启动时自动执行类代码

阅读更多
方法1:web服务启动时自动加载servlet


就是写一个servlet,在init()方法中写好想要执行的程序,
同时,在web.xml配置文件中指出
<servlet>    <servlet-name>XXXX</servlet-name>    <servlet-class>XXXX</servlet-class>    <load-on-startup>1</load-on-startup></servlet>
其中粗体部分即可实现tomcat启动时执行该servlet,Jboss中同样适用~
load-on-startup的值必须为整数
当load-on-startup值为负整数或者未指定时,容器在该servlet被调用时加载
当其值为0和正整数时,容器启动时加载,值越小,优先级越高


方法2:让服务启动或停止时自动执行代码
原理是使用servlet的监听器,建立一个servlet类并且实现ServletContextListener 接口:
import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class TestListener implements ServletContextListener {  public void contextInitialized(ServletContextEvent event) {  //启动时要自动执行的代码
  }  public void contextDestroyed(ServletContextEvent event) {  //停止时要自动执行的代码
  }}
在web.xml中添加一个listener ,以便让该servlet类自动执行,在web.xml中添加如下内容:
     < listener >      < listener-class > TestListener </ listener-class >      </ listener >listener-class里面的内容就是刚才添加的servlet类


例:

web.xml如下
     <!--
<!- 初始化数据库 ->
<listener>
<listener-class>main.java.com.qxbg.init.InitDataSource</listener-class>
</listener>
<!- 初始化页面模块显示的数据 ->
<listener>
<listener-class>main.java.com.qxbg.init.InitIndexShowBox</listener-class>
</listener>


<servlet>
<servlet-name>initdata</servlet-name>
<servlet-class>main.java.com.qxbg.init.Init</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
-->

<servlet>  
    <servlet-name>InitialSetServlet</servlet-name>  
    <servlet-class>main.java.com.qxbg.init.InitIndexShowBox</servlet-class>  
    <load-on-startup>1</load-on-startup>  
</servlet>

类代码如下:

InitDataSource.java
package main.java.com.qxbg.init;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import net.abbp.dao.spring.manager.DataSourceManager;

/**
* 初始化数据源
*
* @version 1.0
* @author <a herf="chenbin_2008@126.com">chenbin</a>
* @since EQ 1.0
*
* <pre>
* 历史:
*      建立:  Jul 17, 2012 chenbin
* </pre>
*/
public class InitDataSource implements ServletContextListener {

public InitDataSource(){
System.out.println("InitDataSource被实例化了");
DataSourceManager.INSTANCE.initDataSources(this.getClass().getClassLoader().getResourceAsStream(
"resources/datasource.xml"));
}

public void contextInitialized(ServletContextEvent arg0) {
System.out.println("InitDataSource被实例化了");
DataSourceManager.INSTANCE.initDataSources(this.getClass().getClassLoader().getResourceAsStream(
"resources/datasource.xml"));
}

public void contextDestroyed(ServletContextEvent arg0) {

}

public static void main(String[]s){
new InitDataSource();
}
}

InitIndexShowBox.java
package main.java.com.qxbg.init;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import main.java.com.qxbg.model.entity.Content;
import main.java.com.qxbg.utils.ContentShowBox;
import net.abbp.dao.DaoFactory;
import net.abbp.dao.IDao;
import net.abbp.dao.condition.DefaultCondition;
import net.abbp.dao.condition.ICondition;
import net.abbp.dao.spring.manager.DataSourceManager;

/**
* 服务器启动时初始化模块数据
*
* @version 1.0
* @author <a herf="chenbin_2008@126.com">chenbin</a>
* @since EQ 1.0
*
* <pre>
* 历史:
*      建立:  Aug 1, 2012 chenbin
* </pre>
*/
public class InitIndexShowBox extends HttpServlet {
private static final long serialVersionUID = 4907822263290955712L;
private static String authorityconf = "WEB-INF/authority.txt";

public void init() throws ServletException {
ServletContext context = this.getServletContext();
System.out.println("InitDataSource被实例化了");
DataSourceManager.INSTANCE.initDataSources(this.getClass().getClassLoader().getResourceAsStream(
"resources/datasource.xml"));
// 用户审批信息
ContentShowBox userBox = this.initUserBox();

// 区县工作动态
ContentShowBox qxWorkBox = this.initQxWorkBox();

// 科研动态
ContentShowBox scienticBox = this.initScientic();

// 其他
ContentShowBox otherBox = this.initOther();

// 新闻信息通知
ContentShowBox newsInfoBox = this.initNewsInfo();

//存入map
Map<String,ContentShowBox> boxMap = new HashMap<String,ContentShowBox>();
boxMap.put("userBox", userBox);
boxMap.put("QxWorkBox", qxWorkBox);
boxMap.put("scienticBox", scienticBox);
boxMap.put("otherBox", otherBox);
boxMap.put("newsInfoBox", newsInfoBox);
// 将map存入Applocation
context.setAttribute("initBox",boxMap);
// context.setAttribute();
// context.setAttribute();
// context.setAttribute();
// context.setAttribute();
}

// 初始化用户审批信息
private ContentShowBox initUserBox() {
ContentShowBox box = new ContentShowBox();

// ......

// box = this.get5(list);
return box;
}

// 初始化新闻信息通知
private ContentShowBox initNewsInfo() {
ContentShowBox box = new ContentShowBox();
List<Content> list = new ArrayList<Content>();
list = this.selectBySql("新闻信息通知");
box = this.get5(list);
return box;
}

// 初始化区县工作动态
private ContentShowBox initQxWorkBox() {
ContentShowBox box = new ContentShowBox();
List<Content> list = this.selectBySql("区县工作动态");
box = this.get5(list);
return box;
}

// 初始化科研动态
private ContentShowBox initScientic() {
ContentShowBox box = new ContentShowBox();
List<Content> list = this.selectBySql("科研动态");
box = this.get5(list);
return box;
}

// 初始化其他
private ContentShowBox initOther() {
ContentShowBox box = new ContentShowBox();
List<Content> list = this.selectBySql("其他");
box = this.get5(list);
return box;
}

/**
* 取出最近的新闻信息
*
* @param list
* @return
*/
private ContentShowBox get5(List<Content> list) {
ContentShowBox box = new ContentShowBox();
// 获得‘容量’
int maxSize = box.getMaxSize();
for (int i = 0; i < maxSize; i++) {
box.add(list.get(i));
}
return box;
}

/**
* 根据分类条件查询出对应的数据
*
* @param clas
* @return
*/
private List<Content> selectBySql(String clas) {
List<Content> list = new ArrayList<Content>();
IDao dao = DaoFactory.INSTANCE.newDao();
ICondition icn = new DefaultCondition("clas", clas);
list = dao.query(Content.class, icn);
return list;
}
}
分享到:
评论

相关推荐

    WEB服务器启动时加载一个ServerSocket服务

    &lt;description&gt;Socket服务随web启动而启动 &lt;listener-class&gt;service.ServerSocketListener ``` 值得注意的是,尽管也可以通过`&lt;servlet&gt;`标签来实现类似的功能,但这种方式在服务器关闭时可能会导致资源未被...

    JAVA项目服务器启动时自启动指定的Servlet,并定时执行任务

    在Java Web开发中,我们经常需要在服务器启动时自动加载特定的Servlet,并让它们执行一些初始化操作或定时任务。这通常涉及到对Web应用的配置文件`web.xml`以及Servlet类本身的编程。以下将详细讲解如何实现这个功能...

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

    在Web服务开发中,Servlet是Java Web应用的核心组件之一,用于处理HTTP请求并响应客户端。在Web服务启动时自动...这样,Web服务启动时就会自动加载Servlet并执行相应的数据库操作,提高了系统的响应速度和用户体验。

    java web项目自动打补丁包 web工程项目 自动化 补丁包

    总结来说,这个Java Web项目的自动打补丁包流程利用了Maven进行项目构建,通过bat脚本启动自动化,使用SVN记录版本变化,而Python脚本则负责解析日志并智能地更新指定文件。这种自动化方法大大提高了开发效率,降低...

    java web 项目 自动部署

    Java Web项目的自动部署是开发流程中的重要一环,它能够极大地提高开发效率,减少手动部署的时间和出错可能性。在本项目中,我们利用Apache Tomcat服务器进行自动化部署,具体的步骤和关键知识点如下: 首先,我们...

    jenkins自动化部署流程-web项目

    ### Jenkins自动化部署流程详解——Web项目 #### 一、项目背景与目标 随着软件开发项目的不断迭代和更新,持续集成和持续部署(CI/CD)成为提升开发效率和软件质量的关键手段之一。Jenkins作为一款开源的持续集成...

    maven构建web项目

    5. **构建项目**:执行`mvn clean package`命令,Maven会清理之前的构建产物,编译源代码,运行测试,并最终打包成WAR文件。 6. **部署到Tomcat**:将生成的WAR文件(如`target/webdemo.war`)复制到Tomcat的`...

    定时启动任务--跟随web容器启动

    这些任务通常与Web应用一起运行,即当Web容器启动时自动初始化并开始执行。本文将详细介绍如何实现定时启动任务,并确保其能够跟随Web容器一起启动。 #### 一、实现原理 要实现定时启动任务跟随Web容器启动,主要...

    jetty启动的maven web项目

    除了基本的启动方式,Jetty插件还支持许多高级特性,如热部署(自动检测代码变化并重新加载)、配置自定义服务器端口、添加额外的JAR到类路径等。通过调整`jetty-maven-plugin`的配置,可以满足各种复杂的需求。 ...

    程序启动自动执行sql升级脚本

    【程序启动自动执行sql升级脚本】是一种自动化数据库更新的机制,旨在解决开发过程中sql脚本管理和执行的混乱情况。这种机制通常应用于敏捷开发环境,其中数据库结构会随着业务需求频繁变化,需要定期进行更新。 在...

    java如何实现项目启动时执行指定方法

    这样,当项目启动时, InitListener 类的 contextInitialized 方法将被执行,从而执行指定的方法。 总结来说,使用 ServletContextListener 可以轻松地实现 Java 项目启动时执行指定方法。通过实现这个接口,我们...

    使用Eclipse,WebLogic开发java web项目

    1. 新建项目:在Eclipse中选择“文件”-&gt;“新建”-&gt;“动态Web项目”,输入项目名称,选择目标运行时(如Tomcat或WebLogic),设置项目属性。 2. 结构配置:项目创建后,会自动生成标准目录结构,包括src/main/java...

    web项目编译打包

    当你保存或修改了代码后,Eclipse会自动编译修改过的类文件。如果没有集成开发环境,你可以使用命令行工具如`javac`来手动编译。确保你的项目目录结构遵循标准的Java Web项目结构,例如,Java源代码放在`src/main/...

    Web页面驱动ANSYS Workbench自动化运行实战

    9. **编写按钮执行代码**:实现当用户点击按钮时,脚本能够读取输入参数,更新工程文件,然后调用批处理命令执行ANSYS Workbench脚本。 10. **处理并发问题**:为了避免多个用户同时运行导致的冲突,可以设定全局...

    tomcat启动时,在后台自动执行一线程

    要实现在Tomcat启动时自动执行的Servlet,我们需要在Servlet的`init()`方法中添加代码来创建一个后台线程。`init()`方法是Servlet生命周期中的初始化阶段,当Servlet被加载时,Tomcat会调用这个方法。我们可以在`...

    使用Resin在IDE中快速启动web项目

    【标题】:“使用Resin在IDE中快速启动Web项目” 【描述】:Resin是一款高性能、轻量级的Java应用服务器,尤其适用于处理Web应用程序。它以其高效的Servlet和JSP支持而闻名,对于开发和部署Java Web项目非常方便。...

    web 自动化测试 谷歌浏览器 驱动

    特别是在Web应用开发中,自动化测试工具能够帮助我们快速地验证代码的功能和性能。谷歌浏览器(Chrome)因其速度快、性能稳定而广受欢迎,同时也提供了专门用于自动化测试的驱动程序——ChromeDriver。本篇文章将...

    Idea 部署Web项目

    选择正确的JRE版本对于运行和部署Web项目至关重要,因为不同的Web应用服务器可能需要特定版本的Java环境。 3. **配置编译文件**: 在“Project Structure”窗口中,切换到“Project”选项卡,选择合适的项目SDK,...

    用IDEA IntelliJ创建Web项目工程教程+源代码

    本教程将深入讲解如何利用IntelliJ IDEA创建一个完整的Java Web项目,并提供源代码供学习参考。 首先,我们需要了解Java Web项目的组成部分。它通常包含前端资源(HTML、CSS、JavaScript)、后端服务器逻辑(Java ...

    内嵌式tomcat启动web工程

    内嵌式Tomcat是开发Java Web应用时常用的一种方式,它允许我们将Tomcat服务器与应用程序打包在一起,无需单独部署到外部服务器。这种方式尤其适合于快速开发、测试和演示,因为它简化了部署流程,并且便于自动化构建...

Global site tag (gtag.js) - Google Analytics