Eclipse,Tomcat,MySql SSH框架的各种jar包
既然是添加,那就先弄一个添加页面1、在WEB-INF目录下新建stu-add.jsp页面用作添加用2、在st-add.sjp中引入struts2的标签3、写页面body部分的代码,如图:
先想一个事,学生信息中有一个所属学院,这个所属学院不是我们自己填写的,是从college学院表中取出来让我们选择的,因此我们需要把学院信息先查询出来。然后看我们在stu-list.jsp中添加和编辑都有一个链接“”,在stu-add.jsp中form也有一个action“stu-save”。1、在StudentAction中实现add()这个方法,实现college的查询StudentAction中:public String add() { request.put('college', collegeService.getAll()); return 'input'; }CollegeService中:package com.ssh.service; import java.util.List; import com.ssh.dao.CollegeDao;import com.ssh.entities.College; public class CollegeService { private CollegeDao collegeDao; public void setCollegeDao(CollegeDao collegeDao) { this.collegeDao = collegeDao; } public List
运行看效果如图所示:在eclipse中看,那个出生日期栏看不出来,并不是我们写错了,我们复制地址去网页上看:可以看到效果
在StudentAction中实现save()方法,添加和编辑我都放在save()方法中实现1、实现ModelDriven和Preparable这两个接口,重写他们的方法:
2、去struts.xml中配置一个拦截器,我们不走这个方法:public void prepare() throws Exception { }
save()方法相应的StudentDao和StudentService代买如下:StudentDao层:public void saveOrUpdate(Student student) { getSession().saveOrUpdate(student); } public Student get(Integer id) { return (Student) getSession().get(Student.class, id); }StudentService层:public void saveOrUodate(Student student) { studentDao.saveOrUpdate(student); } public Student get(Integer id) { return studentDao.get(id); }
运行效果如下:
接下来,我介绍一下如何用ajax去验证做添加时检验输入的用户名是否可用,在这里,只判断用户名是否已存在,没有其他的约束条件,1、在stu-add.jsp页面导入JQuery: 此处引用的这个需要网络才有用,想局网测试那就重新导入自己下载的JQuery,并正确添加路径)
2、给submit标签加一个name
获取页面传过来的值stuName;private String stuName; public void setStuName(String stuName) {this.stuName = stuName;}
实现validateStuName():public String validateStuName() throws Exception {if (studentService.validateStuName(stuName)) {inputStream = new ByteArrayInputStream('1'.getBytes('UTF-8'));} else {inputStream = new ByteArrayInputStream('0'.getBytes('UTF-8'));}return 'ajax-success';}
StudentDao层:public Student validateStuName(String stuName) {String hql = 'FROM Student s WHERE s.stuName=?';Query query = getSession().createQuery(hql);return (Student) query.setString(0, stuName).uniqueResult();}
StudentService层:public boolean validateStuName(String stuName) {return studentDao.validateStuName(stuName)==null; }
最终运行效果: