Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之登录功能
昨天的博客中我分享了个人关于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实现员工管理增删改查功能(一)之登录功能的更多相关文章
- Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合
前言 转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...
- hibernate关联对象的增删改查------查
本篇博客是之前博客hibernate关联对象的增删改查------查 的后继,本篇代码的设定都在前文已经写好,因此读这篇之前,请先移步上一篇博客 //代码片5 SessionFactory sessi ...
- python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)
python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...
- Spring JdbcTemplate框架搭建及其增删改查使用指南
Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...
- JavaWeb系统(增删改查、多条件查询功能)
该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...
- hibernate关联对象的增删改查------增
本文可作为,北京尚学堂马士兵hibernate课程的学习笔记. 这一节,我们看看hibernate关联关系的增删改查 就关联关系而已,咱们在上一节已经提了很多了,一对多,多对一,单向,双向... 其实 ...
- Hibernate进行对象的增删改查
首先我们看看hibernate手动配置步骤 (这个了解一点就可以了,以后是不会自己全部手动配置的) 1. 创建WEB项目 2 下载hibernate-release-4.3.11.F ...
- Spring Boot实现学生信息增删改查
上一篇博客写了如何初始化一个简单的Spring Boot项目,这次详细记录一下如何连接数据库并实现增删改查基本操作. 我使用的是MySQL 5.5+Navicat,MySQL量级比较轻,当然微软的SQ ...
- Hibernate入门案例及增删改查
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
随机推荐
- Java的基本程序设计结构【2】
注释 与大多数程序设计语言一样,Java 中的注释也不会出现在可执行程序中.因此,可以在源程序中根据需要添加任意多的注释,而不必担心可执行代码会膨胀.在Java 中,有三种书写注释的方式. 最常用的方 ...
- 云计算-openstack基础构架以及服务方式详解
一:什么是openstack 是Rackspace(美国航天局)和NASA(一家公司)共同发起的开源项目,他是一系列软件项目的组合. 这些项目是松耦合的关系,可以进行独立的安装,启动和停止,只有在必要 ...
- sql sever 基础知识及详细笔记
第六章:程序数据集散地:数据库 6.1:当今最常用的数据库 sql server:是微软公司的产品 oracle:是甲骨文公司的产品 DB2:数据核心又称DB2通用服务器 Mysql:是一种开发源代 ...
- DNS—正、反向解析;委派;主从;子域;转发;智能dns等的实现
前言:DNS,耳熟能详的东西,内容太多,小编也不太好讲清,只能写几个实验详解,供大家参考. 一.简单介绍 1.DNS:通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析). 端 ...
- es6零基础学习之项目目录创建(一)
和大家分享一下在学习es6的过程中所积累的东西,也希望更多的朋友能够互相学习 首先创建项目目录 打开你的命令行,什么文件下都可以,大家请随意,我自己用的git,输入 mkdir es6 创建一个完整的 ...
- Java面向对象(封装性概论)
Java面向对象(封装性概论) 知识概要: (1)面向对象概念 (2)类与对象的关系 (3)封装 (4)构造函数 (5)this关键字 (6)static关键 ...
- JAVA提高三:反射总结
为前期学习过反射,再这里再次复习总结下:[转载请说明来源:http://www.cnblogs.com/pony1223/p/7659210.html ] 一.透彻分析反射的基础_Class类 Cla ...
- css百分比参照大总结
最近做PC端项目,由于要自适应到800*600,所以免不了要使用百分比的布局方式,但是一开始有点搞不清楚百分比的参照,于是页面的布局怎么调也调不好. 事后我进行了一下总结,希望能够帮到大家: 参照父元 ...
- OpenCV中的绘图函数-OpenCV步步精深
OpenCV 中的绘图函数 画线 首先要为画的线创造出环境,就要生成一个空的黑底图像 img=np.zeros((512,512,3), np.uint8) 这是黑色的底,我们的画布,我把窗口名叫做i ...
- Scala 运算符和集合转换操作示例
Scala是数据挖掘算法领域最有力的编程语言之一,语言本身是面向函数,这也符合了数据挖掘算法的常用场景:在原始数据集上应用一系列的变换,语言本身也对集合操作提供了众多强大的函数,本文将以List类型为 ...