`

Spring笔记

 
阅读更多
  • Spring MVC 设置Response的charset
    @RequestMapping(value = "/login", produces = "text/plain;charset=gb2312")
    @ResponseBody
    public String login(HttpServletRequest req, HttpServletResponse resp) {
            
    }
     
  • Spring MVC 超时处理
    //在stackoverflow上看到的一个有趣的案例
    //场景: 用户访问,如果后台处理时间<10s时返回正常结果页面,否则返回超时页面
    
    //AsyncTaskExecutor异步任务处理, 但它的submit()方法是阻塞型的.
    final Future<ModelAndView> future = asyncTaskExecutor.submit(new Callable<ModelAndView>() {
        @Override
        public ModelAndView call() throws Exception {
            //lengthy computations...
            return new ModelAndView("done");
        }
    });
    try {
        return future.get(10, TimeUnit.SECONDS); // 设置超时时间
    } catch (TimeoutException e) { //捕获超时异常进行处理
        return new ModelAndView("timeout");
    }
     
  • Spring MVC 获取 Session Attribute

使用范例

@RequestMapping("/data/file/selectFileLog")
public @ResponseBody Pagination selectFileLog(@RequestBody Pagination page, 
			@SessionAttribute("loginUser")LoginUser loginUser){
        //do sth.
}

 实现步骤: 

//1. 创建注解类
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface SessionAttribute {
	
	public String value();
	
	public boolean required() default true;
	
}
//2. 实现Resolver
public class SessionAttributeArgumentsResolver implements WebArgumentResolver {
	
	Logger console = Logger.getLogger(SessionAttributeArgumentsResolver.class);

	@Override
	public Object resolveArgument(MethodParameter param, NativeWebRequest request)
			throws Exception {
		Annotation[] annotations = param.getParameterAnnotations();
		for (Annotation annotation : annotations){
			if(SessionAttribute.class.isInstance(annotation)){
				SessionAttribute sa = (SessionAttribute) annotation;
				String attrName = sa.value();
				boolean required = sa.required();
				Object res = request.getAttribute(attrName, RequestAttributes.SCOPE_SESSION);
				if (null == res && required){
					throw new RuntimeException("Attribute:{ " + attrName + " } not exsited in session !");
					
				}
				return res;
			}
		}
		return UNRESOLVED;
	}

}
<!--3. 配置Resolver -->
<mvc:annotation-driven >
        <mvc:argument-resolvers>
            <bean id="sessionAttributeArgumentsResolver" class="com.lhw.util.base.SessionAttributeArgumentsResolver"></bean>
        </mvc:argument-resolvers>
</mvc:annotation-driven>

  

  • Spring JDBC 插入并获取新增记录的ID
public static long commonInsert(JdbcTemplate jt, String tableName, String idColumn, Map<String, Object> object){
	SimpleJdbcInsert sji = new SimpleJdbcInsert(jt)
			.withTableName(tableName)
			.usingGeneratedKeyColumns(idColumn);
	return sji.executeAndReturnKey(object).longValue();
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics