首先用eclipse建一个web工程,将工程改为utf-8。建好用到的包层,entity,dao,service,action层,并写一个简单的index.jsp主页。
导入ssh需要的jar包,建立三个框架的配置文件,然后先做一个增加用户的功能
首先在entity层建一个user对象:
@Entity
@Table(schema="sshdb",name="tb_user")
//如果是mysql此处的schema的值应该是数据库名称,如果是Oracle数据库,表示的就是用户
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String userAddress;
private int userAge;
private String userName;
private String passWord;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}}
给到dao、service层建立一个impl的资源包层用来写实现的代码
//增加用户
@Override
public void addUser(User user) {
// TODO Auto-generated method stub
Session cs = this.sessionFactory.getCurrentSession();
cs.save(user);
}
service层调用dao层:
@Override
@Transactional
public void addUser(User user) {
// TODO Auto-generated method stub
this.userdao.addUser(user);
}
注:@Transactional注解不能忘记加,不然配置文件加载时扫不到。
在action层掉用调用service层
@Action(value="addUser",results={@Result(name="adduser",location="/success.jsp")})
public String addUser(){
this.getUserService().addUser(user);
return "adduser";
}
如果功能实现成功则跳转到success.jsp页面
下面我们来写一下index.jsp网页:
<div id="container">
<form action="admin/addUser" id="ff" method="post">
<div class="col-md-4">
用户名:<input id="number" type="text" name="user.userName">
</div>
<div class="col-md-4">
密码:<input id="pname" type="password" name="user.passWord">
</div>
</br>
</br>
<input type="submit" class="btn" id="qd" value="提交">
</form></div>
简单写一个添加的表单,action写相对路径时候记得核对好,往action层传过去用户名和密码,action层新建一个user对象,作为依赖接受传来的userName和userPassWord。我们为了更加完善增加用户的功能,决定利用ajax去判断当前用户是否已经存在去提升下功能的健壮性。
这次我们从jsp开始写,具体实现如下:
首先我们要在当前jsp文件里写一个ajax去判断后台是否存在这个用户
$(function(){
$("#number").mouseleave(function(){
var user1=$("#number").val();
$.ajax({
url:'admin/exUser',
type:'get',
data:{"userName":user1},
dataType:'text',
success:function(data){
if(data==1){
alert("用户名已存在")}
}
})
})
})
既然在ajax层做了规定那么action层应该写出对应的text传值
@Action(value="exUser")
public void existingUser() throws IOException{
boolean b = this.getUserService().existingUser(userName);
HttpServletResponse response = ServletActionContext.getResponse();
PrintWriter out = response.getWriter();
if(b){
out.print(1);
//如果存在返回1
}
else{
out.print(2);
//如果不存在返回2
}
out.close();
}
因为是通过userName判断所以只传一个userName值就可以了。
service层写判断依据
@Override
@Transactional
public boolean existingUser(String username) {
System.out.println(username);
List<User> fb = this.userdao.findUserByUserName(username);
if (fb.size()<1){
return false;
}else{
return true;
}
}
一样不能忘了加@Transactional注解,再写dao层的放法:
@Override
public List<User> findUserByUserName(String username) {
Session cs = this.sessionFactory.getCurrentSession();
Query q = cs.createQuery("from User where userName=?");
q.setParameter(0, username);
List list = q.list();
return list;
因为判断事务都是在service层完成的所以这里可以返回一个list集合。
完成上述步骤一个简单的用户添加小功能就算是完成了。