SSH网上商城--后台登录

时间:2022-05-22 18:34:14

     本篇通过简单的后台登录来讲解SSH的应用,页面主要采用框架来进行布局,通过dtree.js作为树形结构菜单来使用。

     主要登录功能的实现有以下步骤组成:


    1.后台管理页面。由于资料里已给出,可直接在WebRoot下新建admin文件夹后将后台页面直接引入即可,这里不做详细说明,页面也可自行制作。(注意css和image等的引用是否存在)。启动服务器后,打开浏览页面,如下图所示

SSH网上商城--后台登录


     2.创建表:

CREATE TABLE `adminuser` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

     并插入一条后台登录用户admin

INSERT INTO `adminuser` VALUES (2,'admin','admin');


     输入用户名和密码后,点击管理中心后提交,在index.jsp中,点击“进入管理中心”按钮后,提交到后台的adminUser_login登录界面


     3.创建包、类及类之间的联系

     * cn.itcast.shop.adminuser
          * action
               * AdminUserAction.java
          * service
              * AdminUserService.java
         * dao
               * AdminUserDao.java

          * vo
               * AdminUser.java           

          * AdminUser.hbm.xml(映射)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.shop.adminuser.vo.AdminUser" table="adminuser">

<id name="uid">
<generator class="native"/>
</id>

<property name="username"/>
<property name="password"/>

</class>
</hibernate-mapping>

     然后加到Spring的配置文件applicationContext中去,加上该映射:

<!-- 配置Hibernate的映射文件 -->
<property name="mappingResources">
<list>
<value>cn/itcast/shop/adminuser/vo/AdminUser.hbm.xml</value>
</list>
</property>
</bean>

     然后就去新建AdminUser.action

package cn.itcast.shop.adminuser.action;

import cn.itcast.shop.adminuser.vo.AdminUser;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
* 后台登录的Action
* @author DXJ
*
*/
public class AdminUserAction extends ActionSupport implements ModelDriven<AdminUser>{
//模型驱动使用的对象
private AdminUser adminUser = new AdminUser();

@Override
public AdminUser getModel() {
return adminUser;
}


}
     

     在service包中新建AdminUserService类

package cn.itcast.shop.adminuser.service;
/**
* 后台登录业务层代码类
* @author DXJ
*
*/
public class AdminUserService {

}
     

     在dao包中新建AdminUser类

package cn.itcast.shop.adminuser.vo;
/**
* 后台用户登录实体类
* @author DXJ
*
*/
public class AdminUser {
private Integer uid;
private String username;
private String password;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}
     

     在action中注入service,并提供set方法

//注入service
private AdminUserService adminUserService;

public void setAdminUserService(AdminUserService adminUserService) {
this.adminUserService = adminUserService;
}
     

     在service中加上事务管理并注入dao,提供set方法

@Transactional
public class AdminUserService {
//注入dao
private AdminUserDao adminUserDao;

public void setAdminUserDao(AdminUserDao adminUserDao) {
this.adminUserDao = adminUserDao;
}

}

     在dao中继承HibernateDaoSupport

package cn.itcast.shop.adminuser.dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
* 后台登录的Dao,类
* @author DXJ
*
*/
public class AdminUserDao extends HibernateDaoSupport{

}

     把上述类交给Spring进行管理,在applicationContext完成相应的配

        <!-- 后台登录的Dao -->
<bean id="adminUserDao" class="cn.itcast.shop.adminuser.dao.AdminUserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 后台登录的Service,并注入Dao --><bean id="adminUserService" class="cn.itcast.shop.adminuser.service.AdminUserService"><property name="adminUserDao" ref="adminUserDao" />   </bean>
<!-- 后台登录的Action,并注入Service --><bean id="adminUserAction" class="cn.itcast.shop.adminuser.action.AdminUserAction" scope="prototype"><property name="adminUserService" ref="adminUserService"/></bean>

     上述只是一系列的准备工作,是对前一篇的解释吧,接下来就是后台登录的代码实现过程:

     基本操作过程为:* index.jsp----->AdminUserAction----->AdminUserService----->AdminUserDao

     在index.jsp中点击“进入管理员页面”按钮,转向到adminUser_login.action,此时就需要在AdminUserAction中编写login方法,这时到这里是需要Struts的,进行Action的配置,让它跳转到某一个页面,稍后进行配置

       <!-- 配置后台登录的Action,让它跳转到某一个页面-->
<action name="adminUser_*" class="adminUserAction" method="{1}">
<result>需要跳转的页面</result>
</action>

     从index中接收到的用户名和密码都存在模型驱动adminUser中了,通过用户名和密码登录到后台系统,

在Action中调用Service, 

/**
* 后台登录的方法
*/
public String login(){
//调用Service完成登录,传过来adminuser,得到一个新的AdminUser对象existAdminUser,
AdminUser existAdminUser = adminUserService.login(adminUser);
return NONE;
}

     去业务层实现该方法

/**
* 业务层登录的方法
* @param adminUser
* @return
*/
public AdminUser login(AdminUser adminUser) {
return adminUserDao.login(adminUser);
}
     

     再去dao中完成该方法

public class AdminUserDao extends HibernateDaoSupport{
/**
* Dao中的登录方法
* @param adminUser
* @return
*/
public AdminUser login(AdminUser adminUser) {
//编写hql,去查询adminUser这个对象
String hql="from AdminUser where username = ? and password = ?";
//获得模板,并调用find方法,传入相应的参数(可从adminUser中获得),这样可以得到一个对象,在此时list集合形式
List<AdminUser> list = this.getHibernateTemplate().find(hql,adminUser.getUsername(),adminUser.getPassword());
//对集合进行判断
if (list != null && list.size()>0) {
return list.get(0); //因为只能查到一个
}
return null;
}

}
     

     此时AdminUserAction中的existAdminUser就有值了,并进行相应的判断

/**
* 后台登录的方法
*/
public String login(){
//调用Service完成登录,传过来adminuser,得到一个新的AdminUser对象existAdminUser,
AdminUser existAdminUser = adminUserService.login(adminUser);
if (existAdminUser == null) {
//登录失败
this.addActionError("亲,您的用户名或密码错误,请重新输入!");
//返回失败页面
return "loginFail";
} else {
//登录成功
//将用户信息存到session中
ServletActionContext.getRequest().getSession().setAttribute("existAdminUser", existAdminUser);
return "loginSuccess";
}

}
     

      接下来只需要去Struts中补充配置loginFail和loginSuccess就OK

<!-- 配置后台登录的Action,让它跳转到某一个页面,在这是一个成功页面,一个失败页面-->
<action name="adminUser_*" class="adminUserAction" method="{1}">
<result name="loginFail">/admin/index.jsp</result>
<result name="loginSuccess">/admin/home.jsp</result>
</action>


      然后获得session中的用户名进行登录

SSH网上商城--后台登录

     进行测试!

     登录成功!

SSH网上商城--后台登录



     上述是通过后台登录的一个小demo来简单介绍SSH的应用,不了解SSH的可参考SSH初探