昨天的博客中我分享了个人关于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. 洗礼灵魂,修炼python(8)--高效的字典

    python几大核心之--字典(dict) 1.什么是字典 学生时代都用过字典吧?用这个字的读音,偏旁就能用字典查到其相关信息,词性,意思,组词,造句,还有在什么场合下用这个字等等的. 在python ...

  2. Relocation 状态压缩DP

     Relocation Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  3. hdu4081(秦始皇的道路系统)

    During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in Ch ...

  4. 课程作业02(关于Java的几点讨论)

    ---恢复内容开始--- 1.一个Java类文件中真的只能有一个公有类吗? public class Test { public static void main(String[] args) { } ...

  5. OpenVPN server端配置文件详细说明(转)

    本文将介绍如何配置OpenVPN服务器端的配置文件.在Windows系统中,该配置文件一般叫做server.ovpn:在Linux/BSD系统中,该配置文件一般叫做server.conf.虽然配置文件 ...

  6. OpenCV探索之路(二十六):如何去除票据上的印章

    最近在做票据的识别的编码工作时遇到一些问题,就是票据上往往会有一些红色印章把一些重要信息区域给覆盖了,比如一些开发票人员盖印章时比较随意,容易吧一些关键区域给遮蔽了,这让接下来的票据识别很困难,因此, ...

  7. JavaWeb(五)之JSTL标签库

    前言 前面介绍了EL表达式,其实EL表达式基本上是和JSTL核心标签库搭配一起使用才能发挥效果的.接下来让我们一起来认识一下吧! 在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行 ...

  8. MongoDB学习教程(3)-常用命令

    1.MongoDB 条件操作符 描述 条件操作符用于比较两个表达式并从mongoDB集合中获取数据. 在本章节中,我们将讨论如何在MongoDB中使用条件操作符. MongoDB中条件操作符有: (& ...

  9. git仓库管理笔录

    Git是目前世界上最先进的分布式版本控制系统(没有之一). 小明做了个个人博客,放到了Git 仓库里面.第二天换了台电脑,只需要 git clone  克隆一下git 远程仓库的代码到本地即可.然后他 ...

  10. akka tips

    1.actorSelection,当涉及actor远程通信时,可以使用actorSelection. context.actorSelection("akka.tcp://app@other ...