`
ldzyz007
  • 浏览: 715081 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

web启动加载资源

    博客分类:
  • web
阅读更多
1.struts1 plugin
创建类实现接口org.apache.struts.action.PlugIn;
创建一个空构造函数
实现接口方法
配置struts-config.xml添加<plug-in/>元素
例:
public class WileyPlugin implements PlugIn {
  public static final String PROPERTIES = "PROPERTIES";
  public WileyPlugin() { }
  public void init(ActionServlet servlet, ApplicationConfig applicationConfig) throws javax.servlet.ServletException {
    System.err.println("---->The Plugin is starting<----");
    Properties properties = new Properties();
    try {
      File file = new File("/WEB-INF/props.txt");
      FileInputStream fis =new FileInputStream(file);
      properties.load(fis);
      ServletContext context = servlet.getServletContext();
      context.setAttribute(PROPERTIES, properties);
      Properties rProperties = (Properties)context.getAttribute (PROPERTIES);
      System.err.println("---->Prop: LDAP " + rProperties.getProperty("LDAP"));
    }
    catch (FileNotFoundException fnfe) {
      throw new ServletException(fnfe.getMessage());
    }
    catch (IOException ioe) {
      throw new ServletException(ioe.getMessage());
    }
  }
  public void destroy() {

    System.err.println("---->The Plugin is stopping<----");
  }
}
props文件内容:
LDAP=some ldap server name
struts-config.xml:
<plug-in className="wiley.WileyPlugin"/>

2.通过servlet来实现
   新建一个类继承javax.servlet.http.HttpServlet,然后将加载数据的代码放到   init方法就可以了。具体代码如下:
public class StaticClass extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet  
{  
    private static final long serialVersionUID = 1L;  
    private static String title =" StaticClass ";  
      
    public void init(ServletConfig config)   
    {   
        System.out.println("public void init");  
        setdata();  
    }   

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException   
    {  
    }     
      
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException   
    {  
    }  
      
    public void setdata()  
    {  
        try 
        {  
            Properties props = new Properties();  
            props.setProperty("java.naming.factory.initial",  
                    "org.jnp.interfaces.NamingContextFactory");  
            props.setProperty("java.naming.provider.url", "192.168.1.17:1099");  
            props.setProperty("java.naming.factory.url.pkgs",  
                    "org.jboss.naming:org.jnp.interfaces");           
            InitialContext remotectx = new InitialContext(props);  
              
            DeptTempMgr deptTempMgr = (DeptTempMgr)remotectx.lookup("Business/DeptTempMgrBean/remote");  
            InetAddress inetAddress= deptTempMgr.getLocalIp();  
            String ipName = inetAddress.getHostAddress();  
            String homeName = inetAddress.getHostName();  
           System.out.println("远程调用的主机内网ip是:"+ipName);  
            System.out.println("远程调用的主机名是:"+homeName);  
        }  
        catch (Exception e)  
        {  
            System.out.println(e);  
        }  
          
    }  
      

然后在web.xml配置一下:
<servlet>  
    <servlet-name>staticclass</servlet-name>  
    <servlet-class>  
        action.util.StaticClass  
    </servlet-class>  
    <load-on-startup>1</load-on-startup>     
</servlet>  
 
<servlet-mapping>  
    <servlet-name>staticclass</servlet-name>  
    <url-pattern>/servlet/staticclass.jsp</url-pattern>  
</servlet-mapping> 

其中load-on-startup的含义是:容器启动时加载这个servlet的顺序,正常的取值范围是:负数,0-5,如果是负数或者没有这个标签,则容器在启动时不自动加载 这个servlet,如果是0-5,则按照顺序加载这个servlet,执行初始化方法init()。数字是0-5,加载顺序也是0-5。

3.不管是Struts、Struts2还是其他的web层框架,它们目前基于的技术都是Servlet,只要根据web.xml找到那个启动类,我们就能通过覆盖该类的的init()方法来实现系统的初始化工作。可以写一个listener让它实现ServletContextListener接口,在contextInitialized()方法中做想做的事情。将此listener配置到web.xml中,Servlet容器如tomcat会在启动该web应用程序时调用此方法。
public class InitListener implements ServletContextListener {  
 
    public void contextDestroyed(ServletContextEvent sce) {  
        System.out.println("web exit ... ");  
    }  
 
    public void contextInitialized(ServletContextEvent sce) {  
        System.out.println("web init ... ");  
        //系统的初始化工作  
        // ...  
    }  
 

<?xml version="1.0" encoding="UTF-8"?> 
<web-app> 
  <listener> 
    <listener-class>fangwei.listener.InitListener</listener-class> 
  </listener> 
  <filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
  </filter> 
  <filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
  </filter-mapping> 
</web-app> 
 



分享到:
评论

相关推荐

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

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

    flutter_web_loading_animation:为Flutter Web App启动加载加载动画

    "flutter_web_loading_animation"项目正为此目的而设计,它提供了一个启动加载动画,使得Flutter Web App在加载过程中不会显得过于空白和无响应,从而提高用户对应用程序的第一印象。 1. **Flutter Web与加载动画**...

    华为 S5700 web管理加载文件

    启用Web管理服务的命令是 `http server enable`,这条命令会启动交换机上的HTTP服务器,使得设备可以接受来自网络的HTTP请求,从而提供Web管理服务。在华为设备上,通常还需要配置用户名和密码来确保网络安全,例如...

    网站启动加载代码

    当用户打开一个网页,网站启动加载代码会控制页面如何逐步呈现,包括加载资源、执行JavaScript、渲染DOM元素等过程。理解并优化这部分代码对于提升网页性能至关重要。 首先,我们需要了解HTML、CSS和JavaScript在...

    非常好的启动加载js模板

    总的来说,"非常好的启动加载js模板"是为了提升Web应用的启动效率和用户体验而设计的一种技术解决方案。通过合理地运用上述知识点,开发者可以创建出高效、流畅的应用,满足用户对快速响应和优质体验的需求。在实际...

    WKWebView优先加载本地资源文件

    在这个方法中,我们可以检查即将发起的请求URL,如果这个URL指向的是已下载到本地的静态资源,那么就阻止默认的网络请求,改为从本地加载资源。 实现步骤如下: 1. 创建一个WKWebView实例,并设置其...

    web.xml加载顺序与web.xml常用节点解析

    - 当应用服务器启动并加载Web应用程序时,首先读取`web.xml`文件。 - 首先解析的是`&lt;context-param&gt;`节点,这些参数作为全局配置,被转换为`ServletContext`的初始化参数。 - 紧接着,应用服务器创建`...

    动态加载资源

    动态加载资源是软件开发中的一个重要概念,特别是在移动应用和大型Web项目中,它能显著提升应用性能和用户体验。动态加载,顾名思义,是指在程序运行时按需加载资源,而不是在应用程序启动时一次性加载所有资源。...

    web开发自动加载修改后的java文件

    在Web开发过程中,Java开发者经常会遇到一个问题:每次修改了Java源代码后,都需要重新编译并启动服务器才能看到更改的效果,这极大地降低了开发效率。"web开发自动加载修改后的java文件"这一技术就是为了应对这个...

    webgl修改启动界面UniveWeTemp.zip

    Unity WebGL的启动界面通常包括Unity的标志和加载进度条,这是默认设置。但开发者可以根据需求自定义这个界面,比如替换为自己的公司或项目的Logo,以增强品牌识别度。 2. **UniveWeTemp项目** "Universal WebGL ...

    正在加载效果

    "正在加载效果"通常指的是在Web应用或者软件中,用户等待数据或页面加载时显示的一种交互反馈。这种效果有助于提高用户体验,让用户知道系统正在进行后台处理,而不是无响应。在这个话题中,我们将深入探讨两种可能...

    web service第一次启动慢

    4. 应用程序启动过程中的其他因素:除了web service本身,WinForm应用程序在首次运行时也可能需要初始化各种组件、资源加载等,这些都可能导致整体启动时间变长。 5. Web service的网络配置和硬件性能:Web service...

    加载spring 文件,在web.xml中的配置

    当我们谈论“加载Spring文件,在web.xml中的配置”时,主要是指如何在Web应用启动时初始化Spring IoC(Inversion of Control,控制反转)容器并加载配置文件。 1. **使用ContextLoaderListener** `&lt;listener&gt;`标签...

    Tomcat启动顺序

    Tomcat的启动顺序涉及到多个层次的加载,从Bootstrap类开始,逐步加载系统配置、公共库、共享库以及Web应用程序。 【详细知识点】: 1. Bootstrap类: Tomcat的启动始于Bootstrap类,这是Tomcat服务器的主入口点...

    swift-iOS预加载Web页面方案

    预加载Web页面还可以结合预测用户行为,例如,如果用户经常浏览某个特定页面,可以在应用启动时或者空闲时预加载该页面。为了实现这一目标,我们需要收集和分析用户行为数据,然后在适当的时间触发预加载操作。 在...

    分布加载函数

    4. **预加载**:与延迟加载相反,预加载是在用户可能需要之前就开始加载资源。这通常用于预测用户的下一步操作,提前准备好所需资源,减少延迟感。例如,浏览器可能会在用户滚动页面时预加载下一屏的内容。 5. **...

    web.xmllistener、filter、servlet加载顺序.pdf

    它们是最早被加载的组件,因为它们需要在其他服务启动之前进行配置,以便对Web应用的生命周期事件做出响应。例如,如果你有一个监听器负责初始化某个全局对象,那么这个对象会在应用启动时被创建。 2. **Filter...

    自动将模块移动到WebWorkerWebpack加载程序

    标题 "自动将模块移动到WebWorkerWebpack加载程序" 指的是使用特定的Webpack加载器——developit-workerize-loader,来实现JavaScript模块的自动化迁移,使其能够在Web Worker线程中运行。在Web开发中,Web Worker是...

Global site tag (gtag.js) - Google Analytics