📄 logincontroller.java
字号:
package onlyfun.caterpillar.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import onlyfun.caterpillar.model.IUserDAO;
import onlyfun.caterpillar.model.User;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
//SimpleFormController是AbstractForm-Controller的子类,简单的表单可以
//直接继承这个类,并重新定义onSubmit()方法以处理用户的请求...
public class LoginController extends SimpleFormController {
//IUserDAO的实例将使用Spring的依赖注入设置(这在web-config.xml中会有相关的设置)...
private IUserDAO userDAO;
//直接取得了Command的实例,并在转换操作接口为LoginForm之后,直接操作getXXX()方法来取得提交的参数...
//onSubmit()方法接收command对象,这个对象代表了表单对象...
public LoginController() {
this.setCommandClass(LoginForm.class);
}
//一旦用户提交了登录页面,应用程序可以从LoginController的onSubmit()方法中的命名对象检索出表单数据...
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command,
BindException exception) throws Exception {
//在LoginController中,将从LoginForm中撷取相关信息,并设置至一个User实例中,
//接下来取得IUserDAO对象,以取得数据库的user表格中的用户信息...
LoginForm form = (LoginForm) command;
//取得IUserDAO对象,以取得数据库的user表格中的用户信息...
User user = userDAO.findByName(form.getUsername());
if (user == null) {
//reuectValue()方法中,参数1:为表单物件属性,参数2:指定资源档案中的键(key),
//参数3:指定资源档案中的参数(在这里没有这个参数),参数4:预设讯息则是使用于找不到资源档案时,所要呈现的预设讯息...
exception.rejectValue("username", "no_such_user", "用户名不正确");
//getModel()方法回传一个Map对象,之前所使用的rejectValue()所储存的错误消息就包括在这个对象中,
//它将之设置给ModelAndView,之后会处理为绑定消息并在标签上输出...
return new ModelAndView(this.getFormView(), exception.getModel());
} else if (user != null && !user.getPasswd().equals(form.getPasswd())) {
exception.rejectValue("passwd", "wrong_passwd", "密码错误");
//构造ModelAndView的第一个参数为要呈现的目标网页(或资源)路径,第二个参数是设置用来取得Model对象的键(key),第三个参数是给View层呈现数据的Model对象
//参数getFormView()与定义文件web-config.xml中的loginController实例中的"formView"属性相对应...
return new ModelAndView(this.getFormView(), exception.getModel());
} else {
//Session对象的属性中设置"valid_user",用户是否登录即是根据这个属性来进行判断的,
//如果不符合则设置相关错误消息,并送回至登录页面...
request.getSession().setAttribute("valid_user", user.getUsername());
return new ModelAndView(this.getSuccessView());
}
}
public void setUserDAO(IUserDAO userDAO) {
this.userDAO = userDAO;
}
public IUserDAO getUserDAO() {
return userDAO;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -