#配置文件:

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop"  xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx-2.0.xsd   http://www.springframework.org/schema/aop   http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"><bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="jdbc:mysql://localhost:3306/hengfeng?characterEncoding=UTF-8"></property><property name="username" value="root"></property><property name="password" value="123456"></property></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref bean="dataSource" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop></props></property><property name="mappingResources"><list><value>com/sunline/entity/User.hbm.xml</value></list></property>  </bean><bean id="UserDao" class="com.sunline.dao.UserDao"><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 定义UserBizImpl类实例,并给UserBizImpl类中的userDAO注入值 -->  <bean id="userBiz" class="com.sunline.biz.UserBiz">  <property name="UserDao" ref="UserDao" />  </bean>  <!-- 控制器的注入类   ,这项可以在这写,也可以不写,直接在Struts.xml里写类的路径--> <!--<bean id="loginAction" class="com.sunline.action.LoginAction"><property name="userBiz" ref="userBiz"></property></bean>-->
</beans>

Struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts><package name="SSHTest" extends="struts-default"><!-- 登录 --><action name="Main" class="com.sunline.action.LoginAction"><result name="success">/success.jsp</result><result name="error">/error.jsp</result></action></package>
</struts>

#实体类及实体映射文件

User.java

package com.sunline.entity;/*** User entity. @author MyEclipse Persistence Tools*/public class User implements java.io.Serializable {// Fieldsprivate Integer userId;private String userName;private String userPassword;private String userStatus;// Constructors/** default constructor */public User() {}/** full constructor */public User(String userName, String userPassword, String userStatus) {this.userName = userName;this.userPassword = userPassword;this.userStatus = userStatus;}// Property accessorspublic Integer getUserId() {return this.userId;}public void setUserId(Integer userId) {this.userId = userId;}public String getUserName() {return this.userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassword() {return this.userPassword;}public void setUserPassword(String userPassword) {this.userPassword = userPassword;}public String getUserStatus() {return this.userStatus;}public void setUserStatus(String userStatus) {this.userStatus = userStatus;}}

User.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping><class name="com.sunline.entity.User" table="user" catalog="hengfeng"><id name="userId" type="java.lang.Integer"><column name="user_id" /><generator class="native"></generator></id><property name="userName" type="java.lang.String"><column name="user_name" length="40" not-null="true" /></property><property name="userPassword" type="java.lang.String"><column name="user_password" length="30" not-null="true" /></property><property name="userStatus" type="java.lang.String"><column name="user_status" length="30" not-null="true" /></property></class>
</hibernate-mapping>

#数据访问Dao层

UserDao.java

package com.sunline.dao;import java.sql.SQLException;
import java.util.List;import javax.annotation.Resource;import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;import com.sunline.entity.User;@Repository()
public class UserDao extends HibernateDaoSupport {//hibernateTemplate是Spring提供的Hibernate Dao操作类,在applicationContext中已经完成bean注入,所以此处直接 可以拿过来使用
//    @Resource(name="hibernateTemplate")
//    private HibernateTemplate hibernateTemplate;  /** 用户登录*/@SuppressWarnings("unchecked")public List<User> Serarch(final User user){return super.getHibernateTemplate().executeFind(new HibernateCallback(){  public Object doInHibernate(Session session) throws HibernateException, SQLException {  // TODO 自动生成方法存根  Criteria c=session.createCriteria(User.class);  if(user!=null){  if(user.getUserName()!=null && !user.getUserName().equals("")){  c.add(Restrictions.eq("userName", user.getUserName()));  }  if(user.getUserPassword()!=null && !user.getUserPassword().equals("")){  c.add(Restrictions.eq("userPassword", user.getUserPassword()));  }  }  return c.list();  }  });         }/** 添加用户*/public void AddUser(User user){                                                                                                                                                                                                                                                 System.out.println("成功添加用户");this.getHibernateTemplate().save(user);}/** 根据id查询用户数据*/public User findById(int id) {User user=(User)this.getHibernateTemplate().get(User.class,id);return user;}/** 查找所有用户*/public List<User> findAll(){String sql="from User";List<User> list=this.getHibernateTemplate().find(sql);return list;}/** 修改用户信息*/public void update(User user) {System.out.println("成功修改数据!");this.getHibernateTemplate().update(user);}/** 根据id删除用户信息*/public void DeleteUser(int id){System.out.println("成功删除数据!");this.getHibernateTemplate().delete(findById(id));}/** 根据用户名和密码查找用户*/@SuppressWarnings("unchecked")public List<User> GetUserInfo(User user){String hsql= "from User where userName= :userName and userPassword = :userPassword";String paramNames[] = {"userName" , "userPassword"};String paramValues[] = {user.getUserName(),user.getUserPassword()};  //findByNamedParam方法提供hql方法参数查询,避免Sql注入漏洞  List<User> result = (List<User>) this.getHibernateTemplate().findByNamedParam(hsql, paramNames, paramValues);
//      List<User> result=(List<User>) (((Query) (this.getHibernateTemplate().find(hsql, new String[]{userName, userPassword}))).uniqueResult());return result;}/*  * 根据姓名查询得出对象*/@SuppressWarnings("unchecked")public List<User> findByName(String name) {String hsql="from User where userName= :userName";List<User> result = (List<User>) this.getHibernateTemplate().findByNamedParam(hsql,"userName",name);
//      User result=(User)((Query) this.getHibernateTemplate().find(hsql)).uniqueResult();return result;}/** 修改单个字段*/public void UpdateUserName(String userName, int userId){this.getHibernateTemplate().bulkUpdate("update User set userName = ? where userId = ?",new Object[]{userName,userId}) ;}/** 修改多个字段*/public void UpdateManyParam(String userName,String userPassword, int userId){String hsql ="update User set userName = ? , userPassword = ? where userId = ?";System.out.println("成功修改数据!");this.getHibernateTemplate().bulkUpdate(hsql, new Object[]{userName,userPassword,userId});}/** 多条件模糊查询 */@SuppressWarnings("unchecked")public List<User> findByMohu(String userName, String userPassword){String hsql = "from User where userName like ? and userPassword = ?";String user_name = "%"+userName+"%";String []param = {user_name,userPassword};List<User> list = (List<User>) this.getHibernateTemplate().find(hsql,param);System.out.println("成功模糊查询到数据! "+list);return list;}}

#业务逻辑Biz层

UserBiz.java

package com.sunline.biz;import java.util.List;import com.sunline.dao.UserDao;
import com.sunline.entity.User;public class UserBiz {UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;
}  /** 登录功能逻辑层*/public List<User> Login(User user){return userDao.Serarch(user);}/** 添加用户逻辑层*/public void AddUser(User user){userDao.AddUser(user);}/** 查找全部用户 */public List<User> findALL() {return userDao.findAll();}/** 修改用户信息*/public void UpdateUser(User user){userDao.update(user);}/** 根据用户id删除用户信息*/public void deleteUser(int id) {userDao.DeleteUser(id);}/** 根据用户名和密码查找用户*/public List<User> getUser(User user ) {return userDao.GetUserInfo(user);}/** 根据用户名查出对象*/public User findByName(String name) {List<User> result= userDao.findByName(name); if(result.size() > 0) {  return result.get(0);  }  return null;}/** 修改单个字段*/public void UpdateUserName(String userName, int userId) {userDao.UpdateUserName(userName, userId);}/** 修改多个字段*/public void UpdateManyParam(String userName,String userPassword, int userId){userDao.UpdateManyParam(userName, userPassword, userId);}/** 多条件模糊查询 */public List<User> findByMohu(String userName, String userPassword){return userDao.findByMohu(userName, userPassword);}
}

#控制层Action类

LoginAction.java

package com.sunline.action;import java.util.List;
import java.util.Map;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sunline.biz.UserBiz;
import com.sunline.entity.User;public class LoginAction extends ActionSupport {private static final long serialVersionUID = 1889710968497585080L;private String userName;private String userPassword;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassword() {return userPassword;}public void setUserPassword(String userPassword) {this.userPassword = userPassword;}@Overridepublic String execute() throws Exception {//加载applicationContext.xml配置  ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); //获取配置中的实例  UserBiz userBiz =(UserBiz)context.getBean("userBiz"); User user = new User();user.setUserName(this.userName);user.setUserPassword(this.userPassword);List<User> list = userBiz.Login(user);if(list.size()>=1){ActionContext text = ActionContext.getContext();Map<String, Object> session = text.getSession();//   session.put("user",list);session.put("user",this.userName);return SUCCESS;}else{return ERROR;}}}

#用户表的增删改查测试

Test.java

package com.sunline.test;import java.util.List;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.sunline.biz.UserBiz;
import com.sunline.entity.User;public class Test {public static void main(String[] args) {  /** 1.登录功能测试*///加载applicationContext.xml配置  ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); //获取配置中的实例  UserBiz userBiz =(UserBiz)context.getBean("userBiz"); User user = new User();user.setUserName("haige");user.setUserPassword("123456");List<User> list = userBiz.Login(user);if(list.size()>=1){System.out.println("你的用户大小为"+list.size()+",用户名为:"+list+",登录成功!");}else{System.out.println("你的用户大小为"+list.size()+",用户名为:"+list+",登录失败!");}/** 2.添加用户测试*/user.setUserName("xiaozhang");user.setUserPassword("888888");user.setUserStatus("true");userBiz.AddUser(user);        //添加用户测试/** 3.查找全部用户测试*/List<User> list = userBiz.findALL();for(User use : list){System.out.println(use.getUserName()+" "+use.getUserPassword()+" "+use.getUserStatus());}/** 4.根据用户名和密码查找用户*/user.setUserName("haige");user.setUserPassword("123456");List<User> list = (List<User>)userBiz.getUser(user);for(User use : list){System.out.println("你的用户信息为:"+use.getUserName()+" "+use.getUserPassword()+" "+use.getUserStatus()); }System.out.println("你的用户信息为:"+list.size());/** 5.根据主键id删除数据*/userBiz.deleteUser(3);/** 6.修改用户信息*/user.setUserId(2);user.setUserName("sunhonglei");user.setUserPassword("123456");user.setUserStatus("true");userBiz.UpdateUser(user);/** 7.根据用户名查出对象*/User U = (User)userBiz.findByName("haige");System.out.println("你的用户信息为:"+U.getUserName()+" "+ U.getUserPassword() + " "+ U.getUserStatus());/** 8.修改单个字段*/userBiz.UpdateUserName("zhangxiaoyu", 2);/** 9.修改多个字段*/userBiz.UpdateManyParam("helijian", "123456", 2);/**  10.多条件模糊查询*/List<User> list = userBiz.findByMohu("h", "123456");for(User use :list){System.out.println("你的用户信息为:"+use.getUserName()+" "+use.getUserPassword()+" "+use.getUserStatus()); }System.out.println("你的集合大小为:" + list.size());}
}

#前端视图层

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!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>登录验证</title>
<link rel="stylesheet" href="bootstrap-3.3.7/css/bootstrap.min.css">
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript">
function check(){var uname = document.getElementById("uname").value;var upassword = document.getElementById("upassword").value;if(uname==""){  alert("用户名为空!");return false;}if(upassword==""){alert("密码为空!");return false;}
}
</script>
<style type="text/css">.input-group{  margin:10px 0px;//输入框上下外边距为10px,左右为0px  }  h3{  padding:5px;  border-bottom:1px solid #ddd;//h3字体下边框  }  em{//强调的样式  color:#c7254e;  font-style: inherit;  background-color: #f9f2f4;  }  .center{margin-left: auto;margin-right: auto;vertical-align:middle;text-align: center;}
</style>
</head>
<body style="background-image: url(image/3.jpg)"><center>
<nav class="navbar navbar-default" role="navigation" style="text-align: center;"><div class="container-fluid"><div class="navbar-header"><a class="navbar-brand" href="#"><span class="glyphicon glyphicon-flag" aria-hidden="true"></span>财务数据集市系统</a></div> </div>
</nav><div class="row center" style="margin-top:100px;">  <div class="col-md-5 col-sm-offset-4">  <div class="well col-md-10">  <h3>用户登录</h3>  <div><span style="font-size: 16px;"><font color="red">${message}</font></span><br/><span style="font-size: 16px;"><font color="red">${verify}</font></span></div><form action="Main" method="post" οnsubmit="return check()"><div class="input-group input-group-md">  <span class="input-group-addon" id="sizing-addon1"><i class="glyphicon glyphicon-user" aria-hidden="true"></i></span>  <input type="text" class="form-control" id="uname" name="userName" placeholder="用户名" aria-describedby="sizing-addon1"></div>  <div class="input-group input-group-md">  <span class="input-group-addon" id="sizing-addon1"><i class="glyphicon glyphicon-lock"></i></span>  <input type="password" class="form-control" id="upassword" name="userPassword" placeholder="密码" aria-describedby="sizing-addon1">  </div>  <div style="float: right"><a href="#">忘记密码?</a></div><input type="submit" name="sub" class="btn btn-success btn-block" value="登录"/></form></div>  </div>
</div>
</center>
</body>
</html>

Success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'success.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><center><h1>登录成功!<br/>欢迎你,<b style="color: red;">${user}</b></h1></center></body>
</html>

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'error.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><center><h1>登录失败!<br/><b style="color: red;">请检查用户名/密码输入是否正确!</b></h1></center></body>
</html>

#截图:

工程源码下载地址: 点击----> 源码下载

SSH三大框架实现用户登录及用户表增删改查的测试相关推荐

  1. springboot++thymeleaf+shiro+iview实现用户登录以及基本的增删改查(二)

    (二)springboot+shiro+iview实现用户登录以及基本的增删改查 前言 后台管理页面 index.html myHotel.html controller层 数据库表 entity层 ...

  2. salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)...

    此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...

  3. 使用Maven开发用户模块的CRUD(增删改查)

    使用Maven开发用户模块的CRUD(增删改查) < 使用Maven开发Web应用Archiva服务器的搭建步骤 > C语言中文网推出辅导班啦,包括「C语言辅导班.C++辅导班.算法/数据 ...

  4. ajax servlet增删改查,Servlet ajax 文件上传和JDBC+Servler用户表增删改查

    昨天晚上帮一个妹子,应该是大二或者大三的.解决了Servlet+JDBC实现用户表的增删改查功能,当时妹子遇到的问题是文件上传和日期格式处理不太会. 我让她把代码发我,我本地调试,结果发现坑很多,就是 ...

  5. Vue+Mock.js模拟登录和表格的增删改查

    有三类人不适合此篇文章: "喜欢站在道德制高点的圣母婊" -- 适合去教堂 "无理取闹的键盘侠" -- 国际新闻版块欢迎你去 "有一定基础但又喜欢逼逼 ...

  6. ios mysql 创建不同的用户表_iOS中数据库-创建表-增删改查数据-基础语法

    什么是SQL:结构化查询语言.create创建表drop删除表,delete是删除表中的数据 SQL语句不区分大小写,每条语句必须以分号结束,数据库中不可以使用关键字用为表名(sql常用关键字  se ...

  7. jsp登录注册代码(增删改查+网页+数据库)

    目录 一·登录注册代码以及效果 doregister.jsp:注册信息弹框 login.jsp:登录 dologin.jsp:与数据库相连.存放登陆的用户 index.jsp:主界面 update.j ...

  8. MVC使用EF实现后台登录首页以及列表增删改查

    数据库设计 CREATE DATABASE [InfoManagerSystem] GO USE [InfoManagerSystem] GO /****** Object: Table [dbo]. ...

  9. Blazor实战——Known框架单表增删改查导

    本章介绍学习增.删.改.查.导功能如何实现,下面以商品资料作为示例,该业务栏位如下: 类型.编码.名称.规格.单位.库存下限.库存上限.备注 1. 前后端共用 1.1. 创建实体类 在KIMS项目En ...

最新文章

  1. Eclipse中Junit测试中@Before不执行
  2. java 短语_从Java中的文本文件中提取短语
  3. 玉米田(加加强版)【插头dp】
  4. R语言的自定义函数—字符组合
  5. 解读阿里官方代码规范
  6. 嵌入式开发环境搭建:开发板tftp下载环境搭建
  7. linux下安装和使用vnc
  8. 前端学数据库之子查询
  9. jquery 对象 和 js 对象 为什么要互相转换?_JQuery对象与dom对象两者之间的相互转换...
  10. 【转】java对音频文件的频谱分析
  11. LEADBBS 不要验证码
  12. GridinSoft CHM编辑器3.2.0多语言,轻松快速地翻译CHM电子书
  13. PMP第十章:项目沟通管理
  14. python差异性分析_能用SPSS进行差异显著性分析吗
  15. Tcl/Tk入门(上)
  16. 自然语言处理(NLP)-统计句法分析(CKY算法用于PCFG下的句法分析)
  17. Python Turtle 小项目 8 各种音符的绘制
  18. 详解Tensor用法
  19. Google Cloud Speech-to-Text / Text-to-Speech API 试用
  20. java 粒度_Java函数保留粒度

热门文章

  1. 斐波拉契(Fibonacci)数列
  2. 做人和做事哪个是前提
  3. VS-PETS是什么?
  4. 车辆共享车载单元 (OBU )全国产化电子元件推荐方案
  5. 称霸Kaggle的十大深度学习技巧
  6. 厦门这个隐藏的高逼格智慧园区终于被扒出来了
  7. (74)Verilog实现CRC【MIPI】
  8. STM32 标准库3.5修改默认外部8M晶振为16M晶振
  9. webStorm创建vue项目环境
  10. MySQL学习四:MySQL双主双从