论坛首页 Java企业应用论坛

Spring3 MVC Restful 多请求类型(json,xml,k-v),多视图配置(Json,Xml,JSP,Freemarker,Volacity等)

浏览 26886 次
精华帖 (2) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2010-08-27  
liuweifeng 写道
请问LZ,下面这句是虾米?
<mvc:interceptors>
        <bean class="com.globeway.web.servlet.intercept.JsonGetInterceptor" />
</mvc:interceptors>

就是给contorller加上拦截器,跟struts2差不多,不过spring mvc只有before跟after,没有around,这点不爽
0 请登录后投票
   发表时间:2010-08-27  
liguiking 写道
liuweifeng 写道
请问LZ,下面这句是虾米?
<mvc:interceptors>
        <bean class="com.globeway.web.servlet.intercept.JsonGetInterceptor" />
</mvc:interceptors>

就是给contorller加上拦截器,跟struts2差不多,不过spring mvc只有before跟after,没有around,这点不爽


能把你com.globeway.web.servlet.intercept.JsonGetInterceptor这个贡献出来不,大家参考下~谢了
0 请登录后投票
   发表时间:2010-08-27  
yangfuchao418 写道
spring 还好。用struts2构建restful 真TMD 不方便。

struts2 restFul也不复杂,使用契约的话,免配置,注解都不用:
web.xml:
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

struts.xml:

    <constant name="struts.convention.action.suffix" value="Controller"/> 
    <constant name="struts.convention.action.mapAllMatches" value="true"/> 
    <constant name="struts.convention.default.parent.package" value="rest-default"/>
    <constant name="struts.mapper.class" value="rest" />
    <constant name="struts.convention.package.locators" value="controller"/>
    <package name="demo" extends="rest-default" namespace="/demo"/>
需要使用到struts2-convention-plugin.jar、struts2-rest-plugin.jar这两个插件包

Controller放在**.cotroller.*下即可:
public class XxxController extends ActionSupport implements ModelDriven<Object> {


    private String id = "";


    public HttpHeaders index() {
    return new DefaultHttpHeaders("index")
            .disableCaching();
    }
   
    public HttpHeaders show() {
    return new DefaultHttpHeaders("show");
    }

    @Override
    public Object getModel() {
return model;
    } 
}
在WEB-INF下建立目录:content/xxx/xxx-index.jsp,xxx-show.jsp,要支持Freemarker之流的就没有试过
如果要返回json或者xml,还要加上struts2-json-plugin.jar:/demo/1111.json /demo/1111.xml

IBM developerworker上有李刚大湿雄文一篇,大家可以去观摩一二
http://www.ibm.com/developerworks/cn/java/j-lo-struts2rest/

struts restful 与 spring3 mvc 熟优熟劣,就看各自的喜好了,本挫八年抗战,历经strut1--webwork2--struts2,最终皈依Spring3 MVC,摒弃尘世间的一切恩怨
1 请登录后投票
   发表时间:2010-08-27  
liuweifeng 写道
liguiking 写道
liuweifeng 写道
请问LZ,下面这句是虾米?
<mvc:interceptors>
        <bean class="com.globeway.web.servlet.intercept.JsonGetInterceptor" />
</mvc:interceptors>

就是给contorller加上拦截器,跟struts2差不多,不过spring mvc只有before跟after,没有around,这点不爽


能把你com.globeway.web.servlet.intercept.JsonGetInterceptor这个贡献出来不,大家参考下~谢了

这个我只是加了一个空壳而已,还没有用到,兄弟要看也无妨:
public class JsonGetInterceptor extends HandlerInterceptorAdapter {
private static final Logger logger = LoggerFactory.getLogger(JsonGetInterceptor.class);

@Override
public boolean preHandle(
            HttpServletRequest request,
            HttpServletResponse response,
            Object handler) throws Exception {
logger.debug("JsonGetInterceptor--{}",request.getParameter("RequestBody"));
return true;
    }


public void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
logger.debug("request After---------",request.getParameter("RequestBody"));
}
}
0 请登录后投票
   发表时间:2010-08-27  
LZ能不能做个demo打个工程出来,小弟好学习学习。
11 请登录后投票
   发表时间:2010-08-27   最后修改:2010-08-27
再给点儿力 整个完整的样例跑跑
0 请登录后投票
   发表时间:2010-08-29  
样例放出,修改了两处spring的源码。jar包请自行添加
0 请登录后投票
   发表时间:2010-08-31  
liguiking 写道
样例放出,修改了两处spring的源码。jar包请自行添加

非常感谢LZ!
0 请登录后投票
   发表时间:2010-08-31   最后修改:2010-08-31
如果在ModelMap里多放几个对象,输出xml的时候,只会输出第一个,还得改写MarshallingView,原来的MarshallingView写不怎么好,看源码就知道。MappingJacksonJsonView就不存在这样的问题。我的项目里我自己实现了一个MarshallingView
0 请登录后投票
   发表时间:2010-09-19  
附件竟然下载不了,5555
我竟然不用ContentNegotiatingViewResolver,只是配置了ViewResolver的order属性就可以了如:<property name="order" value="0"/>
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics