Struts2+Spring+Hibernate step by step 03 整合Spring之中的一个(在DAO层验证username和password)
注:该系列文章部分内容来自王健老师编写SSH整合开发教程
目的:通过Spring创建数据库的连接,并通过Spring进行事务管理。
第一步:将Spring的包拷贝至当前项目的lib文件夹下,例如以下图-1所看到的:
图-1
第二步:在web.xml中加入下面配置,即加入listener(监听器)和配置载入的Spring文件例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHV6aGVuZ19qYXZh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
图-2
第三步:在WEB-INF文件夹下,建立spring的配置文件applicationContext.xml,文件内容例如以下图-3所看到的:
图-3
提示:下面内容,能够直接复制到xml文件其中,然后再将xml文件命名为applicationContext.xml.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 此处暂不加入代码内容,先保留为空 --> </beans>
第四步:公布并启动程序,看是否能正常启动。直到正常启动后才干够进行下一步的工作:
提示:当启动tomcat后,看Console(控制台)的输出是否正常,若有异常信息,应进行代码或者配置文件的调整。能正常启动为止,例如以下图-4所看到的:
图-4
第五步:配置系统日志信息的输出(该部分不是必须)
如上面第四步所看到的。程序的日志,仅仅有部分显示到控制台中,为了能看到更加丰富的启动、以及程序执行信息,建议配置log4j日志系统。
5.1、将log4j的日志包,复制到WEB-INF/lib文件夹下:
图-5
将此文件复制到WEB-INF/lib文件夹下后。启动项目,会再Console控制台发现下面警告信息:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHV6aGVuZ19qYXZh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
图-6
以上信息,说明没有配置log4j.properties资源文件。
5.2、配置log4j.properties资源文件,文件位于WEB-INF/classes文件夹下。例如以下图-7所看到的:
图-7
提示:log4.properties中的内容,主要配置日志信息的级别,和日志信息输出的目的地,能够拷贝下面内容到log4j.properties文件里:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHV6aGVuZ19qYXZh/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
图-8
5.3、此时再启动项目。能够看到Console控制台发现很多其它丰富的载入启动信息,而且能再d盘的根文件夹下发现root.log的日志文件。
提示:请打开D盘文件夹下的root.log文件,查看日志信息。
第六步:书写訪问数据库(模拟)的DAO(Data Access Object数据库訪问层)和Service(服务层)。
同一时候给Action注入(DI) Service,给Service实现类注入Dao,文件夹结构例如以下图-9所看到的:
图-9
上面首先应该写接口,按规范,建议接口都以I大写字母开头。当中Dao的实现类都以impl结尾,Service相同以impl结尾。
下面是IOneDao.java的源码:
package com.xuzheng.dao;
import java.util.Map;
public interface IOneDao {
Map login(Map map);
}
下面是OneDaoImpl.java的源码:
package com.xuzheng.dao.impl;
import java.util.Map;
import com.xuzheng.dao.IOneDao;
public class OneDaoImpl implements IOneDao{
public Map login(Map map) {
String name = (String) map.get("name");
String pwd = (String) map.get("pwd");
if(name.equals("xuz") && pwd.equals("1234")){
System.out.println("验证成功....");
map.put("result", "1");//假设成功将信息放入map中,且向map中存入1值
}
return map;
}
}
下面是IOneService.java的源码:
package com.xuzheng.service;
import java.util.Map;
public interface IOneService {
Map login(Map map);
}
下面是OneServiceImpl.java的源码:
package com.xuzheng.service.impl;
import java.util.Map;
import com.xuzheng.dao.IOneDao;
import com.xuzheng.service.IOneService;
public class OneServiceImpl implements IOneService{
private IOneDao dao;//通过配置文件注入Dao
public Map login(Map map) {
return getDao().login(map);//调用Dao的方法验证登录
}
public IOneDao getDao() {
return dao;
}
public void setDao(IOneDao dao) {
this.dao = dao;
}
}
下面是经过改动并注入Service的OneAction.java的源码:
package com.xuzheng.one;
import java.util.HashMap;
import java.util.Map;
import com.xuzheng.service.IOneService;
public class OneAction {
private String name;//username
private String pwd;//password
private IOneService service;
public String execute(){
System.out.println("name:"+getName()+",pwd:"+pwd);
Map map = new HashMap();
map.put("name", getName());
map.put("pwd", getPwd());
map = getService().login(map);
if(map.get("result")==null){
return "error";
}else{
return "success";
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public IOneService getService() {
return service;
}
public void setService(IOneService service) {
this.service = service;
}
}
同一时候。对于getName的getPwd方法作例如以下改动。目的是防止抛出NullPointerException,改动例如以下:
public String getName() {
return name == null?"":name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd == null?
"":pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
第七步:将上面写好的类,全面配置到Spring配置文件applicationContext.xml中,例如以下图-10所看到的:
图-10
提示:1、上面箭头为引用关系 2、OneAction的Bean的模式为原型模式,必须这样设置。
第八步:改动struts.xml文件例如以下图-11所看到的:
图-11
第九步:公布启动程序,假设程序启动有错误。则是配置错误,应当检查配置文件,直到能够正常启动为止。
第十步:调整index.jsp页面的布局,让其变的美观:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body style="text-align:center;">
<form name="form1" action="<s:url value='/one.action'/>" method="post">
<table border="0">
<tr>
<td colspan="2" bgcolor="#FDDDE" align="center">
用户登录
</td>
</tr>
<tr>
<td align="right">
username:
</td>
<td>
<input type="text" name="name" style="width: 100px;" />
</td>
</tr>
<tr>
<td align="right">
password:
</td>
<td>
<input type="password" name="pwd" style="width:100px;" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="登录" />
</td>
</tr>
</table>
</form>
</body>
</html>
第十一步:公布程序,并执行測试,输入username:xuz ,password:1234看是否能正常登录,例如以下图-12所看到的:
图-12
登录成功后,例如以下图-13所看到的:
图-13
源码下载:
Struts2+Spring+Hibernate step by step 03 整合Spring之中的一个(在DAO层验证username和password)的更多相关文章
- spring+hibernate+jpa+Druid的配置文件,spring整合Druid
spring+hibernate+jpa+Druid的配置文件 spring+hibernate+jpa+Druid的完整配置 spring+hibernate+jpa+Druid的数据源配置 spr ...
- 【手摸手,带你搭建前后端分离商城系统】03 整合Spring Security token 实现方案,完成主业务登录
[手摸手,带你搭建前后端分离商城系统]03 整合Spring Security token 实现方案,完成主业务登录 上节里面,我们已经将基本的前端 VUE + Element UI 整合到了一起.并 ...
- Struts2,Spring, Hibernate三大框架SSH的整合步骤
整合步骤 创建web工程 引入相应的jar包 整合spring和hibernate框架 编写实体类pojo和hbm.xml文件 编写bean-base.xml文件 <!-- 1) 连接池实例 - ...
- 搭建Spring + SpringMVC + Mybatis框架之三(整合Spring、Mybatis和Spring MVC)
整合Spring和SpringMVC 之前已经整合了spring和mybatis,现在在此基础上整合SSM. 项目目录: 思路:SpringMVC的配置文件独立,然后在web.xml中配置整合. (1 ...
- Struts2+Spring+Hibernate step by step 04 整合Spring之二,从数据库验证username和password
注:本系列文章部分内容来自王健老师编写ssh整合开发教程 使用Spring的AOP进行项目的事务管理,已经成为非常多企业的首先,Spring做为优秀的开源项目,其在数据库连接.事务管理方面的优势已经显 ...
- 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】
一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...
- SSH三大框架的搭建整合(struts2+spring+hibernate)(转)
原文地址:http://blog.csdn.net/kyle0349/article/details/51751913 尊重原创,请访问原文地址 SSH说的上是javaweb经典框架,不能说100% ...
- Struts+Spring+Hibernate项目的启动线程
在Java Web项目中,经常要在项目开始运行时启动一个线程,每隔一定的时间就运行一定的代码,比如扫描数据库的变化等等.要实现这个功能,可以现在web.xml文件中定义一个Listener,然后在这个 ...
- 《SSM框架搭建》三.整合spring web
感谢学习http://blog.csdn.net/zhshulin/article/details/37956105#,还是修改了spring到最新的版本和接口开发示例 根据前一篇日志,已经有了myb ...
随机推荐
- 使用RadioGroup与RadioButton实现多选一
RadioGroup是RadioButton的集合, RadioGroup里面可以包含很多RadioButton,提供多选一机制,只能选择其中一个 RadioGroup的orientation(方向) ...
- VMware: linux起步提示 memory for crashkernel(0*0 to 0*0)not within permissible
(virtualbox/VMware)linux起步提示memoryforcrashkernel(0*0 to 0*0)notwithinpermissible http://www.myexcep ...
- python命令行解析工具argparse模块【3】
上一节,我们讲解了ArgumentParser对象,这一节我们将学习这个对象的add_argument()方法. add_argument()方法的定义了如何解析一个命令行参数,每个参 ...
- 设计模式值六大原则——依赖倒置原则 (DIP)
依赖倒置原则(Dependence Inversion Principle,DIP)的原始定义: 高层模块不应该依赖底层模块,两者都应该依赖其抽象: 抽象不应该依赖细节: 细节应该依赖抽象. 依赖倒置 ...
- 转:requirejs2.0新特性介绍
就在前天晚上RequireJS发布了一个大版本,直接从version1.0.8升级到了2.0.随后的几小时James Burke又迅速的将版本调整为2.0.1,当然其配套的打包压缩工具r.js也同时升 ...
- Python中单引号、双引号和三引号的区别
ython单引号.双引号和三双引号的区别 python字符串通常有单引号('...').双引号("...").三引号("""..."&quo ...
- BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队
1699: [Usaco2007 Jan]Balanced Lineup排队 Description 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. ...
- Tour(KM算法)
Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submi ...
- easui tree载入时自动展开无子节点的节点
利用loadFilter对后台返回的原始数据进行过滤处理,将数据中的state字段修改相应的值,若无子节点,则改成open,若有子节点,则改成closed. 由于一个node属性只有下面几项内容,因此 ...
- Codeforces 360C Levko and Strings dp
题目链接:点击打开链接 题意: 给定长度为n的字符串s,常数k 显然s的子串一共同拥有 n(n-1)/2 个 要求找到一个长度为n的字符串t,使得t相应位置的k个子串字典序>s #include ...