springmvc的核心过滤器dispatcherservlet有加载配置文件的作用吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springmvc的核心过滤器dispatcherservlet有加载配置文件的作用吗相关的知识,希望对你有一定的参考价值。
参考技术A springmvc的核心过滤器dispatcherservlet有加载配置文件的作用配置文件名为:project.properties,内容如下:
# 是否开启逻辑删除
del.filter.on=false
domain
修改Spring配置文件
之前代码:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:dbinfo.properties</value>
</list>
</property>
</bean>
修改后的配置文件
<bean id="propertyConfigurer"
class="com.hisun.core.util.CustomizedPropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:dbinfo.properties</value>
<value>classpath:project.properties</value>
</list>
</property>
</bean>
加入了classpath:project.properties,其为自定义的配置文件
将PropertyPlaceholderConfigurer类修改为自定义类CustomizedPropertyPlaceholderConfigurer,
PropertyPlaceholderConfigurer类的具体作用可以查资料这块儿不做详细介绍
定义CustomizedPropertyPlaceholderConfigurer类
类的具体内容为下,
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
public class CustomizedPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer
private static Map ctxPropertiesMap;本回答被提问者采纳
SpringMVC - dispatcher servler 的 url 模式样式
【中文标题】SpringMVC - dispatcher servler 的 url 模式样式【英文标题】:SpringMVC - dispatcher servler's url pattern style 【发布时间】:2015-06-29 19:44:21 【问题描述】:我正在尝试使用 springMVC
构建一个宁静风格的 API。
在为 springMVC 的DispatcherServlet
配置 url-pattern 时,似乎有 2 个选择,我需要一些建议。
选择 A:
配置模式为:<url-pattern>*.action</url-pattern>
和动作使用路径如@RequestMapping("/role/add.action")
选择 B:
配置模式为:<url-pattern>/api/*</url-pattern>
和动作使用路径如@RequestMapping("/api/role/add")
我更喜欢使用没有后缀的样式,但在这种情况下,我需要添加子路径。
但我不确定哪个更适合在作为后端以提供 RESTful API 的项目中使用,并以浏览器/IOS/Android 作为其客户端。
可能有一个选项 C,但我不确定:
配置模式为:<url-pattern>/*</url-pattern>
和动作使用路径如@RequestMapping("/role/add")
在这种情况下,内置的 servlet 将被覆盖,例如 jsp 将无法正常工作。
但是我没有jsp
,而且像html / js / css / image / document / music / video
这样的静态资源都放在nginx
服务的另一个端口或服务器上,对tomcat的请求只通过json数据提供ajax服务。
那么在这种情况下使用选项 C 是否合适,或者它有一些不好的副作用?
【问题讨论】:
我推荐使用 Spring Boot,这样就不需要任何此类规范。 @chrylis 你能帮忙解释一下spring boot如何解决这个问题吗?因为根据servlet规范,我找不到既没有后缀也没有子路径的模式,同时可以避免覆盖内置的servlet。 Spring Boot 为您管理整个容器,因此您根本不必指定任何路径。 【参考方案1】:如果您的目标是 restful api,我的选择是第二个,因为您在 url 中识别资源;说你必须管理一个角色资源,你应该有一些像这样的映射:
@RequestMapping("/api/role" method = RequestMethod.POST)
插入一个新角色(可能是api不允许这样做)
@RequestMapping("/api/role/roleId" method = RequestMethod.PUT)
更新现有角色
@RequestMapping("/api/role/roleId" method = RequestMethod.DELETE)
删除角色
@RequestMapping("/api/role" method = RequestMethod.GET)
检索角色(您可以通过查询字符串实现一些过滤器)
这同样适用于其他资源(用户等),命名架构相同。
我会避免使用选项 C,因为我认为如果您的应用还发布了不使用 api 的 Web 界面,最好为 api 提供专用映射
【讨论】:
【参考方案2】:对于 RESTful 服务,我将选择 选择 B,考虑使用 REST
执行 CRUD
操作。您可以将url-pattern
映射为,
config pattern as: <url-pattern>/api/*</url-pattern>
所以要执行 add ,您只需确保从页面发布 JSON 对象并具有类似 /api/add
的 url
在删除的情况下,您可以简单地遵循相同的操作。考虑您将使用其 id 从列表中删除 object
。你可以简单地理解为,
/api/delete/$id
并像处理它,
@RequestMapping(value="/id", method=RequestMethod.GET)
【讨论】:
好建议,但是很多api有多个参数,所以我还是需要把参数放在?
之后或者http正文中,我猜。
是的,它也取决于 API。为什么不将对象用于多个参数。
我有时会使用对象,但这也仅适用于部分 API,例如,搜索服务可能具有来自多个模型的更多参数。以上是关于springmvc的核心过滤器dispatcherservlet有加载配置文件的作用吗的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC -- 拦截器(作用与过滤器的区别示例拦截器实现登录拦截核心代码)
Spring技术揭幕----DispatcherServlet