昨天的博客中我分享了个人关于ssh实现员工管理的框架整合,今天我在分享管理员登录功能的实现。  转载请注明出处“http://www.cnblogs.com/smfx1314/p/7801389.html”

由于昨天我已经贴出目录结构,所以创建包及类这里就不在写了。现在我们来配置spring中的bean实例以及依赖注入的属性

<bean id="userAction" class="com.ssh.action.UserAction" scope="prototype">
<property name="userService" ref="userServiceImpl"></property>
</bean>
<bean id="userServiceImpl" class="com.ssh.service.impl.UserServiceImpl">
<property name="userDao" ref="userDaoImpl"></property>
</bean>
<bean id="userDaoImpl" class="com.ssh.dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

之后我们看下index.jsp页面,我们根据form表单的action="${pageContext.request.contextPath }/user_login.action"在对应的UserAction中完成action的编写,如下

package com.ssh.action;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.ssh.entity.User;
import com.ssh.service.UserService;

public class UserAction extends ActionSupport implements ModelDriven<User>{
private static final long serialVersionUID = -635040790332368558L;

//注入UserService
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
//模型驱动
private User user=new User();
@Override
public User getModel() {
return user;
}
//登录方法
public String login(){
User u=userService.login(user);
if(u !=null){
ServletActionContext.getRequest().getSession().setAttribute("u", u);
// ActionContext.getContext().getSession().put("u", u);
return "loginsuccess";
}else{
this.addActionError("用户名或密码错误");
return "loginfail";
}
}

}

注意,方法名要和index.jsp中表单的action的user_login.action的login一致,另外上面我使用的是模型驱动。

然后在来写Struts2.xml。如下

<package name="ssh-day02" namespace="/" extends="struts-default">
<!-- 用户登录 -->
<action name="user_*" class="userAction" method="{1}">
<!-- 登录成功 -->
<result name="loginsuccess">/jsp/main.jsp</result>
<!-- 登录失败 -->
<result name="loginfail">/index.jsp</result>
</action>

</package>

上面我配置了成功和失败的返回页面。这里由于我把Struts2的action交给spring管理,所以class的路径直接是spring配置中的userAction的bean的id。

接下来,我们在看下service以及dao中的代码怎么写

UserService接口中的

package com.ssh.service;

import com.ssh.entity.User;

public interface UserService {

User login(User user);

}

userServiceImpl实现类

package com.ssh.service.impl;

import org.springframework.transaction.annotation.Transactional;

import com.ssh.dao.UserDao;
import com.ssh.entity.User;
import com.ssh.service.UserService;

@Transactional
public class UserServiceImpl implements UserService {
//注入dao
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
//登录的方法
@Override
public User login(User user) {

return userDao.login(user);
}
}

注意类上面使用了@Transactional,因为我们在spring中配置的是注解式的声明式事务,其实这里可以不写,因为只是查询,没有修改和增加。

然后在看下UserDao接口中的代码实现

package com.ssh.dao;

import com.ssh.entity.User;

public interface UserDao {

User login(User user);

}

对应的userDaoImpl实现类

package com.ssh.dao.impl;

import java.util.List;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import com.ssh.dao.UserDao;
import com.ssh.entity.User;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

@Override
public User login(User user) {
List<User> list=(List<User>) this.getHibernateTemplate().find("from User where username=? and password=?", user.getUsername(),user.getPassword());
if(list.size()>0){
return list.get(0);
}

return null;
}

上面根据用户名和密码查询,返回时list类型,所以通过list.get(0)获取对象。

最后我们把返回成功main.jsp(失败就直接返回首页)的页面创建完成就可以运行了

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>OA后台管理 </title>

<link rel="stylesheet" href="css/index.css" type="text/css" media="screen" />

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/tendina.min.js"></script>
<script type="text/javascript" src="js/common.js"></script>

</head>
<body>
<!--顶部-->
<div class="layout_top_header">
<div style="float: left"><span style="font-size: 16px;line-height: 45px;padding-left: 20px;color: #8d8d8d">未来公司后台管理系统</h1></span></div>
<div id="ad_setting" class="ad_setting">
<a class="ad_setting_a" href="javascript:; ">
<i class="icon-user glyph-icon" style="font-size: 20px"></i>
<span>${username }</span>
<i class="icon-chevron-down glyph-icon"></i>
</a>
<ul class="dropdown-menu-uu" style="display: none" id="ad_setting_ul">
<li class="ad_setting_ul_li"> <a href="javascript:;"><i class="icon-user glyph-icon"></i> 个人中心 </a> </li>
<li class="ad_setting_ul_li"> <a href="javascript:;"><i class="icon-cog glyph-icon"></i> 设置 </a> </li>
<li class="ad_setting_ul_li"> <a href="javascript:;"><i class="icon-signout glyph-icon"></i> <span class="font-bold">退出</span> </a> </li>
</ul>
</div>
</div>
<!--顶部结束-->
<!--菜单-->
<div class="layout_left_menu">
<ul id="menu">
<!-- <li class="childUlLi">
<a href="main.html" target="menuFrame"><i class="glyph-icon icon-home"></i>首页</a>
<ul>
<li><a href="user_add.html" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>用户添加</a></li>
</ul>
</li> -->
<li class="childUlLi">
<a target="menuFrame"> <i class="glyph-icon icon-reorder"></i>员工管理</a>
<ul>
<li><a href="${pageContext.request.contextPath }/emp_findAll.action" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>显示员工列表</a></li>
<li><a href="${pageContext.request.contextPath }/emp_addPage.action" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>添加员工</a></li>
<li><a href="${pageContext.request.contextPath }/emp_listPage.action?currenPage=1" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>分页查询</a></li>
</ul>
</li>
<li class="childUlLi">
<a target="menuFrame"> <i class="glyph-icon icon-reorder"></i>部门管理</a>
<ul>
<li><a href="${pageContext.request.contextPath }/dept_findAll.action" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>查看部门</a></li>
<li><a href="${pageContext.request.contextPath }/dept_addDeptPage.action" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>添加部门</a></li>
<li><a href="${pageContext.request.contextPath }/dept_listDeptPage.action?currenPage=1" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>分页查询</a></li>
</ul>
</li>
<!-- <li class="childUlLi">
<a href="#"> <i class="glyph-icon icon-location-arrow"></i>菜单管理</a>
<ul>
<li><a href="meunbox.html" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>平台菜单</a></li>
<li><a href="meunbox_add.html" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>运行商菜单</a></li>
<li><a href="#" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>服务站菜单</a></li>
<li><a href="#" target="menuFrame"><i class="glyph-icon icon-chevron-right"></i>商家菜单</a></li>
</ul>
</li> -->
</ul>
</div>
<!--菜单-->
<div id="layout_right_content" class="layout_right_content">
<div class="mian_content">
<div id="page_content">
<iframe name="menuFrame" src="jsp/welcome.jsp" style="overflow:visible;"
scrolling="yes" frameborder="no" width="100%" height="100%">

