`
weiqingfei
  • 浏览: 317302 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论
文章列表
但凡在公众网中提供服务的网站,基本上都有个用户注册,登录的过程。 所以,设计一套完善的注册登录功能是十分有必要的。 1.注册    a.为了防止用户恶意注册,一般注册需要是用户的邮箱,或者手机号,这样便可以通过 ...
 实际上不管用任何框架,只要是不考虑用ajax,那么URL都不可能完全遵循RESTful,但是这不妨碍设计一套尽量RESTful,然后也不失实用性的URL规范。   如果使用Spring的话,尽量让请求mapping到具体方法上,而不是在方法里写分支。 这样的话,可以使用以下规范    请求方法动作 项目指定动作  请求按钮指定动作  URL  类方法  备考 GET     /posts index 资源一览取得 GET     /posts/create create 创建初始化页面 POST     /posts   ...

设计RESTful的API

 一般的简单操作,基本上都能简化为一下几种 方法 URL 类方法 备注 GET /posts index 一覧 GET /posts?key1=xxx&key2=xxx index 检索 GET /posts/create create 作成画面取得 POST /posts store 作成 GET /posts/{:id} show 取得特定资源 GET /posts/{:id}/edit edit 更新画面取得 PUT /posts/{:id} update 更新特定资源 DEL ...
在web开发中比较流行PRG(Post/Redirect/Get)做法,如果有数据输出的话,会放到session里。 对于@RequestMapping注解的方法,直接通过参数注入,把RedirectAttributes实例注入进去就好了 但是,对于@ExceptionHandler注解的方法,却不行。这是因为@ExceptionHandler注解处理类ExceptionHandlerMethodResolver没有RedirectAttributes参数进行处理, 实际上RedirectAttributes也只是个辅助类,最终还是要把内容输出到FlashMap里,我们可以直接输出。 ...

关于采番表设计

对于业务表,基本上都会给主键一个编号,尤其是主从表的时候,从表往往是根据主表的主键关联的。 在mysql里通常用一个自增字段做这个编号,但是自增字段有个问题就是不大好管理,尤其是数据库重启,或者迁移的时候。 如果一个表的自增字段毫无业务意义,即使在维护数据库的时候,对这个字段进行重拍,都不会影响业务的话,那么就没啥问题。 但像上面所说,还有其他表参照这个字段的话,那么这个字段最好是自己采番,而不是要依赖于数据库的动作。   1种方法是采番用UUID,这样即使是在分布式数据库时都可以用,但是同样有小概率重复,如果是单机的话,也没必要。 另外一种方法,就是设计一个采番数据库了,设计一个 ...
在Spring的数据绑定里,可以使用@ModelAttribute把表单绑定到JavaBean上。 但是大家都知道从客户端传过来的数据实际上首先都是字符型的,如果绑定对象JavaBean上有别的类型,那么势必需要进行类型转换。 在这点上Spring做的比较欠缺,在绑定之前并没有进行类型check,硬生生的进行转换。 比如转换为数字或者日期类型时   public class PersonForm { @Size(min=2, max=30) private String name; @NumberFormat(pattern="#,# ...
如果双方都用ehcache作为缓冲库的话,对于cachemanger的设定会产生冲突,因为如果没有给shiro的EhCacheManager设定cachemanager的话,会创建一个默认名称的cachemanager,而spring的cache自动配置也同样会创建一个默认名称的cachemanager,由于ehcache2.5以后,不允许同一个jvm上存在两个同样名字的cachemanager,所以会报错。 解决的方法有两个,一个是自定义配置java文件,把名称改为另外一个,或者干脆就用同一个cachemanager。 下面是用同一个cachemanager时的配置方法。 @Bean ...
实际上在Spring boot里用Spring Security最合适,毕竟是自家东西,最重要的一点是Spring Security里自带有csrf filter,防止csrf攻击,shiro里就没有。 但是Spring Security有点太复杂,custmize起来比较费力,不如shiro来的简单。 如果想要在Spring boot里使用shiro,需要进行以下配置,首先pom.xml里要添加shiro的依赖。   <dependency> <groupId>org.apache.shiro</groupId> & ...
一个最简单的spring batch的程序,照办官网的sample,如下 一个配置程序   @Configuration @EnableBatchProcessing @EnableAutoConfiguration public class BatchConfiguration { @Autowired private JobBuilderFactory jobBuilderFactory; @Autowired private StepBuilderFactory stepBuilderFactory; @Bean public ...
spring boot里,在包spring-boot-autoconfigure里有个datasource自动配置类 写道 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration  在配置文件application.properties里,配置了spring.datasource.*后,将自动配置datasource @Conditional(DataSourceAuto ...
使用spring boot很方便,一个jar包就可以启动了,因为它里面内嵌了tomcat等服务器。 但是spring boot也提供了部署到独立服务器的方法。 如果你看文档的话,从jar转换为war包很简单,pom.xml的配置修改略去不讲。 只看source的修改,很简单,只要一个配置类,继承自SpringBootServletInitializer, 并覆盖configure方法。 @SpringBootApplication public class TestApplication extends SpringBootServletInitializer{ @O ...
mysql默认的编码(character_set_server)是latin1。 当创建DB时,若没指定编码,那么DB的编码和character_set_server一致。 当创建Table时,若没指定编码,那么Table的编码和DB的编码一致。 当创建Column时,若没指定编码,那么Column的编码和Table的编码一致。   对于版本大于等于4.1.0的mysql,通过设置character-set-server,jdbc会自动探测这个编码。   [mysqld] character-set-server = utf8     如果不想使用自动探测,可以在链接中指 ...
spring boot里,扫描的class对象是用注解@ComponentScan(未指定的情况下默认是main函数所在package)来指定的。 然后通过类ComponentScanAnnotationParser来读取这些packages,交给ClassPathScanningCandidateComponentProvider来扫描这些类,找到package下所有类的活默认是由PathMatchingResourcePatternResolver来完成的,其实最终还是有jdk里ClassLoader类的getResources方法来做。 这个getResources方法有个path ...
关于Spring boot和mybatis的结合使用,网上已经有很多介绍了。 基本上就是写个配置文件,指定SqlSessionFactory和TransactionManager的bean定义,还有指定MapperScan的扫描路径。   实际上这个配置文件不写,也没啥问题,对于TransactionManager,有DataSourceTransactionManagerAutoConfiguration已经帮你定义好了。 至于,SqlSessionFactory,其实也有MybatisAutoConfiguration帮着定了,要做的只是在application.properti ...
如今,android的各种库非常丰富,好多东西拿来就用。 一个应用型的app,大概也就是把数据从网上或者本地加载表示到页面,另外提交极少的一些数据。 1.选型    由于google已经发布了官方的databinding组件,使用MVVM模式开发应该是个趋势。   2.各种周边库    2.1 网络          使用retrofit 2.0 + OKHttp + Gson的模式      2.2 处理流程          使用rxjava,rxandroid 处理流程比较明了,线程切换也比较方便,适合临时把处理放到另外一个线程的场景。          另外和上 ...
Global site tag (gtag.js) - Google Analytics