`

jsp:include 找不到*.do的解决方法

    博客分类:
  • java
阅读更多

由于要兼容以前的一个系统,不得已自己实现了一个filter,通过判断request.getRequestURI来对*.do的请求转发到struts1的servelt中,对于其他URL则做其他转向,但是这样带来一个问题,jsp:include page="*.do"用不了了,得到的结果是找不到这个do对应的action。

 

最后追踪了tiles:insert tag的源代码发现,tomcat将page中指定的url封装成了一个ApplicationHttpRequest将这个request对象的requesturi属性设置成了调用tag的jsp路径,而真正的.do的URL放在ApplicationHttpRequest.requestDispatcherPath这个变量中,这样一来,通过request.getRequestURI()来取得URI当然是不正确的。由于,ApplicationHttpRequest.requestDispatcherPath这个变量是protected类型的,直接取不到,所以必须通过其他方式取得,好在,tomcat同时将*.do的路径放在了attribute中,你可以通过

 

request.getAttribute("org.apache.catalina.core.DISPATCHER_REQUEST_PATH");
 

 

获得。

 

所以解决办法是:

 

String uri = request.getRequestURI();
Object v = request.getAttribute("org.apache.catalina.core.DISPATCHER_REQUEST_PATH"); 	
if (v != null) { 		uri = v.toString(); 	}

 

参考的文章:http://flowithwind.hitidea.org/2007/12/%E8%87%AA%E5%B7%B1%E5%AE%9E%E7%8E%B0methodnameresolver/

 

分享到:
评论

相关推荐

    Java-Web程序设计题库.doc

    包括静态和动态网页的后缀、JSP指令、数据类型、运算符、访问修饰符、常量修饰、Servlet生命周期、HTTP响应格式、会话管理、请求处理、JSP内置对象、JavaBean的使用以及相关的API方法等。以下是详细的知识点解析: ...

    最全Java面试题汇总(一)

    - **`<jsp:include>`**:动态包含其他页面。 - **`<jsp:useBean>`**:用于创建JavaBean实例。 - **`<jsp:setProperty>`**:为JavaBean设置属性值。 - **`<jsp:getProperty>`**:获取JavaBean的属性值。 - **`<jsp:...

    spring_MVC源码

    19. *.do</url-pattern> 20. </servlet-mapping> 21. <welcome-file-list> 22. <welcome-file>index.jsp</welcome-file> 23. </welcome-file-list> 24.</web-app> spring-servlet,主要配置controller的...

    Struts2升级到2.5.30,问题解决及过程记录

    对于任何不兼容问题,可以尝试回滚到兼容的库版本,或者查找社区中的解决方案。 总之,Struts2的升级是一个涉及多方面考虑的过程,需要细心规划和执行。通过更新依赖库、调整配置、适配API变化,并进行充分的测试,...

    JSP常见问题

    下面我们将讨论JSP中的一些常见问题及其解决方法。 1. 如何混合使用Jsp和SSI #include? 在JSP中,可以使用如下方式包含纯HTML:<--#include file="data.inc"-->但是,如果data.inc中包含JSP CODE,可以使用:<%@...

    jsp页经典面试题java程序员面试经常考到的面试题总结.pdf

    jsp可以定义方法,但是不能直接访问jsp的内置对象,而是通过参数的方法传递,例如:! public String howBadFrom(HttpServletRequest req) { HttpSession ses = req.getSession(); ... return req.getRemoteHost(); }...

    重庆邮电大学java期末复习考点.docx

    - **服务端跳转**:`<jsp:forward>`用于在不改变URL的情况下,将请求转发到其他页面并传递参数。 - **JSP内置对象**: - request和response对象处理HTTP请求和响应,解决乱码问题时通常设置字符编码。 - session...

    2021-2022计算机二级等级考试试题及答案No.1635.docx

    #### 题目4: JSP中导入包的方法 **题目描述:** 询问在JSP中导入`java.io.*`包应该使用的指令。 **知识点解析:** 在JSP中,导入Java包主要通过`<%@ page import="..." %>`指令来实现。 - **选项A:** `page`指令,...

    tomcat6学习笔记【原创】

    JkMount /*.jsp ajp13 JkMount /*.jspx ajp13 JkMount /*.do ajp13 JkMount /*.action ajp13 ``` 3. **配置Tomcat 6**:在Tomcat 6中,需要配置`server.xml`文件来支持Apache 2的连接。 - 添加AJP Connector...

    java程序员滴宝典

    2. **服务请求**:通过调用`servlet.service()`方法处理请求,根据请求的不同调用不同的`do***()`方法。 3. **销毁**:当servlet不再需要时,Web容器调用`servlet.destroy()`方法来释放资源。 示例: ```java ...

    基于jsp的留言板系统管理

    1. **JSP基础**:理解JSP的生命周期,如何在页面上嵌入Java代码,以及使用JSP动作元素如<jsp:include>和<jsp:forward>。 2. **Servlet技术**:虽然没有直接提及,但JSP通常与Servlet配合使用。Servlet处理HTTP请求...

    java三级题库及答案

    2. **包含文件**:选项B的说法不完全正确,`jsp:param`不仅可以与`jsp:forward`一起使用,还可以用于`jsp:include`指令。 3. **文件包含**:选项C的说法有误,使用`include`指令可以包含各种类型的文件,不仅仅是jsp...

    jsp常见问题

    ### JSP常见问题详解 #### 一、混合使用JSP和SSI #include 在Web开发中,有时我们需要在同一个页面中结合使用...以上就是关于JSP的一些常见问题及其解决方案的详细介绍,希望能帮助开发者更好地理解和使用JSP技术。

    jsp程序设计考试题及答案.doc

    2. TagSupport类的dostart方法:在自定义JSP标签中,`dostart`方法的返回值决定本体(tag body)是否可见。`EVAL_BODY_INCLUDE`表示应该继续处理标签体,因此选项D正确,表示本体可见。 3. JavaBean规范:JavaBean...

    java学习中用到的各种基础知识,非常精练,可用于快速询

    - **指令和动作**:如page指令、include指令和jsp:useBean动作等,用于页面配置和控制。 - **脚本元素**:包括声明、脚本let、表达式和动作,分别用于定义变量、执行Java代码和输出值。 - **EL和JSTL**:表达式...

    apache与tomcat集成

    JkMount *.do controller JkMount servlet/* controller RewriteEngine on RewriteRule ^/$ /ema/ [P] ProxyPass /admin.action http://192.168.100.121:81/ema/admin.action ProxyPassReverse /admin.action ...

    良心出品JSP程序设计考试试题与答案.doc

    JSP 程序设计考试试题与答案 本文档提供了 JSP 程序设计考试试题与答案,涵盖了 JSP 程序设计的基础...在 JSP 中,include 指令用于将一个 JSP 文件包含到另一个 JSP 文件中。可以使用 flush 属性来指定是否刷新缓存。

    JAVA高级程序员考试题.pdf

    5. **JSP基本动作**:JSP有6种基本动作,即jsp:include、jsp:param、jsp:useBean、jsp:setProperty、jsp:getProperty和jsp:forward,选项A正确。 6. **do-while循环**:给定的do-while循环会在结束时使变量c的值减1...

    WEB数据库复习题.doc.deflate.doc

    声明可以包含变量和方法,也可以通过`<%@ include %>`指令或`<jsp:include>`动作进行复用。 12. **JSP表达式**:JSP表达式将Java表达式转换为字符串并输出到响应中,不需要以分号结尾。`<%= %>`中不允许有空格,它...

Global site tag (gtag.js) - Google Analytics