</iframe>
</div>
</div>
</div>
<div class="layout_footer">
<p>Copyright © 2014 - XXXX科技</p>
</div>
</body>
</html>

返回成功的话,我们就直接进入后台。

备注:数据库你可以提前插入几条数据,方便测试

运行可以看到效果如下:

Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之登录功能的更多相关文章

  1. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

  2. hibernate关联对象的增删改查------查

    本篇博客是之前博客hibernate关联对象的增删改查------查 的后继,本篇代码的设定都在前文已经写好,因此读这篇之前,请先移步上一篇博客 //代码片5 SessionFactory sessi ...

  3. python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)

    python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...

  4. Spring JdbcTemplate框架搭建及其增删改查使用指南

    Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...

  5. JavaWeb系统(增删改查、多条件查询功能)

    该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...

  6. hibernate关联对象的增删改查------增

    本文可作为,北京尚学堂马士兵hibernate课程的学习笔记. 这一节,我们看看hibernate关联关系的增删改查 就关联关系而已,咱们在上一节已经提了很多了,一对多,多对一,单向,双向... 其实 ...

  7. Hibernate进行对象的增删改查

    首先我们看看hibernate手动配置步骤 (这个了解一点就可以了,以后是不会自己全部手动配置的) 1.    创建WEB项目 2       下载hibernate-release-4.3.11.F ...

  8. Spring Boot实现学生信息增删改查

    上一篇博客写了如何初始化一个简单的Spring Boot项目,这次详细记录一下如何连接数据库并实现增删改查基本操作. 我使用的是MySQL 5.5+Navicat,MySQL量级比较轻,当然微软的SQ ...

  9. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

随机推荐

  1. Java 自增(++) 和 C语言中自增的区别

    在Java.c语言等高级语言中自增和自减的作用基本一致,都是变量自身加一或减一.下面我只对自增进行说明,自减是类似的. 自增运算符(++),有两种书写形式,一个是在变量前: ++ num; 另一种在变 ...

  2. notepad的快捷操作-代码速写

    (一)先安装zencode插件 (二)运用插件 第一步:键入:html:xt 再Ctrl+Alt+Enter键 得到 <!DOCTYPE html PUBLIC "-//W3C//DT ...

  3. java注解生成xml和包含CDATA问题

    百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类! 下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和x ...

  4. maven详解之结构

    maven 父子关系 父项目中打包方式必须是pom  如 <packaging>pom</packaging>,父项目中使用<modules><module& ...

  5. 概率图模型PGM——D map, I map, perfect map

    若F分布的每个条件独立性质都反映在A图中,则A图被称为F分布的D map. 若A图表现出的所有条件独立性质都在F分布中满足(与F分布不矛盾),则A图被称为F分布的I map. 弱A图既是F分布的D m ...

  6. Linux安装mysql-5.7.17

    一.检查系统是否有自带安装MySQL 1.检查 [root@centos ~]# rpm -qa | grep -i mysql mysql-libs-5.1.71-1.el6.x86_64 2.卸载 ...

  7. jsp web JavaBean MVC 架构 EL表达式 EL函数 JSTL

     一.JavaBean概念(非常重要) 1.JavaBean就是遵循一定书写规范的Java类型(开发中:封装数据) a.必须有默认的构造方法,类必须是public的   public class  ...

  8. [ZJOI2005]九数码游戏

    [ZJOI2005]九数码游戏 题目描述 输入输出格式 输入格式: 输入文件中包含三行三列九个数,同行的相邻两数用空格隔开,表示初始状态每个方格上的数字.初始状态不会是目标状态. 输出格式: 如果目标 ...

  9. SAP 参照sto订单创建外向交货BAPI

    DATA: SHIP_POINT TYPE TVST-VSTEL, "装运点/接收点 NUM_DELIVERIES TYPE VBNUM, STOCK_TRANS_ITEMS WITH HE ...

  10. 运维&网络知识(一)

    1. DNS 域名系统(Domain Name System),因特网上作为域名和IP地址映射的一个分布式数据库.