Struts2中实现Web项目的初始化工作
Struts2中实现Web项目的初始化工作
注:通常web系统在启动时需要做一些初始化的工作,比如初始化系统全局变量,加载自定义配置文件,启动定时任务等。
一、在Struts中实现系统的初始化工作
在Struts中,我们可以写一个Servlet让它继承于ActionServlet并覆 盖其init()方法,然后修改web.xml文件的Struts启动相关配置来达到目的。
//Java代码
2 package cn.jbit.servlet;
3
4 import javax.servlet.ServletException;
5 import org.apache.struts.action.ActionServlet;
6
7 /**
8 * 系统唯一的Servlet类BaseServlet
9 * 完成系统初始化的工作
10 */
11 public class BaseServlet extends ActionServlet {
12
13 private static final long serialVersionUID = -4743066925691800288L;
14
15 @Override
16 /*
17 * 系 统初始化
18 */
19 public void init() throws ServletException {
20 super.init();
21
22 // 初始化系统全局变量
23 // ...
24
25 // 加载自定义配置文件
26 // ...
27
28 // 启动定时任务
29 // ...
30 }
31
32 }
web.xml中的配置
//配置web.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<!-- struts servlet begin -->
<servlet>
<servlet-name>struts</servlet-name>
<servlet-class>cn.jbit.servlet.BaseServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts/struts-config.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>struts</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- struts servlet end -->
</web-app>
二、在Struts2中实现系统的初始化工作
在Struts2中,我们可以写一个filter让它继承于FilterDispatcher并覆盖其 init()方法,然后修改web.xml文件的Struts2启动相关配置来达到目的。
//Java代码
package cn.jbit.filter; import javax.servlet.FilterConfig;
import javax.servlet.ServletException; import org.apache.struts2.dispatcher.FilterDispatcher; public class BaseFilterDispatcher extends FilterDispatcher { @Override
public void init(FilterConfig arg0) throws ServletException {
super.init(arg0); // 初始化系统全局变量
// ... // 加载自定义配置文件
// ... // 启动定时任务
// ...
}
}
web.xml中的代码
web.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<filter>
<filter-name>struts2</filter-name>
<filter-class>cn.jbit.filter.BaseFilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
/**
*注意思考一个问题:
*不管是Struts、Struts2还是其他的web层框架,它们目前基于的技术都是 Servlet,只要根据web.xml找到那个启动类,我们就能通过覆盖该类的的init()方法来实现系*统的初始化工作。
**/
三、比较优雅的实现系统的初始化工作
以上的实现方式都侵入了框架的原生类,利用Servlet 容器的特性我们可以更优雅的实现系统的初始化工作。 我们可以写一个listener让它实现ServletContextListener接口,在contextInitialized()方法中做 想做的事情。将此listener配置到web.xml中,Servlet容器如tomcat会在启动该web应用程序时调用此方法。
//Java代码
package cn.jbit.listener; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; 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 ... ");
//系统的初始化工作
// ...
}
}
web.xml配置
web.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<listener>
<listener-class>cn.jbit.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>
以上根据平时的代码留下笔记。
Struts2中实现Web项目的初始化工作的更多相关文章
- 部署Eclipse中的Web项目到Tomcat服务器运行
用Eclipse开发Web项目时,可以通过Tomcat服务器运行Web项目,此时Web项目被部署在[WorkSpace]\.metadata\.plugins\org.eclipse.wst.serv ...
- Struts2中访问web元素的四种方式
Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...
- 在Tomcat中部署Web项目的操作方法,maven项目在Tomcat里登录首页报404
maven项目在Tomcat里登录首页报404, 解决:编辑conf/server.xml进行配置<Host>里的<Context>标签里的path. <Context ...
- 在Eclipse中运行Web项目Jsp网页时提示端口被占用的解决办法:Several ports (8005, 8888, 8009) required by Tomcat v9.0 Server at localhost are already in use.
问题: 在Eclipse中运行Web项目Jsp网页启动Tomcat时提示端口被占用: Several ports (8005, 8080, 8009) required by Tomcat v9.0 ...
- 在Tomcat中部署web项目的三种方式
搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...
- 在Eclipse中修改web项目的名称
在Eclipse中修改web项目的名称 一.误区: 单击要修改名称的项目上右键Refactor->Rename,然后修改成另外一个名称 (光这样是不够的,哪怕你再修改web.xml中的displ ...
- 5- 如何把MyEclipse中的web项目导入到Eclipse中运行
from: 如何把MyEclipse中的web项目导入到Eclipse中运行 2016年09月12日 20:57:51 dancheren 阅读数:35329 标签: eclipse 更多 个人分类: ...
- 在Eclipse中调试web项目
由于现在的公司用的是Eclipse开发web项目而且不安装MyEclipse插件,没有myclipse插件就不能在Eclipse中配置web服务器,所以也就不好对web项目进行调试.下面的方法就可以让 ...
- Eclipse中的Web项目自动部署到Tomcat的webapp目录下
Eclipse中的Web项目自动部署到Tomcat 原因 很长时间没用Eclipse了,近期由于又要用它做个简单的JSP项目,又要重新学习了,虽然熟悉的很快,但记忆总是很模糊,偶尔犯错,以前很少写 ...
随机推荐
- jquery easyui DataGrid 数据表格 属性
用法 1. <table id="tt"></table> 1. $('#tt').datagrid({ 2. url:'datagrid_d ...
- Elasticsearch(入门篇)——Query DSL与查询行为
ES提供了丰富多彩的查询接口,可以满足各种各样的查询要求.更多内容请参考:ELK修炼之道 Query DSL结构化查询 Query DSL是一个Java开源框架用于构建类型安全的SQL查询语句.采用A ...
- TCP/IP 协议介绍
转自http://blog.jobbole.com/104886/ 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应 ...
- MySQL and Postgres command equivalents (mysql vs psql)
MySQL and Postgres command equivalents (mysql vs psql) 博客分类: Database From: http://blog.endpoint.c ...
- [已解决] java.net.InetAddress.getHostName() 阻塞问题
在学习java nio的过程中发现某些情况下使用该方法会导致程序阻塞,(情况:服务器,Linux:客户端,WIN10) java.net.InetAddress.getHostName() 阻塞情况如 ...
- 禁止输入中文 与 禁止输入数字在phonegap api环境效果
例子如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- ajax 代码
function ajax(){ var aj=null; if(window.ActiveXObject){ aj = new ActiveXObject("Microsoft.XMLHT ...
- EF获取一个或者多个字段
有时候直接查询出一个实体,比较浪费性能,对于字段比较少的表来说差异不大,但是如果一个表有几十个字段,你只要取出一个字段或者几个字段,而取出整个实体,性能就会有差异了. /// <summary& ...
- sql2008 表名为全数字时查询报错
今天遇到个很奇葩的问题,在写一个应用程序时需要查询表的数据,但是表名是全数字的,直接查询会报错,于是想到给111的表名加一对中括号:即——>select * from [111] 刚开始还是报错 ...
- 备用帖子1Shell(Shell R语言)
shell========================== echo 1 > /proc/sys/vm/drop_caches 清理内存 free -m du -h --max-depth= ...