- 浏览: 317302 次
- 性别:
- 来自: 黑洞
最新评论
-
embracelong:
所以这篇文章是要说明两种部署有区别吗?有没有办法让两种部署行为 ...
Spring boot传统部署 -
zsf513:
怒赞
Spring batch的自动运行 -
phaibin:
我的试验结果是:ViewController会自动寻找同名的n ...
有关Nib文件的那些事。 -
weiqingfei:
dazuiba 写道你写到:
1 ...然后把MainWind ...
有关Nib文件的那些事。 -
dazuiba:
你写到:1 ...然后把MainWindow.xib中的Vie ...
有关Nib文件的那些事。
文章列表
但凡在公众网中提供服务的网站,基本上都有个用户注册,登录的过程。
所以,设计一套完善的注册登录功能是十分有必要的。
1.注册
a.为了防止用户恶意注册,一般注册需要是用户的邮箱,或者手机号,这样便可以通过 ...
Spring框架下的URL设计
- 博客分类:
- Java
实际上不管用任何框架,只要是不考虑用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 数据绑定时的类型转换错误
- 博客分类:
- Java
在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程序的快速搭建
- 博客分类:
- Android
如今,android的各种库非常丰富,好多东西拿来就用。
一个应用型的app,大概也就是把数据从网上或者本地加载表示到页面,另外提交极少的一些数据。
1.选型
由于google已经发布了官方的databinding组件,使用MVVM模式开发应该是个趋势。
2.各种周边库
2.1 网络
使用retrofit 2.0 + OKHttp + Gson的模式
2.2 处理流程
使用rxjava,rxandroid 处理流程比较明了,线程切换也比较方便,适合临时把处理放到另外一个线程的场景。
另外和上 ...