struts路径问题

问题:使用struts2,如何处理action的路径?还有,在action转到的jsp中,如何写js,css,图

片的路径?(例如访问 http://localhost/myproject/my/listUser.action后转到http://localhost/project/user /listUser.jsp,这时候浏览器还是停留在http://localhost/project/my/addUser.action。这时候jsp原来的图片定位(因为我们在listUser.jsp中引用的图片等是相对于该jsp路径的,但当前浏览器确是http://localhost/project/my/addUser.action,所以就都出错了)

而解决jsp的路径问题,我觉得以下方式就基本完美了:

<base>为页面上所有相对 URL 规定基准 URL:

第一步:在jsp的head中添加base标签和一段java

<%

String path = request.getContextPath();//对应就是myproject,即我的web工程名

String basePath = request.getScheme()(协议http) + "://"

+ request.getServerName()(服务器所在ip) + ":" + request.getServerPort()(服务器所在端口)

+ path + "/";

%>

<base href="<%=basePath%>">(这样所有的href标签引用的文件就会自动补上basePath。例如我在1.jsp文件中写了上面的代码,然后我想引用<a href=”2.jsp”(2.jsp在http://localhost/myproject)下,那么我不用写前面的这些,只需要2.jsp就可以了,实际上变成http://localhost/myproject/2.jsp)

这样就变成 绝对路径.

也就是说,需要写从项目根目录算起的绝对路径,但去掉开头的"/"

第二步:所有action跳转,form提交写的action路径,都不要带目录位置。只写action名,例如addUser.action。

这样,浏览器就一直停留在http://localhost/project/XXXXX.action  这一层。

第三步:配置文件的action的url写成/XXXX,比如上面的就写成<action url=”/addUser”>

另外,我发现另外一个更自然的办法,可以使得原来用相对路径定位的jsp继续可用,不必逐个修改链接:

第一步:在jsp的head中同样添加base,但把getContextPath改为getRequestURL

<%

StringBuffer basePath = request.getRequestURL()

%>

<base href="<%=basePath%>">

注意是request.getRequestURL,这样获取出来的正好就是jsp的绝对路径。

比如我的struct配置文件中

<action path=”/my/listUser”(写成相对于根目录的路径) type=”hello.HelloAction” name=”HelloForm” scope=”request” validate=”true”>

<forward name=”SayHello”path=” /user/listUser.jsp”(这个路径写成相对于工程根目录,如myproject/user/listUser.jsp写成/user/listUser.jsp>

例如浏览器地址栏是:http://localhost:8084/myproject/my/listUser.action

base是<base href="http://localhost:8084/myproject/user/listUser.jsp">

如果我们在listUser.jsp中引用一个图片1.jpg,该图片在user目录中。那么我们可以这样写<img src=../1.jpg>路径就变成http://localhost:8084/myproject/user/1.jpg

第二步:jsp页面内,全部使用相对路径访问。

第三步,action的路径写成../或者其他相对路径都可以,但要和配置文件的路径吻合。

这个方法,可以兼容使用action和不使用action两种情况

时间: 2024-10-09 21:37:35

struts路径问题的相关文章

spring与struts简单整合案例

Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! 步骤: 1)引入struts .jar相关文件 a.引入struts .jar相关文件 commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang3-3.1.jar freemarker-2.3.19.jar javassist-3.11.0.GA.

Spring学习-8-Spring与struts整合

实例代码分析 3. Spring与Struts框架整合 Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! 步骤: 引入jar文件 1)引入struts .jar相关文件 2)spring-core 相关jar文件 3)spring-web 支持jar包 spring-web-3.2.5.RELEASE.jar [Spring源码] struts2-spring-p

自己打断点走的struts流程

①. 请求发送给 StrutsPrepareAndExecuteFilter ②. StrutsPrepareAndExecuteFilter 判定该请求是否是一个 Struts2 请 求(ActionMapping判断),不是就放行. (根据路径的后缀是 .action或者.doj进行判断) ③. 若该请求是一个 Struts2 请求,则 StrutsPrepareAndExecuteFilter 把请求的处理交给 ActionProxy ④. ActionProxy 创建一个 ActionI

struts与spring整合

Spring与Struts框架整合 Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! Spring与Hibernate整合: [SSH整合: Spring与Struts 关键点: action交给spring创建! Spring与Hibernate 关键点: sessionFactory对象交给spring创建! 事务交给spring创建 ] 步骤: 引入jar文

Spring与Struts框架整合

Spring,负责对象对象创建 Struts, 用Action处理请求 Spring与Struts框架整合, 关键点:让struts框架action对象的创建,交给spring完成! Spring与Hibernate整合: [SSH整合: Spring与Struts 关键点: action交给spring创建! Spring与Hibernate 关键点: sessionFactory对象交给spring创建! ] 步骤: 引入jar文件 1)引入struts .jar相关文件 2)spring-

Struts2动态方法调用怎么写配置

Struts2动态方法调用怎么写配置?可以这样: 1.Struts2入门之 HelloWorld  编写不依赖任何三方包的Action类 按照MVC架构,Action执行完后要返回显示的结果视图,所以,Action中的请求处理方法要返回一个逻辑名称来表示它要显示的结果视图,即方法的 返回值类型为代表逻辑名称的字符串. 在 struts.xml配置文件中配置Action类 struts.xml文件中的配置信息使用package进行分类和管理,不同的包对应不同的url访问路径,即在访问路径上就能区分

12、Spring框架核心

?* Struts与Hibernate可以做什么事? Struts, Mvc中控制层解决方案 可以进行请求数据自动封装.类型转换.文件上传.效验- Hibernate, 持久层的解决方案: 可以做到, 把对象保存到数据库, 从数据库中取出的是对象. ?* 传统的开发模式 基于mvc模式进行项目开发: 基于mvc的项目框架结构: Entity / dao / service / action // 1. 实体类 class User{ } //2. dao class UserDao{ .. 访问

(2)Spring框架

1.回顾 1.1.Struts2和Hibernate能够做什么? Struts,是MVC框架中控制层的解决方案,可以进行请求数据自动封装.类型转换.文件上传.效验- Hibernate, 是持久层的解决方案:可以做到"把对象保存到数据库"和"从数据库中取出的是对象". 1.2.传统的开发模式 基于mvc的项目框架结构:entity / dao / service / action // 1. 实体类 class User{ } //2. dao class  Use

Struts2数据处理与上传

Struts2数据处理与上传 Struts2配置 Struts2开发的几种方式 实现action接口,这个接口定义了一些常量和一个execute方法,重写excute方法即可 public interface Action { public static final String SUCCESS = "success"; public static final String NONE = "none"; public static final String ERRO