zoukankan      html  css  js  c++  java
  • Struts2+Spring+Hibernate step by step 03 整合Spring之中的一个(在DAO层验证username和password)

    注:该系列文章部分内容来自王健老师编写SSH整合开发教程

    目的:通过Spring创建数据库的连接,并通过Spring进行事务管理。

    第一步:将Spring的包拷贝至当前项目的lib文件夹下,例如以下图-1所看到的:

    图-1

    第二步:在web.xml中加入下面配置,即加入listener(监听器)和配置载入的Spring文件例如以下:

    图-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控制台发现下面警告信息:

    图-6

    以上信息,说明没有配置log4j.properties资源文件。

    5.2、配置log4j.properties资源文件,文件位于WEB-INF/classes文件夹下。例如以下图-7所看到的:

    图-7

     


    提示:log4.properties中的内容,主要配置日志信息的级别,和日志信息输出的目的地,能够拷贝下面内容到log4j.properties文件里:

    图-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=" 100px;" />
    					</td>
    				</tr>
    				<tr>
    					<td align="right">
    						password:
    					</td>
    					<td>
    						<input type="password" name="pwd" style="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

     

    源码下载:

    http://download.csdn.net/detail/u014548782/7213743

  • 相关阅读:
    OnEraseBkgnd、OnPaint与画面重绘
    .编译ADO类DLL时报错的解决方案
    VC列表框样式
    Codeforces 131D. Subway 寻找环树的最短路径
    Codeforces 103B. Cthulhu 寻找奈亚子
    Codeforces 246D. Colorful Graph
    Codeforces 278C. Learning Languages 图的遍历
    Codeforces 217A. Ice Skating 搜索
    Codeforces 107A. Dorm Water Supply 搜图
    Codeforces 263 D. Cycle in Graph 环
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5162830.html
Copyright © 2011-2022 走看看