1、表单提交数据时候的数据类型转换:
• 例如后台接收的参数中有日期格式的参数时,在Controller中添加代码
• 除了使用CustomDateEditor类型转换器之外,还可以参考org.springframework.beans.propertyeditors包下面更多的转换器,也可以参考源码自定义类型转换器。
2、使用spring task配置注解式定时任务
1、在applicationContext.xml文件中添加命名空间 :
2、添加 queue-capacity="500" /> 3、在@Service 标注的类下面,将@Scheduled(cron = "0 */10 * * * *")注解写在需要定时执行的方法上面即可 注:更多cron表达式的说明可以参考以下文档http://blog.csdn.net/lnara/article/details/8636656 3、velocity页面上使用自定义标签 1、在applicationContext.xml中配置具有json解析功能的bean,例如 2、在webmvc-conf.xml文件中的VelocityLayoutViewResolver中,给attributesMap属性配置前面声明的bean: 3、在vm页面中可以用$json.方法名;例如:$json.writeValueAsString(Object o); 4、VelocityLayoutViewResolver本身也提供了常用的工具标签,例如:日期函数dateToolAttribute,数字函数numberToolAttribute,这样就可以直接给该属性的value赋值,让页面上直接使用。 4、springmvc对静态资源的访问 1、在webmvc-conf.xml文件中,添加 mapping="/resources/**" />,表示对项目中的静态资源可以直接已项目名/resources来进行访问。 2、Controller层返回json数据方法:在配置文件中增加如下配置 ,在Controller的方法的返回类型前加@ResponseBody即可。 5.1、使用RestTemplate进行测试 1、在配置文件中增加如下代码: class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"> 5.2、使用RestTemplate进行测试 class="org.springframework.http.converter.StringHttpMessageConverter"> class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /> class="org.springframework.http.converter.ResourceHttpMessageConverter" /> 5.3、使用RestTemplate进行测试 class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /> class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /> class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> 5.4、使用RestTemplate进行测试 class="org.springframework.http.converter.StringHttpMessageConverter"> 5.5、使用RestTemplate进行测试 ÒÔÉÏÅäÖÃÖÐÐèҪעÒâSpring MVCµÄHTTPÇëÇóÐÅϢת»»Æ÷HttpMessageConverter: ByteArrayHttpMessageConverter: 负责读取二进制格式的数据和写出二进制格式的数据; StringHttpMessageConverter: 负责读取字符串格式的数据和写出二进制格式的数据; ResourceHttpMessageConverter:负责读取资源文件和写出资源文件数据; MappingJacksonHttpMessageConverter: 负责读取和写入json格式的数据; 其中给StringHttpMessageConverter的supportedMediaTypes属性配置了mdeiaTypes,这样可以处理我们提交测试数据时 候中文乱码的问题。 。注:在使用util标签时候记得引入util命名空间。 5.6、使用RestTemplate进行测试 在添加完以上配置之后,可以在我们的测试类里面直接用来测试我们写好的Controller: 1、在测试类上加上该注解:@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:config/applicationContext.xml") 2、然后注入resttemplate: @Autowired private RestTemplate restTemplate; 3、restTemplate.postForObject(url, map, String.class); 可参考资料:http://blog.csdn.net/wwwihpccn/article/details/30496089 6、使用RestTemplate访问第三方服务 RestTemplate既然可以测试我们本地写的springmvc服务,所以也可以访问第三方服务。访问的方式和测试时候一样,先注入RestTemplate,然后用RestTemplate进行get、post请求方式访问第三方服务。 6.1、spring事物管理 1、有2种方式:声明式事务:(注解,XML),编程式事务:(代码中嵌入); 我们门户中使用的是编程式事物,需要在代码中嵌入,可以更精确的控制事物。 首先在配置文件中,将数据源交给spring的事物进行控制: class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 然后再注入transactionManager,在事物开始时: DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); TransactionStatus status = transactionManager.getTransaction(def); 6.2、spring事物管理 try { xxx xxx //提交事物 transactionManager.commit(status); }catch (Exception e) { //出现异常需要回滚 if (!status.isCompleted()) transactionManager.rollback(status); } 6.3、spring事物管理 声明式(注解式)事物: 在配置文件中,把datasource交给spring管理之后,再增加如下配置: 然后在service类上面加上@Transactional或者@Transactional(rollbackFor=Exception.class),则会在遇到异常时候回滚。 7.1、security安全框架 1、Spring Security中进行身份验证的是AuthenticationManager接口,验证身份就是加载响应的UserDetails, 看看是否和用户输入的账号、密码、权限等信息匹配。 在配置文件中添加如下配置: 在我们系统中就是实现了UserDetails接口的ItrusPortalUserDetailsService;当管理员在进行登录时,会执 行loadUserByUsername方法,用户存在就将用户授权信息放入到Collection中并缓存,不存在则抛出异常。 7.2、security安全框架 1、给需要权限验证的url用如下方式配置到配置文件中: pattern表示需要权限验证的匹配的url; access="hasAnyRole('ROLE_SUPPER','ROLE_PROJECTS')表示访问/projects/下面的所有url的用户,都必须是ROLE_SUPPER、ROLE_PROJECTS的角色 2、配置不需权限验证的外部访问接口: pattern表示不需要权限验证的匹配的url; create-session="stateless"主要是在RESTful API中,针对无状态的web调用; security="none"表示该url不走安全过滤器,任何用户都可以访问该接口。 7.3、security安全框架 1、使用security: 在web.xml中声明DelegatingFilterProxy. : 表示项目中所有路径的资源都要经过SpringSecurity. 注:最好将DelegatingFilterProxy写在DispatcherServlet之前.否则 SpringSecurity可能不会正常工作. 2、引用指定的SpringSecurity配置 7.4、security安全框架 3、SpringSecurity配置文件: authentication-failure-url="/login?login_error=t" authentication-success-handler-ref="itrusPortalUserLoginSucess" authentication-failure-handler-ref="itrusPortalUserFailureSucess" /> success-handler-ref="itrusPortalUserLogoutSucess" /> 7.5、security安全框架 每个Spring Security应用,只要使用了命名空间,就必须包含对应的元素。 它负责注册 AuthenticationManager,为应用各提供验证服务。 它也允许你定义一个别名,为内部实例,在你的配置 中来使用。 这些都写在命名空间介绍中。 所有元素,创建了AuthenticationProvider实例, 应该是这个元 素的子元素。例如portal中authentication-manager元素的配置: 7.6、security安全 authentication-provider元素DaoAuthenticationProvider的简化形式,aoAuthenticationProvider读取用户信息,从 itrusPortalUserDetailsService中,比较用户名/密码,来进行用户登录。 itrusPortalUserDetailsService实例是一个实现了UserDetailsService接口的类:com.itrus.portal.login.ItrusPortalUserDetailsService。更多资料可以下载Spring Security 3.x的api参考文档