数据库(一个user表,有点简陋只有username和password两个属性):
文件结构和用到的一些架包:
我写方法是用三层架构,各部分负责不同的功能:
下面以注册操作为例子:
register.jsp:
<html>
<head>
<title>Title</title>
</head>
<body>
<h1 style="color: yellow;">注册</h1>
<hr>
<font style="color: red;font-size: 25px;"><s:property value="msg"></s:property> </font>
<form action="${pageContext.request.contextPath}/RegisterAction" method="post">
用户名:<input type="text" name="username"><br>
密码: <input type="text" name="password"><br>
<input type="submit" value="注册">
</form>
</body>
</html>
RegisterAction :
package com.fang.web;
import com.fang.domain.User;
import com.fang.service.RegisterService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class RegisterAction extends ActionSupport implements ModelDriven<User> {
public User user = new User();
@Override
public String execute() throws Exception {
RegisterService registerService = new RegisterService();
boolean success = registerService.insertUser(user);
if(success){//判断是否插入成功
return "success";
}else{
ActionContext.getContext().put("msg","用户名重复请重新输入");
return "error";
}
}
@Override
public User getModel() {
return user;
}
}
RegisterService :
package com.fang.service;
import com.fang.dao.UserDao;
import com.fang.domain.User;
import java.sql.SQLException;
public class RegisterService {
public boolean insertUser(User user) throws SQLException {
UserDao userDao = new UserDao();
if(userDao.isExist(user) == null){//如果数据库中没有数据,则插入
if(userDao.insertUser(user) > 0){//判断插入是否为失败
return true;//>0表示插入成功,返回true
}else{
return false;
}
}else{
return false;//用户名重复返回false
}
}
}
UserDao:
package com.fang.dao;
import com.fang.domain.User;
import com.yl.lain.utils.C3p0DataSourceUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.SQLException;
public class UserDao {
public User findUser(User user) throws SQLException {//用户登录匹配数据库中是否有用户
QueryRunner queryRunner = new QueryRunner(C3p0DataSourceUtils.getDataSource());
String sql = "select * from user where username=? and password=?";
User u = queryRunner.query(sql,new BeanHandler<User>(User.class),user.getUsername(),user.getPassword());
return u;
}
public User isExist(User user) throws SQLException {//判断用户名是否重复,是否已经注册
QueryRunner queryRunner = new QueryRunner(C3p0DataSourceUtils.getDataSource());
String sql = "select * from user where username=?";
return queryRunner.query(sql,new BeanHandler<User>(User.class),user.getUsername());
}
public int insertUser(User user) throws SQLException {//注册操作,插入用户
QueryRunner queryRunner = new QueryRunner(C3p0DataSourceUtils.getDataSource());
String sql = "insert into user value(?,?)";
System.err.println(sql);
// Object[] params = {user.getUsername(),user.getPassword()};
int i = queryRunner.update(sql,user.getUsername(),user.getPassword());
return i;
}
}
User:
package com.fang.domain;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
}
运行效果: