`

本文为转载--使Struts2与Servlet并存解决办法

阅读更多
本文转载自:http://www.cnblogs.com/jifeng/archive/2010/08/28/1810706.html
在此感谢作者的友情分享,首次备用。

解决办法:

在Struts2过滤器前增加一个过滤器,使用过滤器转发到servlet上

 

web.xml配置:


view sourceprint?01 <filter>  

02     <filter-name>JSONRPCServlet</filter-name>  

03     <filter-class>filters.ReDispatcherFilter</filter-class>  

04     <init-param>  

05         <param-name>includeServlets</param-name>  

06         <param-value>JRPC</param-value>  

07         <!--注:JRPC为下文配置的Servlet JSONRPCServlet过滤的请求配置 -->  

08     </init-param>  

09 </filter>  

10 <filter-mapping>  

11     <filter-name>JSONRPCServlet</filter-name>  

12     <url-pattern>/*</url-pattern>  

13 </filter-mapping>  

14   

15    

16 <filter>  

17     <filter-name>struts2</filter-name>  

18     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  

19 </filter>  

20 <filter-mapping>  

21     <filter-name>struts2</filter-name>  

22     <url-pattern>*.action</url-pattern>  

23 </filter-mapping>  

24    

25 <filter-mapping>  

26     <filter-name>struts2</filter-name>  

27     <url-pattern>/*</url-pattern>  

28 </filter-mapping>  

29    

30 <!--注:这里同样需要Servlet配置,Filter会转到该Servlet上-->     

31 <servlet>  

32     <servlet-name>JSONRPCServlet</servlet-name>  

33     <servlet-class>  

34         jcore.jsonrpc.servlet.JSONRPCServlet  

35     </servlet-class>  

36     <load-on-startup>2</load-on-startup>  

37 </servlet>  

38 <servlet-mapping>  

39     <servlet-name>JSONRPCServlet</servlet-name>  

40     <url-pattern>/JRPC</url-pattern>  

41 </servlet-mapping> 


 

过滤器的实现类:

 


view sourceprint?01 package filters;  

02    

03 import java.io.IOException;  

04 import java.util.ArrayList;  

05 import java.util.Arrays;  

06    

07 import javax.servlet.Filter;  

08 import javax.servlet.FilterChain;  

09 import javax.servlet.FilterConfig;  

10 import javax.servlet.RequestDispatcher;  

11 import javax.servlet.ServletException;  

12 import javax.servlet.ServletRequest;  

13 import javax.servlet.ServletResponse;  

14 import javax.servlet.http.HttpServletRequest;  

15    

16 public class ReDispatcherFilter implements Filter {  

17    

18     public void destroy() {  

19         // TODO Auto-generated method stub  

20    

21     }  

22    

23     public void doFilter(ServletRequest req, ServletResponse resp,  

24             FilterChain chain) throws IOException, ServletException {  

25    

26         HttpServletRequest request = (HttpServletRequest) req;  

27         String target = request.getRequestURI();  

28         target = target.lastIndexOf("?") > 0 ? target.substring(target  

29                 .lastIndexOf("/") + 1, target.lastIndexOf("?")  

30                 - target.lastIndexOf("/")) : target.substring(target  

31                 .lastIndexOf("/") + 1);  

32    

33         //System.out.println(target);  

34         if (this.includes.contains(target)) {  

35             RequestDispatcher rdsp = request.getRequestDispatcher(target);  

36    

37             //System.out.println("go..............." + rdsp);  

38             rdsp.forward(req, resp);  

39         } else 

40             chain.doFilter(req, resp);  

41     }  

42    

43     private ArrayList<String> includes = new ArrayList<String>();  

44    

45     public void init(FilterConfig config) throws ServletException {  

46    

47         this.includes.addAll(Arrays.asList(config.getInitParameter(  

48                 "includeServlets").split(",")));  

49    

50     }  

51    
分享到:
评论

相关推荐

    struts2开发流程简图

    同样从`struts2-core-2.x.x.jar`中提取并存放在`src`目录下,更名为`struts.properties`。 3. **配置web.xml**: 在`web.xml`中配置Struts2的核心控制器,即`FilterDispatcher`或更新版本中的`...

    Struts所需要的jar包

    总之,Struts 框架通过 JAR 文件提供了一套完整的解决方案,使得开发者可以高效地构建 Java Web 应用。理解这些 JAR 文件的作用和 Struts 的工作原理对于开发和维护基于 Struts 的项目至关重要。

    STRUTS 学习资料

    过滤器架构让Struts 2可以与其他MVC框架并存;Action与结果类型的概念使得业务逻辑和视图跳转更加分离。此外,Struts 2还支持插件化开发,可以集成各种第三方库,如Spring、Hibernate等。学习Struts 2时,会涉及到...

    轻量级Java EE企业应用实战第4版

    Spring MVC是Spring框架的一部分,提供了Web层的解决方案,与Struts2类似,也是基于MVC模式,但更注重解耦和灵活性。 Hibernate是一个流行的ORM(对象关系映射)框架,它允许开发者用Java对象来操作数据库,而无需...

    在线考试系统

    本系统以Java Server Pages(JSP)为核心技术构建,提供了便捷、高效且灵活的在线考试解决方案。JSP是Java平台上的一种动态网页技术,能够将服务器端的编程逻辑与HTML页面内容相结合,为开发人员提供了丰富的功能来...

    webwork培训教程

    - **J2EE Web Framework现状**:WebWork在众多Web框架中以其灵活性和简易性脱颖而出,它与Spring Web Framework、Struts、Tapestry、JSF和Portal等框架并存,各有所长。例如,Struts拥有丰富的资源,而Spring则提供...

    概要设计说明书.doc

    2. **Web框架**: Struts 1.2.x,它是一个基于MVC设计模式的Java Web框架,用于构建动态网页应用程序。 3. **依赖注入和管理框架**: Spring 1.2.x,Spring框架提供了一个全面的编程和配置模型,简化了企业级应用的...

    Java技术与就业指导(张孝祥)

    在这一层,还需要熟悉Servlet、JSP和HTTP协议,以及各种Web框架,如Struts、Struts2、JSF、Spring MVC等。Web服务器如Tomcat、JBoss、WebLogic和WebSphere是部署应用的重要平台。 数据库访问层涉及JDBC、Hibernate...

    JSP学习的幻灯片菜鸟专用

    2. **编译阶段**:Servlet源代码被编译成字节码,并存为`.class`文件。 3. **加载与初始化**:Servlet被加载到Java虚拟机中,并执行`init()`方法。 4. **服务阶段**:每次用户请求时,调用`service()`方法处理请求并...

    ava

    2. **Java Web开发**:Servlet、JSP(Java Server Pages)、MVC(Model-View-Controller)设计模式,以及Spring、Struts、Hibernate等流行框架的使用。 3. **Java EE**:企业级Java应用,包括EJB(Enterprise ...

Global site tag (gtag.js) - Google Analytics