package nm.admin.action; import java.util.Vector; import nm.Constants; import nm.DB; import nm.User; import nm.admin.form.UserInfoForm; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.sql.DataSource; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; public final class NewUserAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //获取来自UserInfoForm对象的数据 UserInfoForm newUserForm = (UserInfoForm) form; String username = newUserForm.getUsername(); String password = newUserForm.getPassword(); int sex = newUserForm.getSex(); String email = newUserForm.getEmail(); String address = newUserForm.getAddress(); String grade1 = newUserForm.getGrade(); String grade = null; if (grade1.equals("1")) { grade = "admin"; } else { grade = "user"; } //使用struts-config.xml配置文件的数据源信息生成数据库操作类DB的对象 ServletContext context = servlet.getServletContext(); DataSource dataSource = (DataSource) context .getAttribute(Constants.DATASOURCE_KEY); DB db = new DB(dataSource); //新建需要用到的对象,并为其初始化。其中表示转发页面的 pageForward被初始化为ToErrorPage。 HttpSession session = request.getSession(); ActionMessages errors = new ActionMessages(); String pageForward = "ToErrorPage"; //新建User对象,保存从UserInfoForm对象得到的数据 User user = new User(); user.setUsername(username); user.setPassword(password); user.setSex(sex); user.setEmail(email); user.setAddress(address); user.setGrade(grade); //使用User.insert方法将新用户信息插入到数据库中 if (user.insert(db)) { //如果User.insert方法执行成功的话 //从数据库中查询得到所有用户的信息,包含到Vector中 //并将这个Vector保存到session中。然后将请求转发到ToUserList所代表的路径 Vector userVector = new Vector(); userVector = User.searchUsers(db); session.setAttribute(Constants.USER_LIST_KEY, userVector); pageForward = "ToUserList"; } else { //如果User.insert方法执行失败的话, //则在ActionMessage对象中封装消息(由error.newuser.insert.failed所代表), //并保存到request范围内,此时表示转发页面的pageForward 对象仍然为初始值ToErrorPage errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.newuser.insert.failed")); if (!errors.isEmpty()) { saveErrors(request, errors); } } //关闭数据库连接,并根据pageForward值将请求转发到相应路径 db.close(); return mapping.findForward(pageForward); } }
|