1 根据提供的pdm文件生成sql
第一步:生成
第二步:在这个软件里 database 里点击generate database 保存 我保存在D:\webDemo\Bos19
第三步:在里生成表。
第四步:在myeclipse里使用创建链接
第五步:右键t_user表 点击hibernate reverse engineering 将生成
这一步的前提是hibernate 的jar包是myeclipse自带的。创建一个java项目 如table2hbm 然后右键项目名 -》myeclipse->生成hibernate
生成的.xml文件存在一个小问题 就是约束文件版本不一致。可以查阅hibernate-mapping.3.0.dtd 进行查看。
总结day2
1.完成了 登录功能,
重点是加入一个<a>标签 点击登录,提交表单数据到action。οnclick="document.forms[0].submit()"
当启动服务器时,就会加载struts.xml文件,ActionProxy读取配置信息调取action,然后返回result 。
2.利用ajax修改密码(Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术)
第一步:使用easy-ui的validatebox来验证。
<form id="editPasswordForm">
<table cellpadding=3>
<tr>
<td>新密码:</td>
<td><input id="txtNewPass" type="Password" class="txt01 easyui-validatebox"
required="true" data-options="validType:'length[4,8]'"
/></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input id="txtRePass" type="Password" class="txt01 easyui-validatebox"
required="true" data-options="validType:'length[4,8]'"
/></td>
</tr>
</table>
</form>
第二步:为确定绑定事件
<div region="south" border="false" style="text-align: right; height: 30px; line-height: 30px;">
<a id="btnEp" class="easyui-linkbutton" icon="icon-ok" href="javascript:void(0)" >确定</a>
<a id="btnCancel" class="easyui-linkbutton" icon="icon-cancel" href="javascript:void(0)">取消</a>
</div>
<script type="text/javascript">
//为“确定”按钮绑定事件
$("#btnEp").click(function(){
//进行表单校验
var v = $("#editPasswordForm").form("validate");//对应表单中的所有输入框进行校验
if(v){//表单校验通过
//判断两次输入是否一致
var v1 = $("#txtNewPass").val();
var v2 = $("#txtRePass").val();
if(v1 == v2){
//输入一致,发送ajax请求,修改当前用户的密码
var url = "${pageContext.request.contextPath}/userAction_editPassword.action";
$.post(url,{"password":v1},function(data){
if(data == '1'){
//修改密码成功
$.messager.alert("提示信息","密码修改成功!","info");
}else{
//修改失败
$.messager.alert("提示信息","密码修改失败!","warning");
}
//关闭修改密码的窗口
$("#editPwdWindow").window("close");
});
}else{
//输入不一致,提示用户输入不一致
$.messager.alert("提示信息","两次输入密码不一致!","warning");
}
}
});
</script>
做到这一步后可以在浏览器查看 密码是否更新 然后再下一步。同样,点击确认后会调到action
服务器端 :
第一步 :在action里添加editPassword方法。
第二步:在service接口IBaseDao里添加 editPassword方法
第三步:在service接口的实现类UserServiceImpl里 添加 editPassword方法
第四步:在Dao层 IBaseDao里提供通用修改方法
第五步:在Dao层BaseDao中扩展此方法
/**
* 修改当前登录用户密码
* @throws IOException
*/
public String editPassword() throws IOException{
User user = (User) ServletActionContext.getRequest().getSession().getAttribute("loginUser");
String password = model.getPassword();//新密码
password = MD5Utils.md5(password);
String flag = "1";
try{
userService.editPassword(password,user.getId());
}catch (Exception e) {
//修改密码失败
flag = "0";
}
ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8");
ServletActionContext.getResponse().getWriter().print(flag);
return NONE;
}
//service的接口
public void editPassword(String password, String id);
//接口的实现类
public void editPassword(String password, String id) {
userDao.executeUpdate("editPassword", password,id);
}
//Dao层的接口IBaseDao
//提供通用修改方法
public void executeUpdate(String queryName,Object ...objects);
/**
* 通用更新方法
*/
public void executeUpdate(String queryName, Object... objects) {
Session session = this.getSession();// 从本地线程中获得session对象
// 使用命名查询语句获得一个查询对象
Query query = session.getNamedQuery(queryName);
// 为HQL语句中的?赋值
int i = 0;
for (Object arg : objects) {
query.setParameter(i++, arg);
}
query.executeUpdate();// 执行更新
}
在User.hbm.xml中定义一个HQL语句,用于修改密码
<!-- 命名查询语句 -->
<query name="editPassword">
UPDATE User SET password = ? WHERE id = ?
</query>
OK至此结束。