struts-plugin插件包的问题

用ssh框架也有将近1个月了,现在有一些疑问,希望高手帮我解决一下。主要是struts-plugin插件的问题。

下载struts2.3.4.1完整包,里面有大量的插件包,这些包我也或多或少的使用过,但当初都是分开使用的,没使用struts2.比如sitemesh,json等。但我现在的问题是,如果我使用struts2-json-plugin的时候,是不是就不需要json包了。我看网上很多的做法,也有引入了的,但一些人的做法,就没有引入。我现在就迷惑了。
还有版本问题,是不是struts2.3.4就必须用struts2.3.4-plugin版本匹配的插件。
最后就是一个问题,我以前编写struts2代码都是对所有的url进行拦截,请求action也没有后缀,比如showNews,不是showNews.action。现在问题来了,当我使用fckeditor的时候,单独使用都没什么问题,但文件上传就出现权限不够。原因我知道。我用网上他们说的方法重新写一个filter来拦截这个请求,但还是没解决。如果把url拦截改成*.action也不行,因为我的action全部没后缀。

希望能得到解答一下。

4个回答

1、struts2配置加载顺序
1.1、struts-core里的 struts-default.xml-------------->提供默认配置 比如默认的Result、more的拦截器等
1.2、struts plugin里的 struts-plugin.xml ------------->提供插件需要的配置,比如spring插件 会修改struts.objectFactory 为spring(org.apache.struts2.spring.StrutsSpringObjectFactory)
1.3、加载classpath中的我们自定义的struts.xml

struts plugin 提供给我们扩展struts2的功能,比如使用spring容器管理struts2组件(默认struts2也是一个IoC容器)、提供json插件 方便序列化数据为json字符串等。

比如你使用spring这个插件,这个插件是依赖spring的,因此就需要spring的jar包; 相当于你间接依赖spring包;

比如你使用json这个插件,这个插件是依赖json-lib等jar包,因此就需要json-lib等jar包; 相当于你间接依赖json-lib等jar包;

xiaoliouc
xiaoliouc <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Connector</servlet-name> <servlet-class> net.fckeditor.connector.ConnectorServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Connector</servlet-name> <url-pattern> /fckeditor/editor/filemanager/connectors/* </url-pattern> </servlet-mapping> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 我以前是这样写的,后来采用网上他们的方法,就是编写一个filter,然后在web.xml前面配置这个filter。但没有用,我把它删掉了
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 你怎么写的
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 继承StrutsPrepareAndExecuteFilter 然后如果是fckeditor 就跳过
大约 7 年之前 回复
xiaoliouc
xiaoliouc 因为我struts用的2.3.版本的,我在web.xml中使用的StrutsPrepareAndExecuteFilter 这个过滤器,没有用这个 FilterDispatcher 在web.xml中该怎么配置呢,自己编写的filter该怎么写呢。网上有那样的方法,但我用在我的代码中不管用。
大约 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 还有版本问题,是不是struts2.3.4就必须用struts2.3.4-plugin版本匹配的插件。 这个不一定,只要兼容的就可以,但我们很难知道是否兼容,因此最好使用同一个版本的 最安全。 但我现在的问题是,如果我使用struts2-json-plugin的时候,是不是就不需要json包了。我看网上很多的做法,也有引入了的 需要引入,比如你使用json这个插件,这个插件是依赖json-lib等jar包,因此就需要json-lib等jar包; 相当于你间接依赖json-lib等jar包;所以需要; 现在问题来了,当我使用fckeditor的时候,单独使用都没什么问题,但文件上传就出现权限不够。原因我知道。我用网上他们说的方法重新写一个filter来拦截这个请求,但还是没解决。 那你重写FilterDispatcher 如果fckeditor的请求 就跳过这个过滤器
大约 7 年之前 回复

这个就相当于struts2,spring。hibernate,都提供了2中配置方式
1.注解,2.xml形式,2中都能配置,但如果需要注解就需要导入额外的包,但可以2个混着用,既有配置文件,又有注解。。
希望能你能明白

1.json包需要的
2.建议使用maven构建项目,自动管理包的依赖关系。
3.为什么不把所有action加上后缀呢?

surelei
surelei http://code.google.com/p/learyperi/上面这个链接里有源代码(source),你可以参考一下,就是struts+spring+hibernate的框架。
大约 7 年之前 回复
xiaoliouc
xiaoliouc 因为没分了,没给分,麻烦回答一下
大约 7 年之前 回复
xiaoliouc
xiaoliouc 对于1,我也不止json有这个疑问。我一般习惯用servlet测试是否正确。然后把它集成到struts2中。像struts2的插件中,我就用过jfreechart、sitemesh、json但都是没struts2的情况下 2.我一般都是在官网下载得到的jar包,没用myeclipse的自动导入。我以前用的struts2.3.1,但缺少这方面的插件包,我本来打算用其他版本的插件包的,但后来改用struts2.3.4了。我就是有这个疑问,可不可以用其他版本的插件包 3.主要是因为刚工作,以前没用过struts2,测试正确了就一直这样用了。没考虑到现在的后遗症。
大约 7 年之前 回复

import net.sf.json.JSONObject;
一般在早期版本如果希望返回json,使用的jar命名空间是上面那个
但在使用struts2-json-plugin 导入命名控件不一样了
import com.googlecode.jsonplugin.annotations.JSON;
2个包都能方便产生json格式是字符串
如果使用了 注解形式的
也就是action中
@JSON(name="newName")
public String getName() {}那么需要struts2-json-plugin
如果有方法就是早期版本的json,
例如:
public String demo()
{
//response.write(json);
return null;//
}
这2中方式都能实现json,看个人爱好,并不能说使用了用struts2-json-plugin
就不需要第三方的json包了
这个看个人编码习惯,比如:团队中返回json的方法,有些老程序员,就直接用老版本的,或者用新版本的,2中都能实现返回json的action,只不过看个人编码习惯而已。
对于楼上action不加后缀,貌似struts常量配置里面可以配置拦截什么后缀的请求。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!