通过小示例了解SSH整合概念
来源:互联网 发布:java构造方法修饰符 编辑:程序博客网 时间:2024/06/03 12:13
刚接触SSH整合开发的时候不知道如何入手,下面分享一个简单实例来为大家讲解一下:
实例名称:用户管理系统 实现用户的添加、用户的删除、用户信息的更新以及查询4个操作
首先来搭建环境,struts2所用到的包:
Hibernate所用到的包:
Spring所用到的包:
此外还额外用到了三个log4j的包:
把这些包整合到WEB-INF的lib文件下,在在类路径下加入所需的包,基本环境就搭好了,搭好之后就可以开始我们的项目了 。
系统结构可分为如下几层:
- 表现层:由多个jsp页面组成
- MVC层:使用struts2框架技术
- 业务逻辑层:使用业务逻辑组件
- DAO层:由DAO组件构成
- Hibernate持久层:使用Hibernate3框架
- 数据库层:使用MySQL数据库来存储系统数据
数据库层实现:
在数据库中创建表格名为user,表中含有四个数据项:主键id,name,password,type
Hibernate持久层实现:
创建User类,包含四个字段,分别于数据库中四个字段相对应
package com.integration.entity;public class User { private int id; private String name; private String password; private String type; public User(int id, String name, String password, String type) {this.id = id;this.name = name;this.password = password;this.type = type;}public User() { }public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getType() {return type;}public void setType(String type) {this.type = type;} }
2.创建映射文件
映射文件用来映射持久化类和数据表。User类的映射文件User.hbm.xml如下:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2017-11-15 20:15:11 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="com.integration.entity.User" table="USER"> <id name="id" type="int"> <column name="ID" /> <generator class="assigned" /> </id> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> <property name="password" type="java.lang.String"> <column name="PASSWORD" /> </property> <property name="type" type="java.lang.String"> <column name="TYPE" /> </property> </class></hibernate-mapping>
DAO层设计:
DAO层设计主要包含SessionFactory的配置、DAO接口的创建以及DAO接口的实现类
1.Spring管理SessionFactory
新建applicationContext.xml文件,在该文件中定义数据源,并完成对SessionFactory的配置和管理。
<?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:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 配置SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ><ref local="dataSource"/></property><!-- 配置Hibernate的属性 --><property name="hibernateProperties"><props><!-- 数据库方言 --><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><!-- 显示SQL语句 --><prop key="hibernate.show_sql">true</prop></props></property><!-- 指定HIbernate映射文件的路径 --><property name="mappingResources"><list><value>com/integration/entity/User.hbm.xml</value></list></property> </bean> <!-- 配置数据源 --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property><property name="url"><value>jdbc:mysql://localhost:3306/xyz?characterEncoding=utf8&useSSL=true</value></property><property name="username"><value>root</value></property><property name="password"><value>自己的密码</value></property></bean><!-- 配置相关Bean --><bean id="userDAO" class="com.integration.dao.UserDAOImpl"abstract="false" lazy-init="default" autowire="default"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><!-- 创建UserService实例--><bean id="userService" class="com.integration.service.UserServiceImpl"><property name="userDAO" ref="userDAO"></property></bean><!--创建loginAction实例 --><bean id="loginAction" class="com.integration.action.LoginAction"><property name="userService" ref="userService"></property></bean><!--创建userQueryAction实例 --><bean id="userQueryAction" class="com.integration.action.UserQueryAction"> <property name="userService" ref="userService"></property></bean><!--创建userAction实例 --><bean id="userAction" class="com.integration.action.UserAction"> <property name="userService" ref="userService"></property></bean><!--创建userDeleteAction实例 --><bean id="userDeleteAction" class="com.integration.action.UserDeleteAction"><property name="userService" ref="userService"></property></bean><!-- 创建userUpdateAction实例--><bean id="userUpdateAction" class="com.integration.action.UserUpdateAction"><property name="userService" ref="userService"></property></bean></beans>
2.创建DAO接口
创建UserDAO接口,在该接口定义了6中方法,可以实现添加用户、删除用户、更新用户、查找全部用户、
按用户名及按ID查询相应用户的操作。
package com.integration.dao;import java.util.List;import com.integration.entity.User;public interface UserDAO { void sava(User user); //添加用户 User getUser(String name); //按用户名查找用户 void delete(int id); //删除用户 void update(User user); //更新用户 User findById(int id); //按id查找用户 List<User> findAll(); //查找全部用户}
3.创建DAO实现类
定义UserDAOImpl类,实现UserDAO接口。
package com.integration.dao;import java.util.List;import org.hibernate.Query;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.integration.entity.User;public class UserDAOImpl extends HibernateDaoSupport implements UserDAO { //添加用户 public void sava(User user) { this.getHibernateTemplate().save(user); } //按用户名查找用户public User getUser(String name) {String hsql = "from User u where u.name='"+name+"'";User result = (User)((Query) this.getHibernateTemplate().find(hsql)).uniqueResult();return result;}//删除用户public void delete(int id) { this.getHibernateTemplate().delete(findById(id));}//更新用户public void update(User user) {this.getHibernateTemplate().update(user);}//按照Id查找用户public User findById(int id) {User user = this.getHibernateTemplate().get(User.class, id);return user;}//查找所有用户public List<User> findAll() { String queryString = "from User"; List<User> list = this.getHibernateTemplate().find(queryString);return list;}}
该类为UserDAO类的实现类,通过Spring集成Hibernate使用HibernateTemplate进行数据库访问,前提是Spring配置文件中给该类注入了SessionFactory。在Web应用中,SessionFactory和DAO对象都由Spring进行管理,因此不需要在代码中显示设置,在配置文件中配置依赖关系就好了。注入代码:<bean id="userDAO" class="com.integration.dao.UserDAOImpl"abstract="false" lazy-init="default" autowire="default"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean>
业务逻辑层设计:
1.创建业务逻辑组件接口
创建UserService接口,在该方法中定义了包含添加用户、删除用户、更新用户、按用户名查找用户、按id查找用户和查找全部用户6个方法。
package com.integration.service;import java.util.List;import com.integration.entity.User;public interface UserService { void savaUser(User user); //添加用户 User getUser(String name); //按用户名查找用户 void delete(int id); //删除用户 void update(User user); //更新用户 User findById(int id); //按id查找用户 List<User> findAll(); //查找全部用户}
2.创建业务逻辑组件实现类
创建UserServiceImpl类,该类实现了UserService接口。UserServiceImpl类中通过调用DAO组件来实现业务逻辑实现类。
package com.integration.service;import java.util.List;import com.integration.dao.UserDAO;import com.integration.entity.User;public class UserServiceImpl implements UserService{ private UserDAO userDAO;//提供UserDAO对象的注入通道public void setUserDAO(UserDAO userDAO){this.userDAO = userDAO;}//添加用户public void savaUser(User user) {if(userDAO.findById(user.getId())==null){userDAO.sava(user);} //调用DAO组件保存user对象}//按用户名查找用户public User getUser(String name) { return(userDAO.getUser(name));} //调用DAO组件查询//删除用户public void delete(int id) { if(userDAO.findById(id)!=null)userDAO.delete(id); //调用DAO组件删除} //更新用户public void update(User user) { if(userDAO.findById(user.getId())!=null) { userDAO.update(user); //调用DAO组件更新 }}//查找public User findById(int id) {return userDAO.findById(id); }@Overridepublic List<User> findAll() { return userDAO.findAll(); //调用DAO组件查询} }
<!-- 创建UserService实例--><bean id="userService" class="com.integration.service.UserServiceImpl"><property name="userDAO" ref="userDAO"></property></bean>
完成用户登录设计:
1.整合Struts2和Spring
webxml文件如下:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>UserManagement001</display-name><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><!-- 定义核心Filter --><filter><filter-name>Struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>Struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--配置Listener --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml </param-value></context-param></web-app>
创建用户登录Action,名称为LoginAction,该Action负责检查用户信息,如果数据库中存在该用户信息,则允许登录,返回页面,否则登录失败。
package com.integration.action;import java.util.Iterator;import java.util.List;import com.integration.entity.User;import com.integration.service.UserService;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{ String username; //用户名 String password; //密码 String usertype; //用户类型 public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUsertype() {return usertype;}public void setUsertype(String usertype) {this.usertype = usertype;}private UserService userService; //设置业务逻辑组件public void setUserService(UserService userService) {this.userService = userService;}public String execute(){List<User> list = (List<User>)userService.findAll();User u = new User();String page = "failer";Iterator<User> it = list.iterator();//检查用户信息是否存在数据库中while(it.hasNext()){u = (User)it.next();if(username.trim().equals(u.getName())&&password.trim().equals(u.getPassword())&&usertype.trim().equals(u.getType())){ page = "success";break;}}return page;} }
3.用户登录页面
创建登录页面login.jsp,其中包含一个表单,代码如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>用户登录</title></head><body> <s:form action="login" method="post" > <s:textfield name="username" label="用户名"/> <s:password name="password" label="密码"/> <s:textfield name="usertype" label="类型"/> <s:submit value="提交"/> </s:form></body></html>
4.配置控制器
在applicationContext.xml中配置控制器LoginAction并注入业务逻辑组件代码如下:
<bean id="loginAction" class="com.integration.action.LoginAction"><property name="userService" ref="userService"></property></bean>
<action name="login" class="com.integration.action.LoginAction"><result name="success" type="redirect">/userquery.action</result><result name="failer">/error.jsp</result></action>
到此运行项目,可以看到我们的登录界面了,剩余操作思路和上面一样,就不一一列举了。
项目源码下载:
点击打开链接
阅读全文
0 0
- 通过小示例了解SSH整合概念
- 【示例】SSH整合小例子
- SSH整合示例
- SSH框架整合示例
- SSH框架整合示例
- ssh框架整合示例
- SSH框架整合示例
- SSH框架整合示例
- JavaEE之SSH整合示例
- ssh+jbpm整合代码示例
- ssh的整合的三大概念
- 通过简单示例来了解Struts流程
- SSH整合测试通过版+jar包
- SSh小整合之用户登录
- SSH框架整合的一个小案例
- SSH三大框架整合小案例
- Gxt和GWT整合小示例
- 通过一个小例子了解RPC
- linux中completion结构解释
- MySQL数据库学习07-查询数据:聚合函数
- grub rescue修复方法
- linux中 likely与unlikely
- Linux之module_param()函数学习
- 通过小示例了解SSH整合概念
- vim中多行注释 和 删除多行注释
- EXPORT_SYMBOL and EXPORT_SYMBOL_GPL
- 什么是TLB ?
- Android内存之VSS/RSS/PSS/USS
- Linux Support for ARM LPAE 分析
- 一老一小保险参保时间
- arm处理器bank与存储器的bank详解
- linux的swapper_pg_dir