最近几天没写东西了,呵呵,并不是没学习了,一直在努力了!前不久我在自己的QQ删了一个人,其实说真的我不想了,但是我太感性了,因为现在的我必须学东西了,有时候我连自己真的都控制不了啊,没办法,我只能对自己这样了,我没别的选择了,因为我必须理性啊,有时候真的希望自己冷血了,但是我真的做不到啊!呵呵,不乱砍了,现在开始讲spring+hibernate的登录了,
前台页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
购物系统
</head>
<SCRIPT Language = javascript>
<!--
//下面的副程序将执行资料检查
function isValid()
{
//下面的if判断语句将检查是否输入帐号资料
if(frmLogin.name.value == "")
{
window.alert("您必须完成用户名的输入!");
//显示错误信息
document.frmLogin.elements(0).focus();
//将光标移至帐号输入栏
return false;
}
//下面的if判断语句将检查是否输入帐号密码
if(frmLogin.password.value == "")
{
window.alert("您必须完成密码的输入!");
//显示错误信息
document.frmLogin.elements(1).focus();
//将光标移至密码输入栏
return false; //离开函数
}
frmLogin.submit(); //送出表单中的资料
}
-->
</SCRIPT>
<body>
<form name="frmLogin" action="login.html" method="POST" onSubmit="return isValid(this);">
用户名<input type="text" name="name" id="name"/><br>
密码<input type="password" name="password" id="password" /> <br>
<input type="submit" name="submit" value="登录"/>
<input type="reset" name="reset" value="重置"/>
</form>
</body>
</html>
LoginAction 代码如下:
package org.scuta.action;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.scuta.dto.LoginDTO;
import org.scuta.model.ChanPin;
import org.scuta.service.IListProductService;
import org.scuta.service.ILoginService;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class LoginAction extends SimpleFormController {
private String cancelView;
private ILoginService loginService;
public String getCancelView() {
return cancelView;
}
public void setCancelView(String cancelView) {
this.cancelView = cancelView;
}
public ILoginService getLoginService() {
return loginService;
}
public void setLoginService(ILoginService loginService) {
this.loginService = loginService;
}
public ModelAndView onSubmit(Object command,BindException exception) throws Exception {
LoginDTO loginDTO = (LoginDTO) command;
Boolean test = loginService.Login(loginDTO.getName(),
loginDTO.getPassword());
if (test) {
return new ModelAndView (this.getSuccessView());
} else {
return new ModelAndView (this.getCancelView());
}
}
}
LoginDAO类代码如下:
public interface ILoginDAO {
public List<User> Login(String name,String password);
}
public class LoginDAOImpl extends GenericDAOImpl<User> implements ILoginDAO{
public List<User> Login(String name,String password){
String hql="from User where username=?";
return this.find(hql,name);
}
}
一个接口一个实现类.
LoginService类代码如下:
public interface ILoginService {
public boolean Login(String name,String password);
}
public class LoginServiceImpl implements ILoginService {
private ILoginDAO loginDAO;
public ILoginDAO getLoginDAO() {
return loginDAO;
}
public void setLoginDAO(ILoginDAO loginDAO) {
this.loginDAO = loginDAO;
}
public boolean Login(String name, String password) {
// TODO Auto-generated method stub
List<User> user =loginDAO.Login(name, password);
if (user.size()==0) {
return false;
} else if (user.get(0).getPassword().equals(password)) {
return true;
} else {
return false;
}
}
}
同样了,在spring里面有一个IOC依赖注入,在service层注入DAO层,再在Controller层注入service层了,service层是业务逻辑层,DAO层是数据库持久层,controller层是控制层,转发页面,现在强调的是每层都是分层清晰的,功能单一的,不要混乱,尤其是写代码,不能把业务逻辑代码写到DAO层,就是不要混淆各层的任务了!这一点我也在学习过程中了,其实前不久我做了一个这种架构的系统了,但是由于实际经验实在是太少了,所以很多东西还在摸索阶段了,虽说按照这种方法做的,但是没理解了!最近心情不太爽了,各方面的原因了,看设计模式看了两个多月了,昨天晚上的确有点感觉了,本身想写点感受的,但是昨天又忘了,日子还长,一有感觉我就会发表自己的观点了!呵呵!加油了!