实例内容
- 创建DAO(Data Access Oject)接口:BaseDAO
- 创建其实例化类:UserDAO 用于获取数据库struts中的userinfo表中的内容
- 创建User的Java Bean类,含有username和password,以及其get和set方法
- 修改Action中的验证用户名机制,将验证通过DAO层与数据库进行通信判别。
实例代码
BaseDAO:
package UserBlock;
import java.util.ArrayList;
import java.util.Collection;
/**
* DAO(Data Access Oject)接口
* Created by Richard on 2017/6/16.
*/
public interface BaseDAO {
public boolean insert(String username,String password) throws Exception;
public Collection select() throws Exception;
public boolean delete(String username) throws Exception;
public ArrayList up_select(String username) throws Exception;
public boolean update(String username,String password) throws Exception;
}
UserDAO:
package UserBlock;
import javax.xml.transform.Result;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
/**
* Created by Richard on 2017/6/16.
*/
public class UserDao implements BaseDAO {
private String url = "jdbc:mysql://localhost:3306/struts";
private String user = "root";
private String password = "root";
@Override
public boolean insert(String username,String upassword) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String sql = "insert into userinfo(username,password)Values(?,?)";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, username);
pst.setString(2, upassword);
int i = pst.executeUpdate();
if (i >= 1) {
return true;
} else {
return false;
}
}
@Override
public Collection select() throws Exception {
ArrayList al = new ArrayList();
Class.forName("com.mysql.jdbc.Driver");
String sql = "select * from userinfo";
Connection conn = DriverManager.getConnection(url, user, password);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
if (rs.next()) {
User Get = new User();
Get.setUsername(rs.getString("username"));
Get.setPassword(rs.getString("password"));
al.add(Get);
}
return al;
}
@Override
public boolean delete(String username) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String sql = "delete from userinfo where username=?";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, username);
int i = pst.executeUpdate();
if (i >= 1) {
return true;
} else {
return false;
}
}
@Override
public ArrayList up_select(String username) throws Exception {
ArrayList al = new ArrayList();
Class.forName("com.mysql.jdbc.Driver");
String sql = "select * from userinfo where username=?";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1,username);
ResultSet rs = pst.executeQuery();
if (rs.next()) {
User Get = new User();
Get.setUsername(rs.getString("username"));
Get.setPassword(rs.getString("password"));
al.add(Get);
}
return al;
}
@Override
public boolean update(String username,String upassword) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String sql = "update userinfo set password=? where username=?";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1,upassword);
pst.setString(2,username);
int i = pst.executeUpdate();
if (i >= 1) {
return true;
} else {
return false;
}
}
}
新修改的Action:
package UserBlock;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.Map;
import java.util.logging.LogManager;
/**
* Created by Richard on 2017/6/16.
* 继承ActionSupport实现一个Action
* 登陆界面通过loginuser.action调用login()方法来处理数据
* login()方法中通过ActionContext调用Session对象,存入输入错误的数据
* 通过addActionMessage()方法向页面输出相关信息
* 注册页面通过reguser.action调用reg()方法来处理数据
*/
public class UserAction extends ActionSupport {
private String INDEX="index";
private String LOGIN="login";
private String REG="register";
private String username;
private String password;
public String getCompassword() {
return compassword;
}
public void setCompassword(String compassword) {
this.compassword = compassword;
}
private String compassword;
private UserDao user;
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;
}
public String login(){
try{
user=new UserDao();
ArrayList result=user.up_select(username);
if(result.size()>0){
User aim= (User) result.get(0);
if(aim.getPassword().equals(password)){
/*登陆成功*/
return INDEX;
}else{
ActionContext applicton=ActionContext.getContext();
Map session=applicton.getSession();
int count;
if(session.get("count")==null){
count=0;
}else{
count= (int) session.get("count");
}
if(count>=3){
addActionMessage("错误次数过多");
count=0;
session.put("count",count);
return LOGIN;
}else{
count++;
addActionMessage("您输入的用户名或密码错误"+count);
session.put("count",count);
return LOGIN;
}
}
}else{
addActionMessage("该用户不存在,已经跳转到注册页面");
return REG;
}
}catch (Exception e){
addActionError(e.getMessage());
System.out.println(e.getMessage());
e.printStackTrace();
return LOGIN;
}
}
public String reg(){
try{
user=new UserDao();
ArrayList result=user.up_select(username);
if(result.size()>0)
{
addActionMessage("该用户已经存在");
return REG;
}
else{
if(user.insert(username,password)){
return INDEX;
}else{
addActionMessage("发生未知错误,请重试!");
return REG;
}
}
}catch (Exception e){
addActionError(e.getMessage());
return REG;
}
}
}
项目代码
Git项目源代码,持续更新