首页 > 其他分享 >web启动加载资源

web启动加载资源

时间:2023-10-11 10:02:45浏览次数:34  
标签:web 启动 void System println servlet public 加载


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,启动,void,System,println,servlet,public,加载
From: https://blog.51cto.com/u_3177799/7806750

相关文章

  • HtmlWebpackPlugin作用
    当我们更改了我们的一个entry入口起点的名称,甚至添加了一个新的入口,会发生什么?会在构建时重新命名生成的bundle,但是我们的 index.html 文件仍然引用旧的名称。此时就可以用 HtmlWebpackPlugin 来解决这个问题。在我们构建之前,虽然在 dist/ 文件夹我们已经有了 index.ht......
  • springboot配置启动文件的问题
    1、缘由:用sh命令启动bat时出现错误端口号就找错了。  原bat。启动时发现端口是8081,但我的application.properties写的不是8081啊,为什么会找8081,原来是因为如果你用bat快捷方式启动,他会在bat目录下,找到propertity文件,如果用sh启动,则找不到propertity文件,这时springboot会默......
  • 物联网开发利器:基于web的强大的可拖拽组态软件
    BY组态是一款功能强大的基于Web的可视化组态编辑器,采用标准HTML5技术,基于B/S架构进行开发,支持WEB端呈现,支持在浏览器端完成便捷的人机交互,简单的拖拽即可完成可视化页面的设计。可快速构建和部署可扩展的SCADA、HMI、仪表板或IIoT系统。使用BY组态编辑器,可以创建现代化、可视化、......
  • CTFer blogs--Web-fileinclude
    本题来源攻防世界解题思路:首先分析代码,将cookie中‘language’的值传入lan在后续又使用include调用了lan这个变量,因此可以从此处写入读取flag.php的payload可以使用burpsuite进行抓包后添加cookie值name:languagevalue:php://filter/read=convert.base64-encode/resource=/var......
  • 介绍一款轻量型 Web SCADA 组态软件
    ​随着互联网、物联网技术的快速发展,图扑物联基于多年研发积累和私有部署实践打磨、以及对业务场景的深入理解,推出了适用于物联网应用场景的轻量型云组态软件。该产品采用B/S架构,提供Web管理界面,软件包大小仅50MB,无需安装客户端,可通过浏览器直接访问。图形组态功能,是工业......
  • Asp.Net Core webapi+net6 使用资源筛选器(过滤器) 做缓存
    写一个特性类,用来做标记[AttributeUsage(AttributeTargets.Method)]//只对方法有效publicclassResourceFilterAttribute:Attribute{}我这里使用了MemoryCache来做缓存,也可以使用字典来做,但一定要加上static,否则字典每一次请求都会new一个实例,缓存的东西就丢了private......
  • WEBGpu最佳实践之BindGroup
    介绍在WebGPU中,资源通过GPUBindGroup结构传递给着色器,与支持它的布局定义(GPUBindGroupLayout和GPUPipelineLayout)以及着色器中绑定组的声明一起。这三者——着色器、布局和绑定组——都需要相互兼容,通常在每个阶段都需要重复信息。因此,这个API的这一方面乍一看可能感觉不必要地复......
  • C++ libwebsockets搭建WebSocket服务端及Http客户端、服务端
    https://blog.csdn.net/fantasysolo/article/details/88908948  概念WebRTCWebRTC,名称源自网页即时通信(英语:WebReal-TimeCommunication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联......
  • 解决方案的启动方式
    同一个解决方案下可能会有多个可执行的项目。右键项目→SetasStartupProject,那么每次F5或点击VS中间的Start按钮,都会启动Debug该项目。如果频繁切换解决方案下的多个项目作为可启动项目逐个启动一个解决方案下有多个可执行程序类型的项目,如果要同时启动多个项目,可......
  • Nginx 如何建立多个web服务 使用不同端口
    server{listen8080;server_nameip;#charsetkoi8-r;#access_loglogs/host.access.logmain;article/list/0/jsonlocation/{if($request_method='OPTIONS'){r......