SSH三大框架实现用户登录及用户表增删改查的测试
#配置文件:
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三大框架实现用户登录及用户表增删改查的测试相关推荐
- springboot++thymeleaf+shiro+iview实现用户登录以及基本的增删改查(二)
(二)springboot+shiro+iview实现用户登录以及基本的增删改查 前言 后台管理页面 index.html myHotel.html controller层 数据库表 entity层 ...
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)...
此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...
- 使用Maven开发用户模块的CRUD(增删改查)
使用Maven开发用户模块的CRUD(增删改查) < 使用Maven开发Web应用Archiva服务器的搭建步骤 > C语言中文网推出辅导班啦,包括「C语言辅导班.C++辅导班.算法/数据 ...
- ajax servlet增删改查,Servlet ajax 文件上传和JDBC+Servler用户表增删改查
昨天晚上帮一个妹子,应该是大二或者大三的.解决了Servlet+JDBC实现用户表的增删改查功能,当时妹子遇到的问题是文件上传和日期格式处理不太会. 我让她把代码发我,我本地调试,结果发现坑很多,就是 ...
- Vue+Mock.js模拟登录和表格的增删改查
有三类人不适合此篇文章: "喜欢站在道德制高点的圣母婊" -- 适合去教堂 "无理取闹的键盘侠" -- 国际新闻版块欢迎你去 "有一定基础但又喜欢逼逼 ...
- ios mysql 创建不同的用户表_iOS中数据库-创建表-增删改查数据-基础语法
什么是SQL:结构化查询语言.create创建表drop删除表,delete是删除表中的数据 SQL语句不区分大小写,每条语句必须以分号结束,数据库中不可以使用关键字用为表名(sql常用关键字 se ...
- jsp登录注册代码(增删改查+网页+数据库)
目录 一·登录注册代码以及效果 doregister.jsp:注册信息弹框 login.jsp:登录 dologin.jsp:与数据库相连.存放登陆的用户 index.jsp:主界面 update.j ...
- MVC使用EF实现后台登录首页以及列表增删改查
数据库设计 CREATE DATABASE [InfoManagerSystem] GO USE [InfoManagerSystem] GO /****** Object: Table [dbo]. ...
- Blazor实战——Known框架单表增删改查导
本章介绍学习增.删.改.查.导功能如何实现,下面以商品资料作为示例,该业务栏位如下: 类型.编码.名称.规格.单位.库存下限.库存上限.备注 1. 前后端共用 1.1. 创建实体类 在KIMS项目En ...
最新文章
- Eclipse中Junit测试中@Before不执行
- java 短语_从Java中的文本文件中提取短语
- 玉米田(加加强版)【插头dp】
- R语言的自定义函数—字符组合
- 解读阿里官方代码规范
- 嵌入式开发环境搭建:开发板tftp下载环境搭建
- linux下安装和使用vnc
- 前端学数据库之子查询
- jquery 对象 和 js 对象 为什么要互相转换?_JQuery对象与dom对象两者之间的相互转换...
- 【转】java对音频文件的频谱分析
- LEADBBS 不要验证码
- GridinSoft CHM编辑器3.2.0多语言,轻松快速地翻译CHM电子书
- PMP第十章:项目沟通管理
- python差异性分析_能用SPSS进行差异显著性分析吗
- Tcl/Tk入门(上)
- 自然语言处理(NLP)-统计句法分析(CKY算法用于PCFG下的句法分析)
- Python Turtle 小项目 8 各种音符的绘制
- 详解Tensor用法
- Google Cloud Speech-to-Text / Text-to-Speech API 试用
- java 粒度_Java函数保留粒度