登录功能我们要求从后台验证一个用户是否合法。
前面一篇博文中,我们将前台传来的数据交给login()方法去处理,因此我们从这里入手开始。
1.action层的填写
既然前台传来了数据,那么我们就需要获取他,因此getModel()方法要返回我们的employee对象。
//模型驱动使用的对象
private Employee employee = new Employee();
@Override
public Employee getModel()
{
return employee;
}
然后我们要调用业务层的login(employee)方法处理,返回处理结果,根据结果的不同决定页面的跳转走向。
public String login(){
//调用业务层类
Employee existEmployee = employeeService.login(employee);
if(existEmployee==null){
//登录失败
this.addActionError("用户名或者密码错误");
return INPUT;
}else{
//登录成功
ActionContext.getContext().getSession().put("existEmployee",existEmployee);
return SUCCESS;
}
}
上面的代码中,如果登录成功,我们将该用户放到session中去,便于我们在前端页面显示欢迎条目。
好了,现在我们开始业务层的编写。
2.业务层
既然我们需要业务层的login方法,那么肯定需要现在接口层添加该方法,然后我们去实现层实现该方法。
实现如下:
@Override
/**
* 业务层登录方法
*/
public Employee login(Employee employee)
{
// TODO Auto-generated method stub
Employee existEmployee = employeeDao.findByUsernameAndPassword(employee);
return existEmployee;
}
下面轮到dao层了
3.DAO层
从业务层我们可以发现,我们需要一个findByUsernameAndPassword()方法,因此同业务层一样,我们在接口层创建相应的方法,然后在实现层中实现它。
@Override
/**
* DAO中根据用户名和密码查询用户
*/
public Employee findByUsernameAndPassword(Employee employee)
{
// TODO Auto-generated method stub
String hql = "from Employee where username=? and password = ?";
List<Employee> list = this.getHibernateTemplate().find(hql,employee.getUsername(),employee.getPassword());
if(list.size()>0){
return list.get(0);
}
return null;
}
注意hql语句的书写。
4.struts.xml文件配置
因为我们在action层配置了页面的返回值,因此要在struts.xml配置文件中配置相应的跳转页面。
<action name="employee_*" class="employeeAction" method="{1}">
<result name="input">/index.jsp</result>
<result name="success" type="redirect">/frame.jsp</result>
</action>
5.前端页面的处理
我们前面在session中添加了我们登录成功的用户的信息,因此我们可以在跳转成功页面显示该用户的信息,具体做法就是在top.jsp中添加信息:
欢迎你,<s:property value="#session.existEmployee.ename"/>
这样我们就可以在登录成功跳转的页面中看到登录用户的名字了。