1. classpath 和 classpath*
classpath 和 classpath* 区别:
classpath:只会到你指定的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。
2. 注解@Autowired和@Resource的区别
@Autowired 与@Resource区别:
1、@Autowired与@Resource都可以用来装配bean,都可以写在字段或setter方法上。
2、@Resource 是JDK提供的注解,默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名,按照名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是如果name属性一旦指定,就只会按照名称进行装配。
3、@Autowired默认按类型装配(Spring提供的注解),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ;如果想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Autowired
@Qualifier(“baseDao”)
private BaseDao baseDao;
3. Ant风格
ANT通配符有三种:
通配符 | 说明 |
---|---|
? | 匹配任何单字符 |
* | 匹配0或者任意数量的字符 |
** | 匹配0或者更多的目录 |
举例:
URL路径 | 说明 |
---|---|
/project/*.a | 匹配项目根路径下所有在project路径下的.a文件 |
/project/p?ttern | 匹配项目根路径下 /project/pattern 和 /app/pXttern |
/**/example |
匹配项目根路径下 /project/example, /project/foow/example, 和 /example |
/project/**/dir/file.* |
匹配项目根路径下/project/dir/file.jsp, /project/foow/dir/file.html,/project/foow/bar/dir/file.pdf |
/**/*.jsp |
匹配项目根路径下任何的.jsp 文件 |
最长匹配原则(has more characters)
现有URL请求/app/dir/file.jsp
,假设存在两个路径匹配模式/**/*.jsp
和/app/dir/*.jsp
,那么会根据模式/app/dir/*.jsp
来匹配。
4. SpringMVC @Response 返回String中文乱码
项目开发中如果没有遇到乱码,那你可能不是一个真正的开发;遇到乱码,总是习惯性去网上乱搜一气,实际上乱码的根源会有很多种情况,现象也不一样。这方面,目前菜逼的我也是乱搜一气,先排除一些不靠谱的解决方案,然后去尝试那些有理有据,适合自己项目情况的解决方案,假如成功,就了事,也没有时间和激情去追本溯源(需要改正),不行就换一种解决方法;
另,关于乱码,建议多度几遍《深入分析Java Web技术内幕》书籍的第三章:深入分析Java Web中的中文编码问题。
现在遇到的一种情况是,spring web响应乱码。一种可行的解决方法:
在springMVC的配置文件中(springMVC-xx.xml),修改<mvc:annotation-driven/>
为:
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
乱码原因:org.springframework.http.converter.StringHttpMessageConverter有个final修饰的Charset DEFAULT_CHARSET=Charset.forName(“ISO-8859-1”)常量。即当返回类型为String时,返回类型为text/plain,字符被设置为默认字符ISO-8859-1。