最近学着做个ssh的网站,随着一系列问题的产生与解决,网站也大概初具模型,但这些天又被一个问题困扰,怎样实现一输入网址就请求数据库数据后对网站首页进行初始化呢?一般的网站都是一进入index网站首页的初始化就完成的,上过网的人都知道,要实现这种网站首页初始化肯定是有办法的,有人知其然也知其所以然,也许大部分人是知其然而不知其所以然的,像我,呵呵……
首先想到的肯定要发送一个action请求,但这个请求肯定是不能让用户进到你的首页后再点一下链接去完成的,想到了forward的,但以前用的都是forward里面的page值是跳转到一个页面,试了一下,将page里的值换成action请求后,在Struts.xml里再跳转到首页,结果不行!
然后想能不能让服务器启动的时候就完成这里的初始化呢?于是去看web.xml文件,在Struts的配置里有FilterDispatcher这个东东,这是Struts2的基本控制器,想这肯定是在启动时就会被初始化的,继承这个类试试,后来无果,百度了下,知道有个更好的方法实现系统的初始化,实现ServletContextListener这个接口,再在web.xml中配置一个自己的listener就行了,ServletContextListener有两个方法contextInitialized和contextDestroyed,这不就是系统初始化和销毁的方法嘛,其实contextInitialized这个词常常见到,在启动tomcat是控制台的前几行里就有它,就兴奋着去做了,可是当我把需要用到的属性从Spring中注入进来时问题又来了,因为contextInitialized是
在Spring的启动前完成的,这时还没将要注入的bean实例化呢,无奈又放弃了!
又想到在Spring的bean配置中有个init-method的属性,这是在bean的实例化之前指定要执行的方法,希望又来了,编写action,将action配置到Spring中,启动tomcat,给我报了个空指针异常,正是由于init-method那个方法有问题,我需要将一些值放置到session中供首页调用,可是这是通过ActionContext.getContext().getSession()得到的session却总是空的,找了好久也不知道这是为什么,
到现在还是没想通,没办法又放弃了!
用拦截器,呵呵,这个想法只是一闪而过……没办法,发帖求救,好心人说用forward的,啊,这不又回到我的原点了嘛,可是不行啊!百度下想确认forward的page能不能放action,发现貌似在Struts2中是不行的,无意中发现有一个js的方法可以实现从页面自动跳转到action中,哈哈爱死这位大哥了,代码很简单,一句就搞定了:
<script type="text/javascript">
window.location = '要跳转的action';
</script>
将其放到页面上转到一个action,提取数据后再到首页显示,哈哈,搞定!到目前为止,觉得这才是最简单最直接的方法,这样可以让用户访问的时候即时的请求到数据库里的数据,而不是在服务器启动的时候就把数据封装好了,但用户这时候却感觉不到发送的是action请求,而是页面请求。这样就实现了输入网址转到后就请求到了即时的网站首页信息,完成网站首页的初始化。
想想学习真是一件痛苦又快乐的事情,付出了才会有回报,但可能会转一些弯路,现在对我来说也许这是一件好事吧,呵呵...
分享到:
相关推荐
当Servlet容器接收到客户端请求并发现该请求对应的是`ActionServlet`时,如果该Servlet尚未被初始化,则会触发`init()`方法的执行。 - 在`init()`方法内部,首先调用了`initInternal()`方法来处理更具体的初始化...
3. `org.apache.struts2.dispatcher`:这是Struts2的核心包,其中包含Dispatcher类,它负责初始化以及调用Action的execute()方法。 4. `org.apache.struts2.impl`:扩展了XWork的核心功能,定义了StrutsActionProxy...
在Struts2中,Action是处理用户请求的核心组件。当用户通过浏览器发送请求时,Struts2会根据配置文件中的映射找到对应的Action类,并调用该类的execute方法来处理请求。执行完成后,Action会返回一个结果,这个结果...
在Spring与Struts2集成时,Spring可以作为Struts2的依赖注入容器,负责初始化和管理Action类,使得我们在Action中可以直接使用由Spring管理的其他服务组件。 然后,Hibernate作为ORM框架,使得数据库操作更加简单。...
### Struts 2中实现CRUD操作详解 #### 一、引言 CRUD操作是软件开发中最常见的数据处理方式之一,它代表了对数据进行的四种基本操作:创建(Create)、读取(Read)、更新(Update)与删除(Delete)。在企业级应用开发中,...
2. **Action类**:在Struts中,Action类是Controller的主要实现,它是处理用户请求的核心。每个Action类通常对应于一个特定的业务操作,例如添加商品、删除商品等。描述中的“后台管理”可能包含了多个Action类,每...
理解并掌握这些步骤是Java EE开发中必不可少的一部分,它为你后续深入学习Struts2和构建复杂Web应用打下基础。在实际开发中,你可能还需要了解更多关于Struts2的特性,如拦截器、插件、国际化、异常处理等内容。
### JavaScript AJAX 请求与 Struts2 Action 实现详解 在 Web 开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于实现页面局部刷新、异步数据交互等功能,极大地提升了用户体验。本文将深入探讨如何...
在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它通过在动作执行前后插入额外的处理逻辑,实现了对请求处理的增强。拦截器链是由多个拦截器按照特定顺序组成的,每个拦截器都可以执行预处理和后处理任务。...
在Struts2中,`FilterDispatcher`(在较新版本中被`StrutsPrepareAndExecuteFilter`取代)是核心过滤器,它负责将请求路由到合适的Action。 2. **全局变量(Global Variables)**:在Struts2中,全局变量通常是指在...
在Struts2中,视图通常由JSP页面完成,它们通过Struts2标签库(例如s:form, s:textfield等)与Action进行交互,显示和收集用户输入。控制器部分则通过Action类实现,Action类通常继承自Struts2提供的抽象类或实现...
* 在 web.xml 文件中,我们可以配置 Struts2 框架的 Filter,用于将请求路由到 Struts2 框架中。 * 在 struts.xml 文件中,我们可以配置 Struts2 框架的各种常量、Action、结果类型等。 Struts2 的Action Action ...
- 当用户向服务器发送请求时,Struts2的前端控制器FilterDispatcher会捕获到该请求。 - FilterDispatcher根据请求的URI找到对应的Action,并通过拦截器链处理请求。 - Action执行完成后,返回一个Result对象,...
常见的拦截器有ValidationInterceptor(字段验证)、PrepareInterceptor(初始化Action属性)和ResultInterceptor(处理结果)。 **6. 表单和字段验证** Struts2提供了强大的表单验证功能,通过XML或者注解方式定义...
6. **Struts2的生命周期**:包括初始化、请求处理、响应生成等阶段。 7. **Action的注解配置**:Struts2支持通过注解来简化配置,如@Action、@Result等。 8. **.struts2-convention-plugin**:这个插件允许开发者...
学习Struts 2源码,你将能了解到以下知识点: - MVC设计模式的实现。 - Struts 2的拦截器机制,如何自定义拦截器以实现权限控制、日志记录等功能。 - 动作和结果的配置,以及如何使用OGNL表达式进行数据绑定。 - ...
从 org.apache.struts2.dispatcher.FilterDispatcher 开始 Java 代码阅读,我们可以看到 FilterDispatcher 的 init 方法,它负责初始化 Dispatcher 对象,并创建了一个 ActionMapper 实例,以便对请求进行处理。...
- **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...
1. **Action类**:在Struts2中,Action类是业务逻辑的主要载体,负责处理用户的请求。每个Action类对应一个特定的URL请求,处理完业务逻辑后,会返回一个Result,决定页面跳转的方向。 2. **配置文件**:Struts2的...