SSH 框架搭建与开发
来源:互联网 发布:java 暂停1秒 编辑:程序博客网 时间:2024/06/06 02:57
对于Java初学者而言,SSH框架还是比较复杂的,今天借用一个Web注册功能的案例给大家讲解下,主要是讲下开发模式与注意事项!
注册界面如下所示:
1.首先建库建表(我用的是Mysql数据库,大家可以参考其他关系型DB,在SSH框架中集成对应驱动访问即可)
/*在Mysql的test库中执行如下创建表SQL语句*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(16) NOT NULL, `password` varchar(16) NOT NULL, `sex` int(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
2.创建Dynamic Web Project(我用的是Eclipse J2EE版本,大家也可以使用MyEclipse Java IDE开发环境)
3.将SSH框架中lib库及DB、日志相关库(jar包)拷贝至工程中lib目录
(我这里使用的Struts2 + Spring3 + Hibernate3集成框架)
备注:无需在Libraries中Add新增lib库,工程会自动加载
4.将struts.xml拷贝至src目录下(对应在classes目录也会生成该文件),将applicationContext.xml及web.xml拷贝至WEB-INF目录下
备注:这里路径很容易弄错,需要注意,因为排查起来比较麻烦
5.对工程结构分层:持久层 <- DAO层 <- 业务层 <- Web层(展现层),如下所示:
6.接下来就是逐层实现代码的过程(时间关系,直接上代码与注释吧):
(1)持久层
User.java
package hexieshangwang.ssh.beans;/** * @author:hexieshangwang * @version 1.0 * @parameter * @since * @return * @description:在持久层建立po与hbm.xml映射关系*/public class User { private int id; private String name; private String password; private int sex; 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 int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; }}
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" ><hibernate-mapping package="hexieshangwang.ssh.beans"> <class name="User" table="user"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name" type="java.lang.String" not-null="true" length="16"></property> <property name="password" column="password" type="java.lang.String" not-null="true" length="16" /> <property name="sex" column="sex" type="java.lang.Integer" length="1" /> </class></hibernate-mapping>
(2)DAO层
BaseDao.java
package hexieshangwang.ssh.dao;import org.hibernate.HibernateException;/** * @author:hexieshangwang * @version 1.0 * @parameter * @since * @return * @description:在DAO层提供访问持久层(Hibernate)接口*/public interface BaseDao { public void saveObject(Object obj) throws HibernateException;}
UserDao.java
package hexieshangwang.ssh.daoImpl;import org.hibernate.HibernateException;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import hexieshangwang.ssh.dao.BaseDao;/** * @author:hexieshangwang * @version 1.0 * @parameter * @since * @return * @description:实现DAO层接口*/public class UserDao extends HibernateDaoSupport implements BaseDao{ @Override public void saveObject(Object obj) throws HibernateException { // TODO Auto-generated method stub getHibernateTemplate().save(obj); }}
(3)业务层
UserService.java
package hexieshangwang.ssh.service;import org.hibernate.HibernateException;import hexieshangwang.ssh.forms.UserForm;/** * @author:hexieshangwang * @version 1.0 * @parameter * @since * @return * @description:在业务层提供访问DAO层Service接口*/public interface UserService { public void regUser(UserForm user) throws HibernateException;}
UserServiceImpl.java
package hexieshangwang.ssh.serviceImpl;import org.hibernate.HibernateException;import org.springframework.beans.BeanUtils;import hexieshangwang.ssh.beans.User;import hexieshangwang.ssh.dao.BaseDao;import hexieshangwang.ssh.forms.UserForm;import hexieshangwang.ssh.service.UserService;/** * @author:hexieshangwang * @version 1.0 * @parameter * @since * @return * @description:实现业务层Service接口*/public class UserServiceImpl implements UserService{ private BaseDao dao; public void setDao(BaseDao dao) { this.dao = dao; } @Override public void regUser(UserForm userForm) throws HibernateException { // TODO Auto-generated method stub User user = new User(); BeanUtils.copyProperties(userForm, user); dao.saveObject(user); }}
applicationContext.xml
备注:此处在Spring框架中整合了Hibernate配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><!-- 定义数据源的信息 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass"><value>com.mysql.jdbc.Driver</value></property><property name="jdbcUrl"><value>jdbc:mysql://IP:3306/test</value></property><property name="user"><value>root</value></property><property name="password"><value>123456</value></property><property name="maxPoolSize"><value>80</value></property><property name="minPoolSize"><value>1</value></property><property name="initialPoolSize"><value>1</value></property><property name="maxIdleTime"><value>20</value></property></bean><!--定义Hibernate的SessionFactory --><!-- SessionFactory使用的数据源为上面的数据源 --><!-- 指定了Hibernate的映射文件和配置信息 --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref local="dataSource" /></property><property name="mappingResources"><list><value>hexieshangwang/ssh/beans/User.hbm.xml</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="show_sql">true</prop><prop key="hibernate.jdbc.batch_size">20</prop></props></property></bean><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><bean id="baseDao" class="hexieshangwang.ssh.daoImpl.UserDao"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><!--用户注册业务逻辑类 --><bean id="userService" class="hexieshangwang.ssh.serviceImpl.UserServiceImpl"><property name="dao"><ref bean="baseDao" /></property></bean><!-- 用户注册的Action --><bean id="regAction" class="hexieshangwang.ssh.action.RegisterAction"><property name="userService"><ref bean="userService" /></property></bean><!-- more bean definitions go here --></beans>
(4)Web层
UserForm.java
package hexieshangwang.ssh.forms;/** * @author:hexieshangwang * @version 1.0 * @parameter * @since * @return * @description:在Web层实现表单Form*/public class UserForm { private String name; private String password; private int sex; 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 int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; }}
RegisterAction.java
package hexieshangwang.ssh.action;import com.opensymphony.xwork2.ActionSupport;import hexieshangwang.ssh.forms.UserForm;import hexieshangwang.ssh.service.UserService;/** * @author:hexieshangwang * @version 1.0 * @parameter * @since * @return * @description:在Web层实现Action界面操作*/public class RegisterAction extends ActionSupport { private static final long serialVersionUID = 1L; private UserForm user; private UserService userService; public UserForm getUser() { return user; } public void setUser(UserForm user) { this.user = user; } public void setUserService(UserService userService) { this.userService = userService; } public String execute() { try { userService.regUser(user); return SUCCESS; } catch (Exception e) { e.printStackTrace(); return ERROR; } }}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <include file="struts-default.xml" /> <package name="hexieshangwang" extends="struts-default"> <action name="register" class="regAction"> <result name="submit">/Register.jsp</result> <result name="success">/Success.jsp</result> <result name="error">/Fail.jsp</result> </action> </package></struts>
2 2
- SSH 框架搭建与开发
- SSH框架搭建与理解
- SSH程序开发框架搭建过程
- SSH框架中struts开发环境搭建
- [j2ee]Eclipse搭建SSH开发框架
- SSH框架搭建与项目实践步骤
- SSH框架与配置文件的简单搭建
- SSH框架搭建
- ssh框架搭建问题解决
- ssh框架搭建
- 快速搭建ssh框架
- SSH框架搭建流程
- SSH框架搭建
- 搭建ssh框架
- ssh 框架 搭建
- SSH框架搭建步骤
- 初学搭建SSH框架
- SSH框架搭建
- yacc 和 lex 在ubuntu 上安装
- Java泛型详解
- wireshark cannot find interface
- Win32 API 心得
- Linux多线程信号量的概念和使用
- SSH 框架搭建与开发
- POJ 1007 DNA Sorting
- python脚本使用SFTP下载远程计算机文件
- 随机数的使用
- C++从Txt中读取内容
- git之Pushing to the remote branch is not fast-forward错误解决
- Android 工具类 —— 判断网络连接状态、GPS是否打开、基站信息和手机IMSI码
- ios9设置bitcode AMR编译
- 计算机视觉中的曲率尺度空间技术