我有这段XML:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/statics/**" />
<bean class="com.company.website.servlet.StaticsHandlerInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/data/**" />
<bean class="com.company.website.servlet.AJAXHandlerInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.company.website.servlet.PageHandlerInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
我有三个不同的拦截器,这是有原因的,尽管StaticsHandlerInterceptor
只是返回preHandle
的true
方法(对于我所有的静态内容(js,css等))。第二个是针对AJAX请求的。第三个是实际页面。我所看到的是,在应有的时候调用了静态函数和AJAX拦截器。但是,对于它们,页面拦截器总是被调用。我只希望为页面调用页面拦截器。我该如何实现?
java大神给出的解决方案
假设您为网页使用一致的命名方案,请使用-例如如果您的外部可见页面URL以.html
结尾,请指定:
<mvc:mapping path="/**/*.html" />
尽管具有这样的“扩展”并不是很RESTful-您可能更喜欢使用以下方案:
/user/{id}
的GET =返回用户{id}的用户对象,JSON格式
POST到/user/{id}
=从JSON对象更新User对象
GET to /user/page/{id}
=返回用户{id}的HTML页面
等
然后,您可以使用一个不错的可读性,语义映射,例如:
<mvc:mapping path="/**/page/**" />
这将适用于URL结构的任何“深度”。
编辑:确定,所以看来使用mvc:interceptors风格的bean声明不会为您提供表达能力,您需要通过模式而不是包含来指定排除。
根据我在this blog中的理解,使用更详细的HandlerMapping
方法将使您反转匹配逻辑-您可以指定不匹配的内容以获得所需的内容:
<bean id="nonStaticNonDataMapper" class="org.springplugins.web.IgnoreSelectedAnnotationHandlerMapping">
<property name="order">
<value>0</value>
</property>
<property name="urls">
<list>
<value>/statics/**</value>
<value>/data/**</value>
</list>
</property>
<property name="interceptors">
<list>
<bean class="com.company.website.servlet.PageHandlerInterceptor" />
</list>
</property>
(为上述代码段的格式表示歉意,Markdown认为/**
是注释:-)
我想创建一个新客户并在创建客户后返回客户编号。客户编号必须是从50000开始的自动递增的唯一编号。到目前为止,我已经成功创建了一个客户,但是我不确定应该如何生成客户编号,将其保存到数据库中,并在触发POST时将其作为成功消息显示给用户。json下面是所需的响应;{ "customerNumber": "50002", …
页面加载而不是提交时发生struts验证 - java请原谅我;我对Struts有点陌生。我遇到一个问题,即页面加载而不是我实际提交表单时发生了验证。我整天都在论坛上搜寻和搜寻,没有任何运气。我显然做错了一些事情,应该很容易确定,但是我还没有发现问题所在。这是我的struts.xml的片段:<action name="*Test" method="{1}" clas…
DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…
Spring MVC:如何获取请求的处理程序方法 - java我正在尝试根据Spring @RequestMapping注释方法上存在的注释实现一些逻辑。因此,我的方法中有一个HttpServletRequest实例,我想问一下spring“给我一个方法,该方法将被调用以处理此请求”,因此我可以使用反射API来询问是否存在我的注释,因此我可以更改处理。有什么简单的方法可以从Spring MVC获取此信息? java大神…
实例化类型<?>的泛型类 - java我正在为SCJP / OCPJP学习,并且遇到了一个对我来说很奇怪的示例问题。该示例代码实例化了两个通用集合:List<?> list = new ArrayList<?>(); List<? extends Object> list2 = new ArrayList<? extends Object>(); …