【前言】
不到一个月的时间,璐小编成功完成SSH网上商城项目。写到博客第一句话以资鼓励~~上篇博客简单解析了SSH框架,本篇博客将以后台登录功能代码为线索,简单解析使用SSH框架如何实现一条功能线。
【SSH实现后台登录功能】
看官先别急,先看看SSH功能一条线的导图,先在心底有个大概的印象,然后我们就粗发~~1.以后台登录为例。首先,我们要有登录的jsp页面。也要建立登录相关的Action类、Service类、Dao类(放到package里更便于管理)。
<!-- 后台登录的Service -->
<bean id="adminUserService" class="cn.itcast.shop.adminuser.service.AdminUserService">
<property name="adminUserDao" ref="adminUserDao"/>
</bean>
<!-- 后台登录的Dao -->
<bean id="adminUserDao" class="cn.itcast.shop.adminuser.dao.AdminUserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
3. Jsp页面会涉及到我们的具体方法 —— action ,使用action接收我们一系列操作之后的返回值。参考以下代码,我们看到在form表单里,有一个action方法,它调用adminUser_login.action 。
关键代码:
<form method="post" action="${pageContext.request.contextPath }/adminUser_login.action" target="_parent" name='theForm' οnsubmit="return validate()">
<table cellspacing="0" cellpadding="0" style="margin-top: 100px" align="center">
<tr>
<td><img src="${pageContext.request.contextPath }/images/login.png" width="178" height="256" border="0" alt="SHOP" /></td>
<td style="padding-left: 50px">
<table>
<tr>
<td>管理员姓名:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>管理员密码:</td>
<td><input type="password" name="password" /></td>
</tr>
......
4.AdminUserAction 中的login方法,调用 adminUserService,并且接收service 返回值。
/**
* Action层后台登录的方法
*/
public String login(){
//调用service方法完成登录
AdminUser existAdminUser = adminUserService.login(adminUser);
if(existAdminUser==null){
this.addActionError("亲,您的用户名或者密码错误!");
return "loginFail";
}else{
//用户名或密码正确,登录成功
ServletActionContext.getRequest().getSession().setAttribute("existAdminUser", existAdminUser);
return "loginSuccess";
}
}
5.通过AdminUserAction 层的login方法返回的字符串,我们需要在Struts 配置jsp页面和action的跳转关系。<!-- 配置后台登录的Action -->
<action name="adminUser_*" class="adminUserAction" method="{1}">
<result name="loginFail">/admin/index.jsp</result>
<result name="loginSuccess" type="redirect">/admin/home.jsp</result>
</action>
6.在AdminUserService层 的AdminUser login方法中,调用adminUserDao(数据库层,和数据库的数据打交道),并且接收Dao层的返回值。
/**
* 业务层登录的方法
* @param adminUser
* @return
*/
public AdminUser login(AdminUser adminUser) {
return adminUserDao.login(adminUser);
}
7.在AdminUserDao层的AdminUser login方法中,hql语句负责表明查询哪些表的哪些信息。然后我们就可以直接使用Hibernate 封装好的方法,进行数据库的操作。并将结果返回给前一层Service层。
/**
* Dao层后台登录方法
* @author 璐
*
*/
public class AdminUserDao extends HibernateDaoSupport{
//Dao中的登录方法
public AdminUser login(AdminUser adminUser) {
String hql="from AdminUser where username = ? and password = ?";
List<AdminUser>list= this.getHibernateTemplate().find(hql, adminUser.getUsername(),adminUser.getPassword());
if(list!=null && list.size()>0){
return list.get(0);
}
return null;
}
}
8.之后,Service层将Dao层的结果返给Action层,Action将结果进行逻辑判断,然后通过Struts连接好的jsp页面,将功能效果显示在页面。【小结】
对于SSH框架的实现过程知识知道了一个大概,很多具体的知识为什么这么用,璐小编还需要再接再厉。
See you next one~~