⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logincontroller.java

📁 网站购物车经典是例子
💻 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 + -