暖和了
但还穿着秋裤
那叫自爱
那叫自爱
感觉到又要进入救火节奏
刚灭了一把火 总结一下就是,迭代开发修改,就是在埋地雷啊,然后在上线后的日子里,冷不丁爆一个,断胳膊断腿啊
<dependency>
<groupId>org.nutz</groupId>
<artifactId>nutz</artifactId>
<version>1.b.52</version>
</dependency>
<filter>
<filter-name>nutz</filter-name>
<filter-class>com.capinfo.zlzy.examapp.mvc.ExamappNutFilter</filter-class>
<init-param>
<param-name>modules</param-name>
<param-value>com.capinfo.zlzy.examapp.MainModule</param-value>
</init-param>
</filter>
Daos.createTablesInPackage(dao, "com.capinfo.zlzy.examapp", false);
FileSqlManager fm = new FileSqlManager("init_system_mysql.sql");
@SetupBy(value=MainSetup.class)
@Modules(scanPackage=true)
//ComboIocProvider的args参数, 星号开头的是类名或内置缩写,剩余的是各加载器的参数
// *js 是JsonIocLoader,负责加载js/json结尾的ioc配置文件
// *anno 是AnnotationIocLoader,负责处理注解式Ioc, 例如@IocBean
//*tx 是TransIocLoader,负责加载内置的事务拦截器定义, 1.b.52开始自带
@IocBy(type=ComboIocProvider.class, args={"*js", "ioc/",
"*anno", "com.capinfo.zlzy.examapp",
"*tx"})
@ChainBy(args="mvc/examapp-mvc-chain.js")
@Ok("json:full")
@Fail("jsp:views.error.500")
public class MainModule {
}
var ioc = {
dataSource : {
type : "com.alibaba.druid.pool.DruidDataSource",
events : {
create : "init",
depose : 'close'
},
fields : {
url : "jdbc:mysql://127.0.0.1:3306/test",
username : "root",
password : "root",
testWhileIdle : true,
validationQuery : "select 1" ,
maxActive : 100
}
},
dao : {
type : "org.nutz.dao.impl.NutDao",
args : [{refer:"dataSource"}]
}
};
@Table("t_acct_user")
public class UserGeneralInfo {
/**
* 会员标识
*/
@Id
@Column("id")
private Integer id;
/**
* 用户名
*/
@Column("login_name")
private String loginName;
/**
* 密码
*/
@Column("password")
@ColDefine(width=128)
private String password;
...................................
//就像@RequestMapping,制定url前缀
@At("/manager")
@IocBean // 声明为Ioc容器中的一个Bean 就像 @Controller
public class UserModule {
//注入service
@Inject
protected UserService userService;
//就像@RequestMapping,制定url前缀
@At({"/user"})
//执行GET方式
@GET
//制定方法返回后,访问的页面,含义是返回jsp视图,路径是views/user.jsp
@Ok("jsp:views.user")
public void main() {
}
/**
* 修改密码
* @param oldpassword
* @param password
* @param password2
* @param me
* @return
*/
//就像@RequestMapping,制定url前缀,未指定name,取方法名
//方法返回值可以是任意类型,nutz会将返回值放在一个key为obj的map中,就像model.addAttribute("obj",Object);
//@Param标识从页面传过来的值,这个注解不写也可以
//@Attr("me")UserGeneralInfo me 是去登录用户的session
//未指定@Ok,默认是返回json视图(MainModule中指定的)
@At
public Object updatepwd(@Param("oldpassword")String oldpassword, @Param("password")String password,@Param("password2")String password2,
@Attr("me")UserGeneralInfo me) {
if (Strings.isBlank(password) || password.length() < 6)
return new NutMap().setv("ok", false).setv("msg", "密码不符合要求");
if (!password.equals(password2))
return new NutMap().setv("ok", false).setv("msg", "两次密码输入不一致");
if(!(new Sha256Hash(oldpassword, me.getSalt()).toHex().equals(me.getPassword())))
return new NutMap().setv("ok", false).setv("msg", "旧密码输入不正确");
userService.updatePassword(me.getId(), password);
return new NutMap().setv("ok", true);
}
}