package com.wang.action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.wang.dao.UserDao;
import com.wang.dao.UserDaoImpl;
import com.wang.entity.User;
public class LoginAction extends ActionSupport implements ModelDriven {
User user = new User();
UserDao useDao = new UserDaoImpl();
public String login() {
ActionContext ac = ActionContext.getContext();
User us = useDao.login(user);
String str;
if (us.getUsername() != null) {
ac.getSession().put("user", us);
str = "success";
} else {
ActionContext.getContext().put("msg", "用户名或密码错误");
str = "input";
}
System.out.println(str);
return str;
}
public String register() {
ActionContext ac = ActionContext.getContext();
User us = useDao.register(user);
String str1;
ac.getSession().put("user", us);
str1 = "success";
return str1;
}
//注销用户
public String clearSession() {
ActionContext ac = ActionContext.getContext();
Map<String, Object> session = ac.getSession();
session.clear();
return INPUT;
}
//从首页跳转到index.jsp,会被拦截器拦截,若session没有user数据则跳转到登录界面
public String index() {
return SUCCESS;
}
@Override
public User getModel() {
return user;
}
}
package com.wang.dao;
import com.wang.entity.User;
public interface UserDao {
public User login(User user);
public User register(User user);
}
package com.wang.dao;
import java.sql.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.wang.entity.User;
import com.wang.jdbcutils.DBConnection;
public class UserDaoImpl implements UserDao {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
@Override
public User login(User user) {
User us = new User();
con = DBConnection.getDBConnection();
String sql = "select * from user where username=? and password = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
rs = pstmt.executeQuery();
//将从数据库中查找数据,若没找到us则为null
while (rs.next()) {
us.setUsername(rs.getString("username"));
us.setPassword(rs.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return us;
}
Statement stat = null;
public int executeUpdate(String sql) {
try {
stat.executeUpdate(sql);
return 0;
} catch (Exception e) {
// TODO: handle exception
}
return -1;
}
public User register(User user) {
User us = new User();
con = DBConnection.getDBConnection();
String sql = "insert into user (username,password)values('" + us.getUsername() + "','" + us.getPassword() + "')";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, us.getUsername());
pstmt.setString(2, us.getPassword());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(null, pstmt, rs);
}
return us;
}
}
package com.wang.entity;
public class User {
private String username;//用户名
private String password;//密码
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;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
}
package com.wang.Interceptor;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation arg0) throws Exception {
ActionContext ac = arg0.getInvocationContext();
// 获取session中的user类,若没有则user==null
Object user = ac.getSession().get("user");
if (user != null) {
return arg0.invoke();
} else {
ac.put("msg", "请登录!");
return Action.INPUT;
}
}
}
登录、拦截器,都能实现,就注册实现不了,求大神解救