由于要兼容以前的一个系统,不得已自己实现了一个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/
分享到:
相关推荐
包括静态和动态网页的后缀、JSP指令、数据类型、运算符、访问修饰符、常量修饰、Servlet生命周期、HTTP响应格式、会话管理、请求处理、JSP内置对象、JavaBean的使用以及相关的API方法等。以下是详细的知识点解析: ...
- **`<jsp:include>`**:动态包含其他页面。 - **`<jsp:useBean>`**:用于创建JavaBean实例。 - **`<jsp:setProperty>`**:为JavaBean设置属性值。 - **`<jsp:getProperty>`**:获取JavaBean的属性值。 - **`<jsp:...
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的升级是一个涉及多方面考虑的过程,需要细心规划和执行。通过更新依赖库、调整配置、适配API变化,并进行充分的测试,...
下面我们将讨论JSP中的一些常见问题及其解决方法。 1. 如何混合使用Jsp和SSI #include? 在JSP中,可以使用如下方式包含纯HTML:<--#include file="data.inc"-->但是,如果data.inc中包含JSP CODE,可以使用:<%@...
jsp可以定义方法,但是不能直接访问jsp的内置对象,而是通过参数的方法传递,例如:! public String howBadFrom(HttpServletRequest req) { HttpSession ses = req.getSession(); ... return req.getRemoteHost(); }...
- **服务端跳转**:`<jsp:forward>`用于在不改变URL的情况下,将请求转发到其他页面并传递参数。 - **JSP内置对象**: - request和response对象处理HTTP请求和响应,解决乱码问题时通常设置字符编码。 - session...
#### 题目4: JSP中导入包的方法 **题目描述:** 询问在JSP中导入`java.io.*`包应该使用的指令。 **知识点解析:** 在JSP中,导入Java包主要通过`<%@ page import="..." %>`指令来实现。 - **选项A:** `page`指令,...
JkMount /*.jsp ajp13 JkMount /*.jspx ajp13 JkMount /*.do ajp13 JkMount /*.action ajp13 ``` 3. **配置Tomcat 6**:在Tomcat 6中,需要配置`server.xml`文件来支持Apache 2的连接。 - 添加AJP Connector...
2. **服务请求**:通过调用`servlet.service()`方法处理请求,根据请求的不同调用不同的`do***()`方法。 3. **销毁**:当servlet不再需要时,Web容器调用`servlet.destroy()`方法来释放资源。 示例: ```java ...
1. **JSP基础**:理解JSP的生命周期,如何在页面上嵌入Java代码,以及使用JSP动作元素如<jsp:include>和<jsp:forward>。 2. **Servlet技术**:虽然没有直接提及,但JSP通常与Servlet配合使用。Servlet处理HTTP请求...
2. **包含文件**:选项B的说法不完全正确,`jsp:param`不仅可以与`jsp:forward`一起使用,还可以用于`jsp:include`指令。 3. **文件包含**:选项C的说法有误,使用`include`指令可以包含各种类型的文件,不仅仅是jsp...
### JSP常见问题详解 #### 一、混合使用JSP和SSI #include 在Web开发中,有时我们需要在同一个页面中结合使用...以上就是关于JSP的一些常见问题及其解决方案的详细介绍,希望能帮助开发者更好地理解和使用JSP技术。
2. TagSupport类的dostart方法:在自定义JSP标签中,`dostart`方法的返回值决定本体(tag body)是否可见。`EVAL_BODY_INCLUDE`表示应该继续处理标签体,因此选项D正确,表示本体可见。 3. JavaBean规范:JavaBean...
- **指令和动作**:如page指令、include指令和jsp:useBean动作等,用于页面配置和控制。 - **脚本元素**:包括声明、脚本let、表达式和动作,分别用于定义变量、执行Java代码和输出值。 - **EL和JSTL**:表达式...
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 程序设计考试试题与答案 本文档提供了 JSP 程序设计考试试题与答案,涵盖了 JSP 程序设计的基础...在 JSP 中,include 指令用于将一个 JSP 文件包含到另一个 JSP 文件中。可以使用 flush 属性来指定是否刷新缓存。
5. **JSP基本动作**:JSP有6种基本动作,即jsp:include、jsp:param、jsp:useBean、jsp:setProperty、jsp:getProperty和jsp:forward,选项A正确。 6. **do-while循环**:给定的do-while循环会在结束时使变量c的值减1...
声明可以包含变量和方法,也可以通过`<%@ include %>`指令或`<jsp:include>`动作进行复用。 12. **JSP表达式**:JSP表达式将Java表达式转换为字符串并输出到响应中,不需要以分号结尾。`<%= %>`中不允许有空格,它...