`
huangfen_it
  • 浏览: 3660 次
  • 性别: Icon_minigender_2
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

使Struts2与Servlet并存解决办法

阅读更多
解决办法:
在Struts2过滤器前增加一个过滤器,使用过滤器转发到servlet上

web.xml配置:
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

52
}
分享到:
评论

相关推荐

    struts2开发流程简图

    如果项目中使用Spring进行依赖注入,那么需要在`web.xml`中添加Spring的配置,加载Spring的核心servlet,例如`ContextLoaderListener`和`DelegatingFilterProxy`,以便于Struts2与Spring集成。 6. **拦截器的添加...

    STRUTS 学习资料

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

    Struts所需要的jar包

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

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

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

    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()`方法处理请求并...

    概要设计说明书.doc

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

    webwork培训教程

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

    在线考试系统

    - 后端框架:可能结合Servlet、Spring MVC或Struts等进行业务逻辑处理。 - 前端:可能使用HTML、CSS和JavaScript构建用户界面,Bootstrap、jQuery等库可提高开发效率。 - 安全性:HTTPS协议保证数据传输安全,...

    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